スマートフォン(iOS&Android)に動画をストリーミング配信する動画サービスを運営しています。H.264+AAC でエンコードし、mp4 コンテナーを使用しています。長いムービー (60 分以上) の再生開始に非常に長い時間がかかるという問題があり、これらのムービーの moov アトムのサイズが大きいことが原因であることがわかりました。110 分の映画の場合、atom は 4.2Mb にもなり、3G 経由でスマートフォンにダウンロードするには明らかに時間がかかります。
とにかくmoovアトムを小さくする方法はありますか? オーディオのサンプリング レートを下げることで少し減らすことができますが、明らかに 22kHz を下回るものは実際には受け入れられません。
エンコーダーとして ffmpeg を使用し、MP4Box を使用してメタデータをファイルの先頭に移動します。より小さなmoovを作成する方法はありますか? より小さなmoovを作成する他のエンコーダーはありますか?
例えば...
大きなサイズ (280 Mb、1 時間 49 分) のストリーミング可能な mp4 (h.264、AAC) ファイルには、大きなヘッダー サイズ (4.2 Mb) があります。ファイルは、メタデータをファイルの先頭に置き換えるために、2 つのパス ffmpeg と MP4Box によってエンコードされました。
/usr/bin/ffmpeg -i /var/lib/encoder/incoming/2388 -aspect 320:210 -threads 8 -vcodec libx264 -profile baseline -level 13 -flags +loop+mv4 -cmp 256 -partitions +parti4x4+parti8x8+partp4x4+partp8x8+partb8x8 -me_method hex -subq 7 -trellis 1 -refs 5 -bf 0 -me_range 16 -g 250 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -qmin 10 -qmax 51 -qdiff 4 -b:v 270k -maxrate 270k -bufsize 270k -g 30 -passlogfile /tmp/mediaservice/3100/video-IPH.ffmpeg -an -f rawvideo -pass 1 -y /dev/null
/usr/bin/ffmpeg -i /var/lib/encoder/incoming/2388 -aspect 320:210 -threads 8 -vcodec libx264 -profile baseline -level 13 -flags +loop+mv4 -cmp 256 -partitions +parti4x4+parti8x8+partp4x4+partp8x8+partb8x8 -me_method hex -subq 7 -trellis 1 -refs 5 -bf 0 -me_range 16 -g 250 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -qmin 10 -qmax 51 -qdiff 4 -b:v 270k -maxrate 270k -bufsize 270k -g 30 -passlogfile /tmp/mediaservice/3100/video-IPH.ffmpeg -acodec libfaac -ac 2 -b:a 32k -ar 44100 -f mp4 -pass 2 -y /var/lib/encoder/encoded/3100/video-IPH.mp4
/usr/bin/MP4Box -quiet -tmp /tmp/mediaservice/3100/ -inter 500 /var/lib/encoder/encoded/3100/video-IPH.mp4
メディア情報 (オーディオ サンプル レート = 44100):
General
Count : 278
Count of stream of this kind : 1
Kind of stream : General
Kind of stream : General
Stream identifier : 0
Count of video streams : 1
Count of audio streams : 1
Video_Format_List : AVC
Video_Format_WithHint_List : AVC
Codecs Video : AVC
Audio_Format_List : AAC
Audio_Format_WithHint_List : AAC
Audio codecs : AAC LC
Complete name : 1348645218_970458_2465.iph.mp4
File name : 1348645218_970458_2465.iph.mp4
File extension : mp4
Format : MPEG-4
Format : MPEG-4
Format/Extensions usually used : mp4 m4v m4a m4b m4p 3gpp 3gp 3gpp2 3g2 k3g jpm jpx mqv ismv isma f4v
Commercial name : MPEG-4
Format profile : Base Media
Internet media type : video/mp4
Codec ID : isom
Codec ID/Url : http://www.apple.com/quicktime/download/standalone.html
Codec : MPEG-4
Codec : MPEG-4
Codec/Extensions usually used : mp4 m4v m4a m4b m4p 3gpp 3gp 3gpp2 3g2 k3g jpm jpx mqv ismv isma f4v
File size : 272703970
File size : 260 MiB
File size : 260 MiB
File size : 260 MiB
File size : 260 MiB
File size : 260.1 MiB
Duration : 6556027
Duration : 1h 49mn
Duration : 1h 49mn 16s 27ms
Duration : 1h 49mn
Duration : 01:49:16.027
Overall bit rate : 332767
Overall bit rate : 333 Kbps
Stream size : 4230761
Stream size : 4.03 MiB (2%)
Stream size : 4 MiB
Stream size : 4.0 MiB
Stream size : 4.03 MiB
Stream size : 4.035 MiB
Stream size : 4.03 MiB (2%)
Proportion of this stream : 0.01551
HeaderSize : 4230683
DataSize : 268473217
FooterSize : 70
IsStreamable : Yes
File last modification date : UTC 2012-09-26 12:38:19
File last modification date (local) : 2012-09-26 21:38:19
Writing application : Lavf54.6.100
Video
Count : 201
Count of stream of this kind : 1
Kind of stream : Video
Kind of stream : Video
Stream identifier : 0
ID : 1
ID : 1
Format : AVC
Format/Info : Advanced Video Codec
Format/Url : http://developers.videolan.org/x264.html
Commercial name : AVC
Format profile : Baseline@L1.3
Format settings : 5 Ref Frames
Format settings, CABAC : No
Format settings, CABAC : No
Format settings, ReFrames : 5
Format settings, ReFrames : 5 frames
Format settings, GOP : M=1, N=30
Internet media type : video/H264
Codec ID : avc1
Codec ID/Info : Advanced Video Coding
Codec ID/Url : http://www.apple.com/quicktime/download/standalone.html
Codec : AVC
Codec : AVC
Codec/Family : AVC
Codec/Info : Advanced Video Codec
Codec/Url : http://developers.videolan.org/x264.html
Codec/CC : avc1
Codec profile : Baseline@L1.3
Codec settings : 5 Ref Frames
Codec settings, CABAC : No
Codec_Settings_RefFrames : 5
Duration : 6556017
Duration : 01:49:16.017
Bit rate : 270000
Bit rate : 270 Kbps
Width : 480
Width : 480 pixels
Height : 270
Height : 270 pixels
Pixel aspect ratio : 1.000
Display aspect ratio : 1.778
Display aspect ratio : 16:9
Rotation : 0.000
Frame rate mode : CFR
Frame rate mode : Constant
FrameRate_Mode_Original : VFR
Frame rate : 29.970
Frame rate : 29.970 fps
Frame count : 196484
Resolution : 8
Resolution : 8 bits
Colorimetry : 4:2:0
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8
Bit depth : 8 bits
Scan type : Progressive
Scan type : Progressive
Interlacement : PPF
Interlacement : Progressive
Bits/(Pixel*Frame) : 0.070
Stream size : 220159060
Stream size : 210 MiB (81%)
Stream size : 210 MiB
Stream size : 210 MiB
Stream size : 210 MiB
Stream size : 210.0 MiB
Stream size : 210 MiB (81%)
Proportion of this stream : 0.80732
Writing library : x264 - core 125
Writing library : x264 core 125
Writing library/Name : x264
Writing library/Version : core 125
Encoding settings : cabac=0 / ref=5 / deblock=1:0:0 / analyse=0x1:0x131 / me=hex / subme=7 / psy=1 / psy_rd=1.00:0.00 / mixed_ref=1 / me_range=16 / chroma_me=1 / trellis=1 / 8x8dct=0 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=-2 / threads=8 / lookahead_threads=1 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / bframes=0 / weightp=0 / keyint=30 / keyint_min=16 / scenecut=40 / intra_refresh=0 / rc_lookahead=30 / rc=2pass / mbtree=1 / bitrate=270 / ratetol=1.0 / qcomp=0.60 / qpmin=10 / qpmax=51 / qpstep=4 / cplxblur=20.0 / qblur=0.5 / vbv_maxrate=270 / vbv_bufsize=270 / nal_hrd=none / ip_ratio=1.40 / aq=1:1.00
Tagged date : UTC 2012-09-25 07:21:37
Audio
Count : 169
Count of stream of this kind : 1
Kind of stream : Audio
Kind of stream : Audio
Stream identifier : 0
ID : 2
ID : 2
Format : AAC
Format/Info : Advanced Audio Codec
Commercial name : AAC
Format profile : LC
Codec ID : 40
Codec : AAC LC
Codec : AAC LC
Codec/Family : AAC
Codec/CC : 40
Duration : 6556027
Duration : 1h 49mn
Duration : 1h 49mn 16s 27ms
Duration : 1h 49mn
Duration : 01:49:16.027
Bit rate mode : VBR
Bit rate mode : Variable
Bit rate : 58955
Bit rate : 59.0 Kbps
Maximum bit rate : 270000
Maximum bit rate : 270 Kbps
Channel(s) : 2
Channel(s) : 2 channels
Channel positions : Front: L R
Channel positions : 2/0/0
Sampling rate : 44100
Sampling rate : 44.1 KHz
Samples count : 289120791
Compression mode : Lossy
Compression mode : Lossy
Stream size : 48314149
Stream size : 46.1 MiB (18%)
Stream size : 46 MiB
Stream size : 46 MiB
Stream size : 46.1 MiB
Stream size : 46.08 MiB
Stream size : 46.1 MiB (18%)
Proportion of this stream : 0.17717
Tagged date : UTC 2012-09-25 07:21:37
Moov アトム情報 (/moov/trak[0] - ビデオ、/moov/trak[1] - オーディオ) サンプルレート 44100: (trak の stsz および stts ノードを見てください)
Atom ftyp @ 0 of size: 32, ends @ 32
Atom moov @ 32 of size: 4230651, ends @ 4230683
Atom mvhd @ 40 of size: 108, ends @ 148
Atom trak @ 148 of size: 868970, ends @ 869118
Atom tkhd @ 156 of size: 92, ends @ 248
Atom edts @ 248 of size: 36, ends @ 284
Atom elst @ 256 of size: 28, ends @ 284
Atom mdia @ 284 of size: 868834, ends @ 869118
Atom mdhd @ 292 of size: 32, ends @ 324
Atom hdlr @ 324 of size: 45, ends @ 369
Atom minf @ 369 of size: 868749, ends @ 869118
Atom vmhd @ 377 of size: 20, ends @ 397
Atom dinf @ 397 of size: 36, ends @ 433
Atom dref @ 405 of size: 28, ends @ 433
Atom stbl @ 433 of size: 868685, ends @ 869118
Atom stsd @ 441 of size: 149, ends @ 590
Atom avc1 @ 457 of size: 133, ends @ 590
Atom avcC @ 543 of size: 47, ends @ 590
Atom stts @ 590 of size: 24, ends @ 614
Atom stss @ 614 of size: 26340, ends @ 26954
Atom stsc @ 26954 of size: 52, ends @ 27006
Atom stsz @ 27006 of size: 785956, ends @ 812962
Atom stco @ 812962 of size: 56156, ends @ 869118
Atom trak @ 869118 of size: 3361468, ends @ 4230586
Atom tkhd @ 869126 of size: 92, ends @ 869218
Atom edts @ 869218 of size: 36, ends @ 869254
Atom elst @ 869226 of size: 28, ends @ 869254
Atom mdia @ 869254 of size: 3361332, ends @ 4230586
Atom mdhd @ 869262 of size: 32, ends @ 869294
Atom hdlr @ 869294 of size: 45, ends @ 869339
Atom minf @ 869339 of size: 3361247, ends @ 4230586
Atom smhd @ 869347 of size: 16, ends @ 869363
Atom dinf @ 869363 of size: 36, ends @ 869399
Atom dref @ 869371 of size: 28, ends @ 869399
Atom stbl @ 869399 of size: 3361187, ends @ 4230586
Atom stsd @ 869407 of size: 91, ends @ 869498
Atom mp4a @ 869423 of size: 75, ends @ 869498
Atom esds @ 869459 of size: 39, ends @ 869498
**Atom stts @ 869498 of size: 2135816, ends @ 3005314**
Atom stsc @ 3005314 of size: 39712, ends @ 3045026
**Atom stsz @ 3045026 of size: 1129400, ends @ 4174426**
Atom stco @ 4174426 of size: 56160, ends @ 4230586
Atom udta @ 4230586 of size: 97, ends @ 4230683
Atom meta @ 4230594 of size: 89, ends @ 4230683
Atom hdlr @ 4230606 of size: 33, ends @ 4230639
Atom ilst @ 4230639 of size: 44, ends @ 4230683
Atom ©too @ 4230647 of size: 36, ends @ 4230683
Atom data @ 4230655 of size: 28, ends @ 4230683
Atom mdat @ 4230683 of size: 268473217, ends @ 272703900
Atom free @ 272703900 of size: 8, ends @ 272703908
Atom free @ 272703908 of size: 62, ends @ 272703970
------------------------------------------------------
Total size: 272703970 bytes; 50 atoms total. AtomicParsley version: 0.9.0 (utf8)
Media data: 268473217 bytes; 4230753 bytes all other atoms (1.551% atom overhead).
Total free atom space: 70 bytes; 0.000% waste. Padding available: 0 bytes.
------------------------------------------------------
このムービーをオーディオ サンプル レート 11025 で再エンコードすると、ヘッダー サイズが大幅に縮小されます。
メディア情報 (オーディオ サンプル レート = 11025): (クロップ重複情報)
General
***
HeaderSize : 1276359
Video
***
Audio
Count : 169
Count of stream of this kind : 1
Kind of stream : Audio
Kind of stream : Audio
Stream identifier : 0
ID : 2
ID : 2
Format : AAC
Format/Info : Advanced Audio Codec
Commercial name : AAC
Format profile : LC
Codec ID : 40
Codec : AAC LC
Codec : AAC LC
Codec/Family : AAC
Codec/CC : 40
Duration : 6556132
Duration : 1h 49mn
Duration : 1h 49mn 16s 132ms
Duration : 1h 49mn
Duration : 01:49:16.132
Bit rate mode : VBR
Bit rate mode : Variable
Bit rate : 37991
Bit rate : 38.0 Kbps
Maximum bit rate : 128000
Maximum bit rate : 128 Kbps
Channel(s) : 2
Channel(s) : 2 channels
Channel positions : Front: L R
Channel positions : 2/0/0
Sampling rate : 11025
Sampling rate : 11.025 KHz
Samples count : 72281355
Compression mode : Lossy
Compression mode : Lossy
Stream size : 31134257
Stream size : 29.7 MiB (12%)
Stream size : 30 MiB
Stream size : 30 MiB
Stream size : 29.7 MiB
Stream size : 29.69 MiB
Stream size : 29.7 MiB (12%)
Proportion of this stream : 0.12327
Tagged date : UTC 2012-09-25 13:20:28
Moov アトム情報 (/moov/trak[0] - ビデオ、/moov/trak[1] - オーディオ) サンプルレート 11025:
Atom ftyp @ 0 of size: 32, ends @ 32
Atom moov @ 32 of size: 1276327, ends @ 1276359
Atom mvhd @ 40 of size: 108, ends @ 148
Atom trak @ 148 of size: 821662, ends @ 821810
Atom tkhd @ 156 of size: 92, ends @ 248
Atom edts @ 248 of size: 36, ends @ 284
Atom elst @ 256 of size: 28, ends @ 284
Atom mdia @ 284 of size: 821526, ends @ 821810
Atom mdhd @ 292 of size: 32, ends @ 324
Atom hdlr @ 324 of size: 45, ends @ 369
Atom minf @ 369 of size: 821441, ends @ 821810
Atom vmhd @ 377 of size: 20, ends @ 397
Atom dinf @ 397 of size: 36, ends @ 433
Atom dref @ 405 of size: 28, ends @ 433
Atom stbl @ 433 of size: 821377, ends @ 821810
Atom stsd @ 441 of size: 149, ends @ 590
Atom avc1 @ 457 of size: 133, ends @ 590
Atom avcC @ 543 of size: 47, ends @ 590
Atom stts @ 590 of size: 24, ends @ 614
Atom stss @ 614 of size: 26340, ends @ 26954
Atom stsc @ 26954 of size: 52, ends @ 27006
Atom stsz @ 27006 of size: 785956, ends @ 812962
Atom stco @ 812962 of size: 8848, ends @ 821810
Atom trak @ 821810 of size: 454452, ends @ 1276262
Atom tkhd @ 821818 of size: 92, ends @ 821910
Atom edts @ 821910 of size: 36, ends @ 821946
Atom elst @ 821918 of size: 28, ends @ 821946
Atom mdia @ 821946 of size: 454316, ends @ 1276262
Atom mdhd @ 821954 of size: 32, ends @ 821986
Atom hdlr @ 821986 of size: 45, ends @ 822031
Atom minf @ 822031 of size: 454231, ends @ 1276262
Atom smhd @ 822039 of size: 16, ends @ 822055
Atom dinf @ 822055 of size: 36, ends @ 822091
Atom dref @ 822063 of size: 28, ends @ 822091
Atom stbl @ 822091 of size: 454171, ends @ 1276262
Atom stsd @ 822099 of size: 91, ends @ 822190
Atom mp4a @ 822115 of size: 75, ends @ 822190
Atom esds @ 822151 of size: 39, ends @ 822190
Atom stts @ 822190 of size: 161368, ends @ 983558
Atom stsc @ 983558 of size: 1480, ends @ 985038
Atom stsz @ 985038 of size: 282372, ends @ 1267410
Atom stco @ 1267410 of size: 8852, ends @ 1276262
Atom udta @ 1276262 of size: 97, ends @ 1276359
Atom meta @ 1276270 of size: 89, ends @ 1276359
Atom hdlr @ 1276282 of size: 33, ends @ 1276315
Atom ilst @ 1276315 of size: 44, ends @ 1276359
Atom ©too @ 1276323 of size: 36, ends @ 1276359
Atom data @ 1276331 of size: 28, ends @ 1276359
Atom mdat @ 1276359 of size: 251293325, ends @ 252569684
Atom free @ 252569684 of size: 8, ends @ 252569692
Atom free @ 252569692 of size: 62, ends @ 252569754
------------------------------------------------------
Total size: 252569754 bytes; 50 atoms total. AtomicParsley version: 0.9.0 (utf8)
Media data: 251293325 bytes; 1276429 bytes all other atoms (0.505% atom overhead).
Total free atom space: 70 bytes; 0.000% waste. Padding available: 0 bytes.
------------------------------------------------------
接続が遅い場合、このムービーはヘッダー情報 (4.2 Mb) がダウンロードされるまで 30 ~ 40 秒後に再生を開始します。その映画をできるだけ早く再生する必要があります。次の質問があります。
ムービー ヘッダーのサイズを小さくするにはどうすればよいですか?
/moov[0]/trak[1]/mdia[0]/minf[0]/stbl[0] のサイズを縮小する方法と、サンプル レート 44100 の場合にサイズが大きくなるのはなぜですか?