gpt4 book ai didi

encoding - 如何减小 H.264 电影的 moovatom 大小以改善智能手机的流媒体启动?

转载 作者:行者123 更新时间:2023-12-02 20:22:21 25 4
gpt4 key购买 nike

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

有没有办法让moov原子变小?我们可以减少一点通过降低音频采样率,但显然低于 22kHz确实不能接受。

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

例如...

大尺寸(280 Mb,1 小时 49 分钟)可流式 mp4(h.264,AAC)文件具有大 header 大小(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 原子信息(/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 重新编码该电影后, header 大小要小得多:

媒体信息(音频采样率 = 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?

最佳答案

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

-acodec aac -strict experimental

ffmpeg 通常使用非常小的 block 大小,这将导致更大的 header 。视频也是如此。

下面的情况相当极端。

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

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

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

关于encoding - 如何减小 H.264 电影的 moovatom 大小以改善智能手机的流媒体启动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12617080/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com