ffmpeg の map オプション

先のエントリで書きましたが、私のドラレコは 1 つの AVI ファイルにフロントとリアの画像をパッケージングして保存しています。分離する方法を書きますね。

複数の音声が入っている動画というのはありますね。副音声と言われるヤツです。動画でも昔マルチキャプチャーの動画がパッケージングされたものがありました。理屈は一緒ですね。ストリーム分離というキーワードで検索すると、音声の方を分離する方法があります。ただ、基本的にファイルの中のストリームを分離するのは、動画であろうが音声であろうが理屈は一緒です。

そこで、 sample.AVI( フロントとリアのストリームが同梱されたファイル ) を分離してみようと思います。以下コマンドラインでの入力です。

まず、 sample.AVI のストリーム状況を確認します。

 -i sample.AVI

単純に入力のみを指示すると、そのファイルのストリーム状況が表示されます。こんな具合ですね。

Input #0, avi, from '2019_04_27_11_53_20_Nor.avi':
  Duration: 00:00:30.63, start: 0.000000, bitrate: 9318 kb/s
    Stream #0:0: Video: h264 (High) (H264 / 0x34363248), yuv420p(progressive), 1280x720, 3951 kb/s, 19.10 fps, 19.08 tbr, 19.10 tbn, 38.20 tbc
    Stream #0:1: Video: h264 (High) (H264 / 0x34363248), yuv420p(progressive), 1280x720, 3932 kb/s, 19.10 fps, 19.08 tbr, 19.10 tbn, 38.20 tbc
    Stream #0:2: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, stereo, s16, 1411 kb/s
    Stream #0:3: Subtitle: none, 21 kb/s

この例だと、

  • ストリーム  #0:0 :動画 ( フロントの動画 )
  • ストリーム  #0:1 :動画 ( リアの動画 )
  • ストリーム  #0:2 :音声 ( フロントで録音された音声 )
  • ストリーム  #0:3 :不明なストリーム ( ※ )

※本来ならば、リアで録音された音声ストリームになるはずですが、多分私の環境下では結線されていないなどの理由で不明になるものと思われます。

ここまでわかってしまえば、分離するのは簡単です。 map オプションは出力するストリームを指定するものなので、リアカメラの映像のみを出力するには、

ffmpeg -i sample.AVI -map 0:1 output.AVI

これで出力されるはずです。やってみたら、できました!

後は、フロントとリアのストリームを別々に保存した動画を作るスクリプトを作ればいいだけです。「ストリーム」という単語がわからなかったので、検索してもなかなか引っかかってくれませんでした。これでリアカメラの映像も簡単に取り出せます。アプリを使った分離でも分離はできるのですが、マウスクリックやらなんやらが必要で、面倒だったんです。コマンドラインで処理なら 1 度ひな形を作ってやれば次から簡単ですし、繰り返しも簡単です。良かった。


コップを唇に持っていく間隔までには多くの失敗がある。

イギリスの諺

投稿者プロフィール

會澤 賢一
新潟県在住。1964年生まれ、東京オリンピックの年ですね。
突然燃え上がったり、鎮火したり興味の波が激しいので注意が必要です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください