• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Movie Format in a Nutshell 2013
 

Movie Format in a Nutshell 2013

on

  • 639 views

2013.8.26 某所で開催した動画技術勉強会の資料です。

2013.8.26 某所で開催した動画技術勉強会の資料です。
2009年のときから前半を少々リバイスし、後半をVESの話からHLSの話に入れ替えています。

Statistics

Views

Total Views
639
Views on SlideShare
639
Embed Views
0

Actions

Likes
1
Downloads
5
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Movie Format in a Nutshell 2013 Movie Format in a Nutshell 2013 Presentation Transcript

    • 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/ ✴ これらの資料を読む際に、どのレイヤのことを記載し ているのかを意識しながら読むのがよい それぞれ分量は多くないので、読み合わせ形式でお互いの知識を補完しながら行 うのもいいかもしれない 必ずしも各用語の詳細まで把握する必要はない(というか大変)が、 その仕様がどんな意味や意図で規定されているのかは意識したい