ffmpeg:ビデオの頭と尾に3秒の黒を追加


11

あらゆるサイズまたはコーデック(例:mp4)を持つことができるビデオがあり、その頭に3秒の黒いフレームを追加したいとします。

1つのフレームを追加することに関するこの質問の他のバリエーション、およびビデオの幅と高さを指定する回答も見ました。ただし、ビデオの幅と高さは任意であり、これらの値を変更したくありません。黒を追加するだけです。別のコマンドで、尾に黒の秒も追加したいと思います。

黒のセクションにはオーディオがありません-黒は単に前後に連結されている必要があります。また、可能であれば動画の再エンコードを避け、結果を新しいファイルにコピーしたいと思います。

任意の助けいただければ幸いです。


音声はありますか?メインビデオの再エンコードをスキップしますか?
Gyan

@Mulvyaご入力いただきありがとうございます。質問を更新しました。
マットC

@MattC上記のコメントを削除できます。再エンコードしない限り、これには複数のコマンドが必要です。それは大丈夫ですか?
Gyan

@Mulvyaはい、複数のコマンドが良いです。再度、感謝します。
マットC

回答:


12

再エンコードせずにビデオを結合する基本的な方法は、連結デマルチプレクサを使用することです。このデバイスでは、結合されるファイルが、コーデック、フレームレート、ビデオディメンション、タイムベースなどの特定のプロパティを共有する必要があります。

最初のステップは、ブランクセグメントを作成することです。これは、ヘッドとテールの両方で使用できます。

ffmpeg -i fullvideo.mp4 -vf trim=0:3,geq=0:128:128 -af atrim=0:3,volume=0 -video_track_timescale 600 3sec.mp4

完全なビデオのために1つの簿記ステップをしなければなりません。そうしないと、結合されたビデオが誤った速度で実行される可能性があります。

ffmpeg -i fullvideo.mp4 -c copy -video_track_timescale 600 full600.mp4

次に、テキストファイルを作成します。

file 3sec.mp4
file full600.mp4
file 3sec.mp4

次に実行します

ffmpeg -f concat -i list.txt -c copy merged.mp4

最初のステップでは、ビデオストリームが最も一般的なピクセル形式であることを前提としていますyuv420p。これは、ウェブプレーヤーやスマートフォンのカメラ、家庭用カムコーダーなどでサポートされている唯一のピクセル形式なので問題ありません。そうでない場合、geqフィルターは失敗する可能性があります。

また、暗黙のうちに、フルビデオはmediumx264のプリセットで生成されるよりも多くの参照フレームを使用しないと想定しています。これは、95%のビデオでは安全な仮定です。

最後に、ビデオ全体にはオーディオコーデックとしてAAC-LCが含まれていると想定しています。ほとんどの電話/カメラ/ウェブビデオに当てはまると期待されています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.