DACエンジニアブログ:アドテクゑびす界

DACのエンジニアやマーケター、アナリストが執筆するアドテクの技術系ブログです。

profile?atom?mp4のよくわからないあれこれ(profile編)

どうもこんにちわ。2年目のRhiannonです。

僕が入社した2014年は、来る来る詐欺で終わっていた動画広告元年が 現実のものとなり、最近では動画広告を目にすることも増えてきました。

ただ、動画は画像などに比べるとファイル自体が複雑なものになっています。

そのため、「動画ファイルってなんだかよく分からない」というのが現場での正直な感想なようです。

しかし、動画を広告として配信する場合は、配信先デバイス環境や、回線状況も踏まえてファイルを用意しなくてはなりません。

ということで、自分にとっての整理という意味も含めて現状の動画広告で主に用いられているmp4ファイルについて、

  • profile
  • atom

という2つの要素について解説をしていきます。

1回目の今回は 「profile」 について解説します。

 

.mp4とはなんぞや

.mp4というのはMPEG4というマルチメディアコンテナの拡張子で、コンテナというのは動画や音声、場合によっては字幕などのメタデータを格納する容れ物(規格)です。

つまり 動画や音声をMPEG4という規格に合うように格納したファイルが.mp4というものです。

コンテナには他にも、

  • WebM(webm)
  • QuickTime(mov)
  • FLV(flv)

といったものがあります。 これらはどこかで耳にしたことがあるのではないでしょうか?

コンテナには動画や音声などを入れることが出来るのですが、コンテナによって入れることのできるコーデック(圧縮方式)が違います。

MPEG4で対応している動画のコーデックの1つとしてH.264があり、このH.264が現状ではスタンダードなものになっています。

動画広告でもH.264で圧縮された動画を含む.mp4ファイルが入稿規定で指定されていることが多いかと思います。

 

profileとはなんぞや

H.264ではprofileとlevelというパラメータがあり、これらによって使える機能の範囲が変わります。

profileは大きく分けて高機能なものから

  • high profile
  • main profile
  • baseline profile

があり、パラメータを高く設定すれば色々な機能が使え、画質も綺麗になります。 一方で、再生する機器自体が対応できず、デバイスによっては再生自体ができないこともあります。

例えば、Androidがサポートしていると言っているのはbaseline profileだけですし、Firefox OS搭載のスマートフォンの一部ではhigh profileが再生できない可能性もあります。

Supported Media Formats ML5 の audio 要素と video 要素でサポートされているメディアフォーマット

つまり、ただ良いprofileにすれば良いわけではなく、相応なprofileを使用するのがベターだと思います。

スマートフォンに対して動画を配信する場合、profileはbaselineで、levelも考えると、古めのiOS端末も含めた場合の指定は「Baseline Profile @ Level 3.0」だと言う記事もあります。

Android/iOS同時対応動画をエンコードする心得

 

実際に動画のprofileを見てみた

さて、実際に世のmp4ファイルのprofileはどうなっているのか?

今回はFFmpegを使って手持ちのファイルのprofileを見てみようと思います。

FFmpegは動画と音声を扱うことのできるフリーソフトで、動画の変換などをコマンドラインから行うことができます。

例えばinput.aviをoutput.mp4に変更したければ

[shell] ffmpeg -i input.mp4 output.avi [/shell]

と打つだけ。オプションも色々あるので、細かく設定をして変換をすることも可能です。

[shell]ffmpeg -i input.mp4[/shell]

とinputファイルだけ指定すると以下の様にファイルの情報をみることができます。

[shell highlight="8"] Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'input.mp4': Metadata: major_brand : mp42 minor_version : 0 compatible_brands: mp42mp41 creation_time : 2015-03-03 02:08:45 Duration: 00:00:30.08, start: 0.000000, bitrate: 751 kb/s Stream #0:0(eng): Video: h264 (Baseline) (avc1 / 0x31637661), yuv420p(tv), 640x360 [SAR 1:1 DAR 16:9], 686 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default) Metadata: creation_time : 2015-03-03 02:08:45 handler_name : ?Mainconcept Video Media Handler encoder : AVC Coding Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 61 kb/s (default) Metadata: creation_time : 2015-03-03 02:08:45 handler_name : #Mainconcept MP4 Sound Media Handler [/shell]

8行目にあるのがビデオコーデックの情報 になり、h264 (Baseline) となっていることからこの動画はbaseline profileで圧縮されたことがわかります。

同様に手元の13ファイルのprofileを見たところ

  • high profile : 5ファイル
  • main profile : 5ファイル
  • baseline profile 3ファイル

という結果でした。

今回確認に使った動画はPC向けかスマホ向けかを考慮せずに選びましたが、おそらく全てのファイルが再生デバイスを想定して作成されたものというわけではないという印象があります。

今回使ったFFmpeg以外にもMediaInfoHandBrakeでもprofileを確認することができます。

ぜひ、今後動画を扱う際にはprofileにも注目してみてください。

※ご紹介した各フリーソフトについては自己責任でご利用ください。

 

余談:WebM

GoogleがMPEG4に対して、WebMというコンテナ開発しており、高画質で高圧縮率を実現するものになっているようです。 HTML5の標準を狙うGoogleの動画フォーマット「WebM」のこれまでまとめ

また、WebMで使われているコーデックが「VP9」で、

VP9は既にYouTube上で採用されており、2014年にはYouTube上で再生されたムービーの250億時間分がVP9により変換されたものであった、とGoogleは明かしています。

より高品質なムービーを多くの人が見られるようになる「VP9」についてYouTubeが解説

という様に、今後だんだんとH.264(と後継のH.265)がスタンダードの時代も終わりを迎えるのかもしれません。