狠狠撸

狠狠撸Share a Scribd company logo
Movie Format
in a nutshell
2013.8.26
あまのりょー
2013
はじめにお礼
?ああ、この人そういえばギジュツテキな話
もわずかに出来るんだった、って思いだして
声をかけてくれた虎塚さん、ヨンキュー!
?4年前に押しかけ勉強会を受け入れてくれた
ESMの皆さんにも4q~
本資料について
?2009年5月にESMで行った動画技術勉強会
の資料をベースに、Video ES(VES)につい
ての話を削り、HLS等のストリーミングプ
ロトコルについて付け足したものです
?VESについては昔の資料を参照いただく
のがよいと思います
Agenda
?レイヤーの区別について
?HLS概説
レイヤーを意识しよう
ネットワークの基礎
?ネットーワークの技術を学ぶ時に
最初に教わるOSI参照モデル
?具体的な境界は議論があるが、ともかく
「いまどこのレイヤーの話をしているか」
を把握することが重要
wikipediaより
RoRアプリを作る時も
?いま注目しているのはどこ?
RoRそのものの仕組みなのか
Rubyという言語の話なのか
gemやRakeなどの話なのか
利用している RDBの特性なのか
BitNami、Herokuなど実行環境の話なのか
自分たちの独自のライブラリのことなのか
利用しているIDE のことなのか
ドメイン知識の問題なのか
?「いまどこのレイヤーの話をしているか」
を把握することが重要
実は动画もおんなじ
実は动画もおんなじ
?いろいろヒトと話をしていると、
そして自分自身をふりかえると、
ここのところがごっちゃになっている感じ
実は动画もおんなじ
?いろいろヒトと話をしていると、
そして自分自身をふりかえると、
ここのところがごっちゃになっている感じ
?さらに混乱に拍車をかけるのは、
異なるレイヤーに同じ名前(ex. Mpeg) が
ついていること
実は动画もおんなじ
?いろいろヒトと話をしていると、
そして自分自身をふりかえると、
ここのところがごっちゃになっている感じ
?さらに混乱に拍車をかけるのは、
異なるレイヤーに同じ名前(ex. Mpeg) が
ついていること
?なので、ここの区別がつけば、
かなりスッキリする筈です、、、きっと...
動画技術のレイヤー
論理フォーマット等
運用規則
System
ES (Elementary Stream)
ES (Elementary Stream)
論理フォーマット等
運用規則
System
ES (Elementary
Stream)
ES (Elementary Stream)
論理フォーマット等
運用規則
System
ES (Elementary
Stream)
?単体の Video や Audio など
からなる基本のストリーム
ES (Elementary Stream)
論理フォーマット等
運用規則
System
ES (Elementary
Stream)
?単体の Video や Audio など
からなる基本のストリーム
?様々な圧縮技術が
用いられることが多い
ES (Elementary Stream)
論理フォーマット等
運用規則
System
ES (Elementary
Stream)
?単体の Video や Audio など
からなる基本のストリーム
?様々な圧縮技術が
用いられることが多い
?「コーデック」と呼ばれて
いるものは通常このレイヤー
ES (Elementary Stream)
論理フォーマット等
運用規則
System
ES (Elementary
Stream)
?単体の Video や Audio など
からなる基本のストリーム
?様々な圧縮技術が
用いられることが多い
?「コーデック」と呼ばれて
いるものは通常このレイヤー
?Video/Audio 以外もあるが
ここではまずは割愛
いろいろなESの例
? Video
Mpeg2 Video
Mpeg4 Visual
H.264/Mpeg4 AVC
H.265/HEVC
DivX
Windows Media Video (wmv)
? Audio
Mpeg1 Audio Layer3 (mp3)
AAC
Dolby AC3
LPCM
μ-Law
? Video/Audio 以外のESもあります
NVI_PACK (DVD-Video)
AUX-A/AUX-V (HDV)
Menu Bitmap Stream (AVCHD/Blu-ray Disk)
System
論理フォーマット等
運用規則
System
ES (Elementary
Stream)
System
論理フォーマット等
運用規則
System
ES (Elementary
Stream)
? 個々のESを多重化(Mux)する方法
System
論理フォーマット等
運用規則
System
ES (Elementary
Stream)
? 個々のESを多重化(Mux)する方法
? 「複数のESを1つのファイルに束
ねる方法」とほぼ同じことだと考
えれば良い
System
論理フォーマット等
運用規則
System
ES (Elementary
Stream)
? 個々のESを多重化(Mux)する方法
? 「複数のESを1つのファイルに束
ねる方法」とほぼ同じことだと考
えれば良い
いやすまん、それは言いすぎたw
System
論理フォーマット等
運用規則
System
ES (Elementary
Stream)
? 個々のESを多重化(Mux)する方法
? 「複数のESを1つのファイルに束
ねる方法」とほぼ同じことだと考
えれば良い
いやすまん、それは言いすぎたw
? 単純にESファイルを連結(cat)する
だけではうまくゆきません
System
論理フォーマット等
運用規則
System
ES (Elementary
Stream)
? 個々のESを多重化(Mux)する方法
? 「複数のESを1つのファイルに束
ねる方法」とほぼ同じことだと考
えれば良い
いやすまん、それは言いすぎたw
? 単純にESファイルを連結(cat)する
だけではうまくゆきません
? ES同士の同期(Lip Sync)や
プログラムの識別に
必要な情報などを記録する
概念図
Video ES
Audio ES
System多重化
Movie File
System のことを「コンテナフォーマット」と言う場合もある
いろいろなSystemの例
?Mpeg2-PS (.mpg, .mpeg, m2p ...)
?Mpeg2-TS (.m2t, .m2ts, .mpeg ...)
?Mpeg4 (.mp4)
?QuickTime (.mov)
?Audio Video Interleave (.avi)
?Advanced System Format (.asf, .wmv ...)
?Real Media (.rm)
?MXF
運用規則
論理フォーマット等
運用規則
System
ES (Elementary
Stream)
運用規則
論理フォーマット等
運用規則
System
ES (Elementary
Stream)
?ESやSystemの規格全範囲
を使うのではなく、
使用用途にあわせて
利用できる範囲を定める
のが普通(サブセット)
運用規則
論理フォーマット等
運用規則
System
ES (Elementary
Stream)
?ESやSystemの規格全範囲
を使うのではなく、
使用用途にあわせて
利用できる範囲を定める
のが普通(サブセット)
?例えば画サイズやビットレー
ト、圧縮に使えるツール、プ
ログラム数など
歴代の某社製カメラで撮影可能な形式例
呼称 Video Audio System
XAVC S H.264 AAC, LPCM Mpeg4
AVCHD H.264 AC3, LPCM Mpeg2-TS
HDV Mpeg2 Video
Mpeg1 Audio
Layer 2(mp2)
Mpeg2-TS
Mpeg1 Mpeg1
Mpeg1 Audio
Layer 2(mp2)
Mpeg1 System
mp4
H.264, Mpeg4
Visual
AAC Mpeg4
DV AVI DV LPCM AVI
SD Mpeg2 Video LPCM, AC3, mp2 Mpeg2-PS
例えばワンセグ放送
wikipediaより
ESのはなし
Systemのはなし
ニコニコ動画の推奨動画フォーマット(1)
http://help.nicovideo.jp/cat22/post_145.html より
ニコニコ動画の推奨動画フォーマット(2)
http://help.nicovideo.jp/cat22/post_145.html より
VideoES
AudioES
VideoESの
運用規則
AudioESの
運用規則
System
Systemの
運用規則
論理フォーマット等
論理フォーマット等
運用規則
System
ES (Elementary
Stream)
論理フォーマット等
論理フォーマット等
運用規則
System
ES (Elementary
Stream)
?主に動画ファイル以外の
データ構造やフォルダ配置、
ファイル命名規則
などを規定
論理フォーマット等
論理フォーマット等
運用規則
System
ES (Elementary
Stream)
?主に動画ファイル以外の
データ構造やフォルダ配置、
ファイル命名規則
などを規定
?運用規則とも深く
関わっている場合が多い
論理フォーマット等
論理フォーマット等
運用規則
System
ES (Elementary
Stream)
?主に動画ファイル以外の
データ構造やフォルダ配置、
ファイル命名規則
などを規定
?運用規則とも深く
関わっている場合が多い
?さらに物理フォーマットまで
規定されていることもある
論理フォーマットの例
?DVD (-Video, -VR, +VR)
?Blu-ray (BDMV, BDAV)
?AVCHD
?HLS や MPEG-DASH などのストリーミン
グプロトコルもここの話と捉えることがで
きる
例えばDVD-Videoの場合
VOBファイルがMpeg2-PSファイルであり、
その他のファイルにメタ情報が収められている。
また、フォルダ階層?ファイル名規則やファイルサイズ
上限なども定められている。
ここまでのまとめ
ここまでのまとめ
?動画ファイルは
ここまでのまとめ
?動画ファイルは
?Video/Audio などの個々のESを
ここまでのまとめ
?動画ファイルは
?Video/Audio などの個々のESを
?なんらかのSystemでくるんだもの。
ここまでのまとめ
?動画ファイルは
?Video/Audio などの個々のESを
?なんらかのSystemでくるんだもの。
?ESやSystemの内容は
ここまでのまとめ
?動画ファイルは
?Video/Audio などの個々のESを
?なんらかのSystemでくるんだもの。
?ESやSystemの内容は
?運用規則で実際のシンタックスが決まる。
ここまでのまとめ
?動画ファイルは
?Video/Audio などの個々のESを
?なんらかのSystemでくるんだもの。
?ESやSystemの内容は
?運用規則で実際のシンタックスが決まる。
?さらに、論理フォーマットまで含めて規格
化されることもある。
补足:あるファイルを视聴するとき
补足:あるファイルを视聴するとき
?動画ファイルの構成を逆に考える
补足:あるファイルを视聴するとき
?動画ファイルの構成を逆に考える
?まずSystemをほどき(Demux, SysDec)、
补足:あるファイルを视聴するとき
?動画ファイルの構成を逆に考える
?まずSystemをほどき(Demux, SysDec)、
?個々のESをデコードし、
补足:あるファイルを视聴するとき
?動画ファイルの構成を逆に考える
?まずSystemをほどき(Demux, SysDec)、
?個々のESをデコードし、
?必要ならリオーダー (詳細省略) しながら、
补足:あるファイルを视聴するとき
?動画ファイルの構成を逆に考える
?まずSystemをほどき(Demux, SysDec)、
?個々のESをデコードし、
?必要ならリオーダー (詳細省略) しながら、
?Systemの時間情報を元に同期を取りつつ
各デバイスで再生する
补足:あるファイルを视聴するとき
?動画ファイルの構成を逆に考える
?まずSystemをほどき(Demux, SysDec)、
?個々のESをデコードし、
?必要ならリオーダー (詳細省略) しながら、
?Systemの時間情報を元に同期を取りつつ
各デバイスで再生する
?上記の処理スピードによってカクツキや
描画品質の低下につながることがある
WindowsのDirectShow
FilterGraph と呼ばれる一連のデータ流処理グラフを構築する。
「ファイルから読み込む」「Systemをほどく」「Audio/Videoを
それぞれデコードする」「Audio/Videoをそれぞれのデバイスで
再生する」フィルタが組み合わされていることがわかる。
Audio/Videoの同期はFilterGraphが調整を行う。
ストリーミングプロトコ
ル、特にHLSについて
イマドキのストリーミングプロトコル
?HLS (HTTP Live Streaming)
Apple
?HDS (HTTP Dynamic Streaming)
Adobe
?Smooth Streaming
Microsoft
?MPEG-DASH (Dynamic Adaptive
Streaming over HTTP)
MPEG
特徴
? HTTPベース
RTP/RTCPベースのものに比べ、既存のネットワーク設定が使えたり、CDNが
利用できる
? ABS (Adaptive Bitrate Streaming)
ABRと言ったりもする
? VOD / Live Streaming 両方サポート
? オープン規格
HLSはinternet-draft状態、MPEG-DASHはISO/IEC標準化済
? セグメント化された動画ファイル
+メタ情報ファイル
というかメタ情報ファイルのシンタックス定義がこれらの規格の大部分
個人的な印象
重厚なMPEG-DASH(xml)、LightweightなHLS(m3u8)
配信ファイル
?メタ情報ファイル(Index File, Playlist)
m3u8 : プレイリストファイルとしてデファクトスタンダードに
なっているm3u形式を利用しつつ、HLS用のタグを独自に定義
している
m3u8 はネストが可能(唯一の構造化手段)で、
ABSは m3u8 のネストで実現する
配信ファイル
?ストリームファイル
AV両方入れる場合、System(コンテナ) は Mpeg2-TS
(オーディオのみの配信の場合は ESが使える ほか、
?字幕用にWebVTTファイルも配信出来る)
10秒程度くらいにぶつ切りにされた ts ファイルがたくさん
→ ただし EXT-X-BYTERANGE タグを使うことでファイルと
しては一つ、という運用もできる
VES は AVC、AES は AAC or AC-3
配信ファイル
?(optional) キーファイル
ストリームファイルをAESで暗号化する場合、
復号に必要な情報(AESキー および IV)を格納する
あるストリームセグメントに対するキーファイルは m3u8 で指
定される
MPEG-2 Stream Encryption Fomat for HTTP Live
Streaming に暗号化に関する詳細が記載されている
→ https://developer.apple.com/library/ios/
documentation/AudioVideo/Conceptual/
HLS_Sample_Encryption/
HLS 配信の基本構成
HTTP Live Streaming Overview より
代替ストリームの実現
HTTP Live Streaming Overview より
?シームレスな切り替
えが可能なように、
各代替ストリーム間
でPTSを合わせ
る、などの運用規則
が決まっている
例)Media segments の運用規則
Transport Stream segments MUST contain a single MPEG-2 Program.
There SHOULD be a Program Association Table (PAT) and a Program Map
Table (PMT) at the start of each segment. A segment that contains
video SHOULD have at least one key frame and enough information to
completely initialize a video decoder.
A Transport Stream or audio elementary stream segment MUST be the
continuation of the encoded media at the end of the segment with the
previous sequence number, where values in a continuous series, such
as timestamps and Continuity Counters, continue uninterrupted -
unless the media segment was the first ever to appear in the Playlist
file or has an EXT-X-DISCONTINUITY tag applied to it.
Clients MUST ignore private streams inside Transport Streams that
they do not recognize.
internet-draft 11 より
?どのレイヤの話かわかりますか?
推奨する取っ掛かり
? Apple の HTTP Live Streaming Overview を読む
https://developer.apple.com/library/mac/documentation/
NetworkingInternet/Conceptual/StreamingMediaGuide
? internet-draft (2013/08現在) を読む
http://tools.ietf.org/html/draft-pantos-http-live-streaming
? ほか、ドキュメントのポインタが以下にまとまっている
https://developer.apple.com/streaming/
? これらの資料を読む際に、どのレイヤのことを記載し
ているのかを意識しながら読むのがよい
それぞれ分量は多くないので、読み合わせ形式でお互いの知識を補完しながら行
うのもいいかもしれない
必ずしも各用語の詳細まで把握する必要はない(というか大変)が、
その仕様がどんな意味や意図で規定されているのかは意識したい

More Related Content

Movie Format in a Nutshell 2013