#はじめに
ユーザ向き合いのサービスをする中で「ビデオ」というコンテンツの重要性は
日に日に高まっているように思います。
それにつられてビデオフォーマットで問題が起きて調べる、なんてことも多くなってきました。
今回は、そのあたりで調べたことをシェアしたいと思います。
私は先行する巨人の肩には積極的に乗る派なので、
他の私の投稿と同じく、勉強させてもらった他サイトのリンク多めです。
予めご了承ください。
#そもそもビデオって
基本理解として読んでおくと良いのが、以下。
http://note.chiebukuro.yahoo.co.jp/detail/n335817
簡単にまとめておくと、
- 一つの動画ファイルには「映像ファイル」と「音声ファイル」が含まれる
- 「mp4」「wav」などは、映像、音声をまとめたコンテナ形式の一つ
- 映像、音声それぞれの圧縮技術(コーデック)の規格として「h.264」や「aac」というのがある
これ以上は、上記URLやwikiを読んでもらうのが良いでしょう。
ともあれ、一つのビデオファイルには映像と音声が別々に含まれていて、
個別に圧縮技術がある、ということです。
#スマホ対応するビデオのフォーマット
実は、OSや機種によって、それぞれ対応しているものが決まっています。
何でも良いという訳ではないのです。
たとえば、
ここを見ると分かるのですが、選択肢はそれほど多くないのです。
幅広いユーザを考えて、、となると自ずと選択肢はしぼられていて、だいたいは、
フォーマット:mp4
映像コーデック:h.264
音声コーデック:AAC
このあたりに落ち着くことが多いように思います。(実際これでの納入がすごく多い)
#mp4エンコード
上述のように、端末やOSの制限で、NGな組み合わせのエンコードが存在します。
実際聞かれたときの調べ方と、注意ポイントを記載してみます。
#以下は個人的な例ですので、もっと良い方法があったらぜひ教えてください
###解析ツール
これが鉄板だと思います。
ほとんどのファイルを解析できて、一般的な設定内容は大体出てきますし、
結果をtxtやxmlで出力したり、といったこともできて、非常に便利です。
使い方は、このあたりが詳しいです。
これでOK/NGファイルを調べて、結果をdiffで取れば、概ね見当はつけられるはず。
###つまずきポイント例
- プロファイルとレベルの指定
- ref-frameとB-frame
- 最大ビットレート
結構色々なサイトを参考にさせてもらったので、列挙します。
各種エンコード設定の説明で参考になったのが、この三つ。
http://minamaro.blogspot.jp/2011/11/x264.html
http://www57.atwiki.jp/handbrakeguide/pages/25.html
http://movie.geocities.jp/ketsudan00/H264-01.html
細かい技術理解としては、このあたり。
http://d.hatena.ne.jp/leafcage/20120626/1340713483
http://ja.wikipedia.org/wiki/フレーム間予測
https://msdn.microsoft.com/ja-jp/library/ee341432(v=expression.40).aspx
http://freesoft.tvbok.com/movie_encode/mencoder/h264-main-high.html
現状(20150501時点)ですと、
Base Profile @3.1
ref-frames 3 / B-frames 0(MainProfileなら最大でref6 B3くらい)
最大ビットレート 1000kbps程度
このくらいが再生可能なものとして、割と見かけるようです。
とくにframe設定は、再生側の負荷に大きく関わるので、結構重要なようです。
(実際ヘンテコな値でエンコードすると、古め端末だと再生できないことが多々ある)
#最後に
最近、本当にビデオフォーマットが増えたと思います。
一昔前はFlashが多かった印象ですが、技術的なオ●コンぶりからでしょうか、
変わりつつあるように感じます。
html5が広がったのと、手っ取り早くスマホでも素材を撮れる、見せられるというのも
影響しているのでしょうかね。
それにしても動画のエンコード技術は調べるとかなり奥が深く興味をそそられました。
また暇があったら調べてみようと思います。