私が持っているのは、ビデオ ストリームとオーディオ ストリームを含む MP4 ムービーです。
出力に必要なのは、次の内容を含む MP4 ファイルです。
- 同じビデオストリーム
- 同じオーディオストリーム
- 同じビデオストリームを低ビットレートで
適切な ffmpeg コマンドを教えていただけますか?
答え1
原理的には、このように行います。音声なしでビットレートを下げてエンコードします。もちろん、これはH.264ビデオを前提としています。エンコーディングガイド詳細については。
ffmpeg -i input.mp4 -c:v libx264 -b:v 700k -an lower.mp4
次に、ファイルを結合します。
ffmpeg -i input.mp4 -i lower.mp4 -c copy -map 0:v -map 0:a -map 1:v output.mp4
これにより、最初のファイルの最初のビデオ ストリームとオーディオ ストリーム、および 2 番目のファイルの最初のビデオ ストリームが取得され、出力コンテナーにコピーされます。
しかし、@trikly が述べているように、これを行うことには実際の利点はありません。特に、質問に「ビデオ ストリーミング」というタグを付けているため、コンテナー内にさらに別のストリームを追加することで、帯域幅が制限された環境で通常行うことである、より小さな表現を提供するのではなく、クライアントがダウンロードする必要があるファイルのサイズが増加することに注意してください。
本当の解決策は、何らかのアダプティブストリーミングMPEG-DASH または HLS* のいずれかを使用します。ffmpeg は、DASH および HLS ストリーミングに使用できるセグメント化されたファイルを作成できますが、メタ情報ファイルなども生成する必要があります。また、DASH または HLS 対応のクライアントも必要です。
設定が面倒な場合は、それぞれ独自のリンクを持つ 2 つの異なる形式でビデオを提供するだけで済みます。
*スケーラブルビデオコーディングも同様の目的で設計されましたが、最近では誰も使用していません。