問題タブ [mpeg2-ts]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
gstreamer - mpegts ファイルを再生する Gstreamer パイプラインは、バージョン 0.10 では機能しますが、1.0 では機能しません
0.10 で gst-launch パイプラインが動作しています:
しかし、バージョン 1.0 の同じパイプラインはエラーを吐き出します:
また、奇妙なことに、同じエラーが発生するplaybinを使用してみました。これを修正するにはどうすればよいですか?
編集:さて、問題を引き起こしているのはビデオ部分であることがわかりました。オーディオ部分とビデオ部分を分離すると、オーディオは正常に機能します。問題を引き起こしているのはこのビットです。
どんな助けでも大歓迎です。ありがとう!
c# - mpegts の PAT テーブルの読み方
mpeg-ts ファイルの読み取りに関連するいくつかの作業を見始めたところです。これはビデオ ストリーミングを使用した最初のプロジェクトであり、最初のタスクはファイルからプログラム名を読み取ることです。
現在、FFMpeg と FFProbe を調べていて、C# の経験があり、これを行うためにどのツール/言語を使用すればよいか知りたいですか?
または、別のツールまたは言語が必要ですか?
TSReader を起動すると、情報を含む PAT セクションが表示されます。
c - MPEG-4 トランスポート ストリーム内の I フレーム データの検出
プロジェクトをテストしています。MPEG-4 ts パケットのペイロード データ (一部のバイトをゼロにする) を、ユーザーからのパーセンテージで分割する必要があります。「.ts」ファイルのパケットをパケット(188バイト)ごとに読み取ることでそれを行っています。しかし、ビデオはプロセスの後で本当に泥だらけに変化しています. (ちなみに私はC言語でプログラムを書いています)
そこで、I フレームに属するデータ/パケットを見つけ、それらに触れずに他のデータをパーセンテージでスクランブルすることにしました。私は以下を見つけることができました
(16 進数) 00 00 00 01 E0 ビデオ PES パケットの開始 .. .. 00 00 01 B8 グループ オブ ピクチャ ヘッダーの開始 .. .. 00 00 01 00 ピクチャ スタート コード。これは 32 ビットです。この直後の 10 ビットは、一時参照と呼ばれます。したがって、時間参照には、ピクチャ スタート コードに続くバイトと、ピクチャ スタート コードの後の 2 番目のバイトの最初の 2 ビット、つまり 1 バイト (8 ビット) + 2 ビットが含まれます。これらはスキップする必要があります。ここで、存在する 3 ビット (ピクチャ スタート コードからの 2 番目のバイトの 3、4、および 5 番目のビット) は、フレーム タイプ、つまり I、B、または P を示します。 0x38 と右シフト >> 3 で。
たとえば、データはそのようなものです。
00 00 01 00 00 0F FF F8 00 00 01 B5..........など。
ここで、最初の 4 バイト 00 00 01 00 はピクチャ スタート コードです。5 番目のバイトと 6 番目のバイトの最初の 2 ビットは、一時的な参照です。したがって、問題は 6 番目のバイトにあります --> 0F
フレーム タイプ = 1 ==> I フレーム
フレーム タイプ 000 禁止
フレームタイプ 001 イントラコード化 (I) - iframe
フレームタイプ 010 予測符号化 (P) - p フレーム
フレーム タイプ 011 双方向予測符号化 (B) - b フレーム
ただし、これは MPEG-2 用です。MPEG-4トランスポートストリーム(拡張子は「.ts」)のビット演算でフレームタイプを認識して取得するパターンはあるのでしょうか?
そして、そのフレームに属するバイト数またはパケット数を取得する必要がありますか?
助けてくれてどうもありがとう
ios - HTML5 および MP4 と M2TS コンテナーの比較
問題:
動画をストリーミングする iOS アプリをアプリ ストアに受け入れるには、HLS バージョンが必要です。
どうしたの?
Android は HLS を十分にサポートしていません。また、他の理由から、同じコンテンツの MP4 ファイルと HLS ファイルを保存する必要があります。
MP4 と HLS の違いは何ですか? また、なぜ両方を保存する必要があるのですか?
MP4 は、H.264 ビデオと AAC オーディオを格納して HTML 5 ブラウザとの最適な互換性を確保するためのコンテナです。ブラウザが同じ MP4 ファイルを使用する HTML 5 の MP4 ビデオをサポートしていない場合、jsvideo プレーヤーには多くの場合、フラッシュ フォールバックがありますが、フラッシュ経由で再生されます。
HLS は、テキスト ファイル (.m3u8) にプレイリストへの参照が含まれるプロトコルです。プレイリスト自体は、mpeg-2 トランスポート ストリームである .ts ファイル (または m2ts) を参照します。mpeg-2 ビデオと混同しないでください。.ts ファイルは、同じ H.264 ビデオと AAC オーディオのコンテナーです。
なぜ私は不平を言っているのですか?
MP4ファイルからHLSファイルやプレイリストを作成するのに時間がかかる
(最も重要なこと) 現在、S3 に 2 倍のデータを保存しています
なぜ気にする必要があるのですか?S3 の請求額が MP4 と HLS の両方を保存するために月額 10,000 ドルである場合、現在は 5,000 ドルです。別の言い方をすれば、MP4 でデータを保存するために 10 万ドルを支払っている場合、MP4 と HLS の両方で同じコンテンツを保存するには 20 万ドルかかることになります。
私が欲しいものは?
.ts ファイルのみを保存し、その 1 つのファイルでデスクトップ ユーザー、iOS ユーザー、および Android ユーザーの両方にサービスを提供したいと考えています。
出来ますか?
HLS では、1 つの大きなファイルではなく、5 ~ 10 秒の .ts セグメントが必要ではないですか?
IETF ドラフト 7 およびプロトコルのバージョン 4 の時点で、HLS はタグ EXT-X-BYTERANGE をサポートしています。これにより、メディア セグメントをより大きな URL のバイト範囲 (サブ範囲) として指定できます。
.ts ファイルは HTML5 ビデオと互換性がありますか?
どうやらそうではありません。これらは MP4 とは異なるコンテナーですが、同じビデオおよびオーディオ コンテンツが含まれています。生のビデオ/オーディオ データを一度保存し、必要に応じて正しいコンテナを使用する方法を検討する価値があります。ブラウザーが HTML 5 MP4 をサポートしていない場合、JS ビデオ プレーヤーがその場で HTML 5 MP4 ファイルを Flash ビデオに変換できるのであれば、なぜ M2TS データで同じことができないのでしょうか?
私はある程度無知かもしれませんが、誰かがこの問題に光を当て、解決策を提示できるかもしれません.
udp - MPEG2-TS における重複データの扱い
VLC を使用した UDP ベースのビデオ ストリーミングを使用して、重複したデータグラムを受信するセットアップを使用しています。MPEG-TS (ISO/IEC 13818-1) に重複データの検出に使用できるフィールドがあるかどうかを知りたかったので、アプリケーション層に到達するまでそれを破棄します。
問題は、複製されたフレームが TCP/IP (アプリケーション層) スタックの最上部に到達し、結果としてストリーミングと競合することです。複製されたデータの連続性カウンター (CC) は同じであるため、受信側はギャップがあると見なしてスキップします。