web-dev-qa-db-ja.com

ffplay-別々のビデオファイルとオーディオファイルを一緒に再生する方法

したがって、次のように、別々のビデオファイルとオーディオファイルを1つのムービーファイルにトランスコードすることができます。

ffmpeg -ss 0 -lowres 0 -r 24 -i dcp/picture.mxf -vf "xyz2rgb" -i mov/sound.wav -ac 2 -ab 256k -vb 3000k -t 10 -y mov/movie.mp4

そして、次のように結果の映画を見て、聞いてください:

ffplay -ss 0 -lowres 1 -vf "xyz2rgb" mov/movie.mp4

ただし、映画とサウンドを1つのファイルにトランスコードしてから表示する必要がないように、2つの別々のファイルを一緒に再生したいと思います。私の知る限り、ffplayでは2つの異なるファイルを組み合わせることができません(右?)。

これらのフォーラムを読むと、次のことができるようです ffmpeg出力をffplayにパイプします 。以下は私が得た限り近いです。それほど近くはありません。 :(ビデオ情報は明らかに引き継がれていますが、適切なフレームサイズの緑の「雪」であり、恐ろしい緑の雪の中で踊っている実際の画像のヒントがあります。このようにして、実際の画像データの一部が引き継がれていることがわかります。 、正しくレンダリングされないだけです。まったく。

そして、オーディオは再生されません。音が引き継がれていません(私は思いません。)今...私は立ち往生しています。以下は私がやろうとしていることを示唆していますが、それは機能していません:

ffmpeg -ss 0 -lowres 0 -r 24 -i dcp/picture.mxf -vf "xyz2rgb" -i mov/sound.wav -f rawvideo - | ffplay -f rawvideo -vf "xyz2rgb" -s 1998x1080 -
ffmpeg -lowres 2 -ss 0 -r24 -i MOVIE.MOV -ss 0 -i AUDIO.WAV -vf xyz2rgb -ac: 2 -c:v mpeg2video -f avi - | ffplay -

私の目的では、これにより、迅速な DCPの内容のレビュー (デジタルシネマパッケージ)が可能になります オープンソースツールでビルド 。 DCPはxyz色空間を使用するため、 xyzビデオフィルターをインストールする が必要です。そうでない場合、上の行では使用できません。 (それは大丈夫です、それはただ濃いオレンジ色に見えるでしょう、あなたは本当の色を見ることができません。)

Mpeg2videoコーデックb/cを追加しましたが、品質は低下しますが、レートが低く、バッファリングが少し少ないため、マシン上でよりスムーズに動作します。 (また、何らかの理由で、最初にトランスコードせずに、「-ss 0」を開始しない限り、つまり、「-ss 0」を開始しない限り、MXFから強力な125mb/sでフィードするjpeg2000mjpegシーケンスからフリーズフレームのみを取得します。ファイル。)コーデックなし( "-c:v mpeg2video"を削除)、フルサイズ( "-lores 0")、0(-ss 0)から始まる非常に高速なマシンでは、理論的に2Kシネマを確認できます。そのままの品質のDCP。ええと、XMLに含まれている特別な指示を除いて-字幕や他のプログラミング。しかし、一般的に。 (BTW "-ac:2"は5.1を2.0にダウンミックスします-5.1のオーディションをサポートするハードウェアがある場合でも、その場合は "-c:a copy"を使用します。)

Belle-Nuit のMatthiasと、上記の slhck に感謝します。ありがとうございました!!!!これは非常に便利です。そして実際、日曜日の夜にエアロシアターで行われる恥ずかしい映画の上映から私を救ってくれました。私の画像のシーケンス番号は順序が狂っていました-これでそれを見つけて修正しました!

うわー、これはすべて、知っていた1つのコマンドラインだけです;)

Cheereo --b worldpoop.com

これはストリームをトランスコードしません:

ffmpeg -i video.mkv -i audio.mkv -c copy -map 0:0 -map 1:1 output.mkv

-map 1:1 = 2番目のファイル、ストリーム1(通常はオーディオ)。 -c copy = -c:v copy -c:a copy。デフォルトでは、多重化されたファイルは長いファイルと同じ長さですが、-shortestは、短いファイルと同じ長さになります。

3
Lri

ビデオ情報は明らかに引き継がれていますが、それは適切なフレームサイズの緑の「雪」であり、恐ろしい緑の雪の中で踊っている実際の画像のヒントがあります。

これはピクセル形式である必要があります。 DCP色空間をRGBに変換するxyz2rgbフィルターを適用してから、生のビデオをffplayにパイプします。ここでは、xyz2rgbフィルターを再度適用しています。FFmpegは生のビデオがどのようにエンコードされているかわからないため、おそらく歪みが発生します。色空間を2回変換する場合でも、ビデオでやりたいことが何でもできます。


Matroskaフォーマットをffplayではなくrawvideoにパイピングすると、良い結果が得られました。これにより、オーディオをデコードすることもできます(以下を参照)。 Matroska形式には、any種類のコーデックを含めることができます。

オプションの順序はFFmpegで重要であり、オプションを配置する場所がより厳密であるため、おそらくより新しいバージョンを使用する必要があることに注意してください。

  • -yのようなグローバルオプションが最初に来ます。
  • 次に、入力ファイルを読み取るためのオプションを指定します。-r 24は、picture.mxfファイルのフレームレートを強制します。
  • 次に、すべての入力ファイルを指定します。
  • 次に、ビデオフィルタ、ビデオビットレートなどのコーデックオプションがあります。

あなたの状況では、実際にトランスコードする必要がないので、オーディオストリームをコピーするだけで意味があります。フィルタを適用できるようにするには、ビデオをトランスコードする必要があります。

このようなことをする必要があります。出力形式をmatroskaとして明示的に設定し、ffplayに残りの部分自体を理解させる方法に注意してください。

ffmpeg -r 24 -i dcp/picture.mxf -i mov/sound.wav \
-filter:v "xyz2rgb" -b:v 3000k -c:a copy -t 10 -f matroska - | \
ffplay -

-filter:vの代わりに-vf-b:vの代わりに-vb-c:aの代わりに-acodecなどのオプションに(IMOのあいまいさの少ない)構文を使用しました。

その形式が機能しない場合は、AVIを試してください。

ffmpeg -i picture.mxf -i sound.wav -f avi - | ffplay -

これ 問題なく動作しました 、必要なフィルターを使用する必要さえありませんでした。オーディオも機能していました。

3
slhck