諸事情により、PHPでメディアプレイヤーを作ろうと思っているのだが、そもそも動画ファイルが何なのかミリしらなので、チャッピーと壁打ちしつつ調べたのでまとめ。
動画フォーマット
いわゆる MP4 MKV MOV AVI みたいな拡張子についてるようなやつは、コンテナと呼ばれるもので、これ自体は動画の種類などではなくて中身にどんなものを詰めているかという仕様らしい。
規格も決まっているようだが、正式な企画書は有料っぽいのでひとまず諦めた。ひとまずの認識としては以下のようにMP4に一連の動画ファイルが入っているということで納得する。
1 | movie.mp4 |
映像コーデック
codec は coder + decoder の略。つまり圧縮・復元の方法。(へぇぇぇぇぇぇぇぇ)
H.264 ってのは超定番らしい。codecの違いは圧縮・復元の方法の違いと捉えればよい。これは画像フォーマット GIF JPEG なんかと近い考え方だからよく理解できる。
音声コーデック
音声は映像とは別ファイルとしてコンテナに入っていて、音声はその専用のcodecが使われている。超有名どころの MP3 AAC などがある。完全に理解。
まとめ
というわけで、ちょっと調べただけだけど、メディアプレイヤーを作るには
- コンテナの規格に合わせて動画ファイルの中身をチェック
- 映像を映像コーデックで復元して再生
- 音声を音声コーデックで復元して再生
- 字幕などがあったら、動画に合わせて表示
ということをすれば、良いということが分かった。