21
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[MPEG-DASH] Fragmented MP4のファイル構造

Last updated at Posted at 2020-05-24

はじめに

MPEG-DASHのセグメントファイル(Fragmented MP4)についてファイル構造を紹介します。

MP4

  • Moving Picture Experts Group(MPEG)で規格化
  • 国際標準機関 ISO/IEC で 14496-14 として標準化されている
  • AppleのQuickTimeを流用したもの
  • BOX(ATOM)と呼ばれるバイナリブロックから構成される

MP4は、MPEG-4の1つで映像・音声の記録に用いられているフォーマットです。もともとはMPEG-4動画を再生するためのフォーマットでありましたが、MPEG-4動画だけでなく、様々な映像/音声コーデックに対応しています。
MP4はBOXと呼ばれるバイナリブロックから構成されています。BOXは木構造になっています。このBOXは、AppleのQuickTimeがベースに作られたため、ATOMとも呼ばれることがあります。
MP4

BOX

  • BoxType
    • 4文字のASCIIで表される型を持っている
  • BoxSize
    • 4バイト(32bit)の長さ情報を持っている。
    • 子ノードのBOXの長さを含む(ツリー構造)
  • BoxData
    • バイナリデータ

BOXは、BoxTypeBoxSizeBoxDataの3つから構成されています。BOXの種類はBoxTypeで表されます。

BOXの種類

  • ftyp (FileTypeBox)
  • moov (MovieBox)
    • メディア毎のヘッダ情報(サイズ、再生時間、etc.)などのメタデータが格納されている
  • mdat (MovieDataBox)
    • メディアデータ自体が格納されている

上記以外にも、iods (ObjectDescriptorBox)、mvhd (MovieHeaderBox)、mvex (MovieExtendsBox)、trak (TrackBox)などがあります。

BOXのダンプ方法

実行例
MP4Box -std -diso Bullfinch.mp4 > output.xml
出力例
<?xml version="1.0" encoding="UTF-8"?>
<!--MP4Box dump trace-->
<IsoMediaFile xmlns="urn:mpeg:isobmff:schema:file:2016" Name="Bullfinch.mp4">
<FileTypeBox Size="32" Type="ftyp" Specification="p12" Container="file" MajorBrand="isom" MinorVersion="512">
<BrandEntry AlternateBrand="isom"/>
<BrandEntry AlternateBrand="iso2"/>
<BrandEntry AlternateBrand="avc1"/>
<BrandEntry AlternateBrand="mp41"/>
</FileTypeBox>
...

MP4Boxというソフトウェアを使うと、MP4のBOX構造をXML形式にダンプすることができます。

MP4の情報取得

実行例
ffprobe -i Bullfinch.mp4
出力例
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf56.4.101
  Duration: 00:00:14.44, start: 0.000000, bitrate: 4237 kb/s
    Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 4106 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 129 kb/s (default)
    Metadata:
      handler_name    : SoundHandler

FFmpegというソフトウェアに同梱されているffprobを使うと、MP4のコーデックや再生時間などの情報を取得することができます。

Fragmented MP4

  • 国際標準機関 ISO/IEC で 14496-12 として標準化されている
  • フラグメント
    • Fragmented MP4 で分割したもの
  • セグメント
    • MPEG-DASHで使用されているメディアファイルを分割したもの
    • 1つまたは複数のフラグメントから構成される

Fragmented MP4では、1つの「初期セグメントファイル」と複数の「セグメントファイル」に分かれた構造になります。MPEG-DASHHLSで扱うメディアファイルは、Fragmented MP4である必要があります。
Fragmented MP4

おわりに

今回、Fragmented MP4について纏めました。
メディアファイルの作成方法や再生方法については別の投稿で紹介していますので
是非ご覧ください。ありがとうございました。

関連リンク

参考リンク

以上です。

21
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?