LoginSignup
9
6

More than 5 years have passed since last update.

ネクストスケープ配信事業本部のAdvent Calendar 2016の1日目って事で、この先のハードルを上げない為にも
低空飛行で始めます。

ffmpeg

動画配信の仕事をしていれば、必ず一度は使う事になるだろうこのツール。
個人的には、アウトプットされるmp4に癖が有ったりして余り好きでは無いのですが、有用なツールであるのは確かなので
局地的に使用しています。

mp4をdemux

最近は配信方法にMPEG-DASHが使われる事が多いですが、世に出ているMPEG-DASHのプレーヤーのほとんどはmuxされたmp4の
再生に対応していないと思います。(自分は見たことがありません)

一方で配信システム側に納品されるmp4が必ずdemuxされているとは限らないわけで・・・
その様な時は、受け取った側でdemuxして映像トラックのみのmp4と音声トラックのみのmp4に分離してあげる必要があります。
そんな時に使えるツールの一つが、ffmpegです。

・最初のトラックを分離

ffmpeg -i some_muxed.mp4 -map 0:0 -codec copy some_first_track.mp4

・2番目のトラックを分離

ffmpeg -i some_muxd.mp4 -map 0:1 -codec copy some_second_track.mp4

こんな感じでコマンド実行すればdemux出来ます。

-mapに設定する x:x は、

ffmpeg -i some_muxed.mp4

でファイル情報を出力した際の

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'some_muxed.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    creation_time   : 1970-01-01T00:00:00.000000Z
    encoder         : Lavf52.62.0
  Duration: 00:00:52.21, start: 0.000000, bitrate: 2240 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x1080, 2108 kb/s, 24 fps, 24 tbr, 24 tbn, 48
tbc (default)
    Metadata:
      creation_time   : 1970-01-01T00:00:00.000000Z
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 126 kb/s (default)
    Metadata:
      creation_time   : 1970-01-01T00:00:00.000000Z
      handler_name    : SoundHandler

Stream #x:xの部分を設定します。

mp4をmux

余り使う機会は無いと思いますが、ffmpegを使ったmp4のmuxの方法も書いておきます。

コマンドとしては、

ffmpeg -i some_muxed_0.mp4 -i some_muxed_1.mp4 -map 0:0 -map 1:0 -codec copy new_muxed.mp4

some_muxed_0.mp4のStream #0:0とsome_muxed_1.mp4のStream #1:0をmuxする、という処理になります。

さて、

此処まで書いておきながら、自分はmp4のdemuxにffmpegは使っていなかったりします。
コマンドが長かったりするせいも有るのですが、経験上、出来てくるmp4の互換性に若干の不安があるからだったりします。

自分が普段使っているのはmp4boxで、mp4boxだとコマンドは

mp4box -single 1 some_muxed.mp4 -out some_track_1.mp4
mp4box -single 2 some_muxed.mp4 -out some_track_2.mp4

みたいになります。-singleの後の数値は、mp4から抜き出すトラックのIDになります。
他にも別なアプローチで、

mp4box -rem 2 some_muxed.mp4 -out some_track_1.mp4
mp4box -rem 1 some_muxed.mp4 -out some_track_2.mp4

こんな風にdemuxすることも可能です。
これは指定されたトラックIDをmp4から削除する形でdemuxを実現しています。

mp4boxはmp4boxで、トラックIDを予め知っていないと色々と不便なのですが・・・
トラックIDは必ずしも1から始まるとは限りませんし、MPEG-2 TSから変換されたmp4だとPIDがそのままトラックIDに
なっていたりする場合もありますから。

と言う事で

ゆるーく低空飛行で始まったネクストスケープ配信事業本部のAdvent Calendar 2016、この先しばらくよろしくお願いします。
自分は、ぽつぽつと空いている日にゆるーく小ネタを投下していく予定です。

9
6
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
6