8

我们将视频服务流式传输到智能手机(iOS 和 Android)。我们使用 H.264+AAC 编码并使用 mp4 容器。我们有一个问题,即长电影(60 分钟以上)需要很长时间才能开始播放,并且已将其追踪到这些电影的大尺寸 moov atom。对于 110 分钟的电影,原子有 4.2Mb 大,显然需要很长时间才能通过 3G 下载到智能手机!

有没有办法让 moov 原子变小?我们可以通过降低音频采样率来减少它,但显然低于 22kHz 的任何东西都是不可接受的。

我们使用 ffmpeg 作为编码器,使用 MP4Box 将元数据移动到文件的前面。有没有办法让它做一个更小的moov?还有其他可以制作更小的moov的编码器吗?

例如...

大尺寸(280 Mb,1 小时 49 分钟)流式 mp4(h.264,AAC)文件具有大标题(4.2 Mb)。文件由两遍 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 atom info (/moov/trak[0] - video, /moov/trak[1] - audio) 采样率 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.
------------------------------------------------------

在慢速连接上,这部电影在 30-40 秒后开始播放,直到标题信息 (4.2 Mb) 下载。我需要那部电影尽可能快地开始播放。我还有下一个问题:

  1. 如何减小电影标题的大小?

  2. 如何减小 /moov[0]/trak[1]/mdia[0]/minf[0]/stbl[0] 的大小以及为什么在采样率 44100 时它这么大?

4

1 回答 1

0

看起来 AAC 编码器或 ffmpeg 在编码 AAC 流时做得不好。采样率不是这里的问题。您是否尝试过使用其他 AAC 编码器?

-acodec aac -strict experimental

ffmpeg 通常使用非常小的块大小,因此会导致更大的标头。视频也是如此。

下面是相当极端的。

Atom stts @ 869498 大小:2135816,结束 @ 3005314

Atom stsz @ 3045026 大小:1129400,结束 @ 4174426

如果另一个 AAC 编码器最终看起来相同,我会尝试使用不同的编码器。我建议您查看 ffmpeg 的一个分支,称为 ffmbc ,而不是使用 ffmpeg 和mp4box。这可以在转码时将标头放在开头,而不是将其作为后期处理。但鉴于它是一个 ffmpeg 分支,我不确定它是否有助于解决您的标题大小问题。不过值得一试。

于 2012-09-27T09:56:21.373 回答