因此,我正在努力构建一个个人流媒体平台,并已尽我所能遵循我在各地找到的建议,以在流媒体时获得更好的兼容性/质量。
因此,我正在使用以下命令系统地将我的视频编码为视频编解码器h264,使用ffmpeg的mp4容器:
ffmpeg -i input -vcodec libx264 -maxrate 8000k -bufsize 1000K -minrate 10k -crf 24 -ab 192k -movflags faststart output.mp4
然而,我偶尔会遇到一些不情愿的mp4,它在Edge和Firefox上会玩得很好,但在Chrome上不会。加载似乎处理得很好,因为我可以在控件中看到总持续时间,但它永远不会播放,也不会在控制台中留下任何错误。
这是一个Mediainfo导出这样一个不情愿的文件:
Format : MPEG-4
Format profile : Base Media
Codec ID : isom (isom/iso2/avc1/mp41)
File size : 1.04 GiB
Duration : 1 h 21 min
Overall bit rate : 1 832 kb/s
Writing application : Lavf57.56.101
Video
ID : 1
Format : AVC
Format/Info : Advanced Video Codec
Format profile : High@L4
Format settings : CABAC / 4 Ref Frames
Format settings, CABAC : Yes
Format settings, Reference frames : 4 frames
Codec ID : avc1
Codec ID/Info : Advanced Video Coding
Duration : 1 h 21 min
Bit rate : 1 634 kb/s
Width : 1 912 pixels
Height : 1 032 pixels
Display aspect ratio : 1.85:1
Frame rate mode : Constant
Frame rate : 24.000 FPS
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : Progressive
Bits/(Pixel*Frame) : 0.035
Stream size : 953 MiB (89%)
Writing library : x264 core 148 r2748 97eaef2
Encoding settings : cabac=1 / ref=3 / deblock=1:0:0 / analyse=0x3:0x113 / me=hex / subme=7 / psy=1 / psy_rd=1.00:0.00 / mixed_ref=1 / me_range=16 / chroma_me=1 / trellis=1 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=-2 / threads=9 / lookahead_threads=1 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / bframes=3 / b_pyramid=2 / b_adapt=1 / b_bias=0 / direct=1 / weightb=1 / open_gop=0 / weightp=2 / keyint=250 / keyint_min=24 / scenecut=40 / intra_refresh=0 / rc_lookahead=40 / rc=crf / mbtree=1 / crf=24.0 / qcomp=0.60 / qpmin=0 / qpmax=69 / qpstep=4 / vbv_maxrate=8000 / vbv_bufsize=1000 / crf_max=0.0 / nal_hrd=none / filler=0 / ip_ratio=1.40 / aq=1:1.00
Language : French
Menus : 3
Codec configuration box : avcC
Audio
ID : 2
Format : AAC LC
Format/Info : Advanced Audio Codec Low Complexity
Codec ID : mp4a-40-2
Duration : 1 h 21 min
Bit rate mode : Constant
Bit rate : 192 kb/s
Channel(s) : 6 channels
Channel layout : C L R Ls Rs LFE
Sampling rate : 48.0 kHz
Frame rate : 46.875 FPS (1024 SPF)
Compression mode : Lossy
Stream size : 112 MiB (11%)
Language : French
Default : Yes
Alternate group : 1
Menus : 3
Menu #1
ID : 3
Codec ID : text
Duration : 1 h 21 min
Language : English
Bit rate mode : CBR
Menu For : 1,2
00:00:00.000 : Chapitre 01
00:08:39.000 : Chapitre 02
00:15:10.000 : Chapitre 03
00:24:47.000 : Chapitre 04
00:33:39.000 : Chapitre 05
00:43:38.000 : Chapitre 06
00:50:51.000 : Chapitre 07
00:59:13.000 : Chapitre 08
01:08:01.000 : Chapitre 09
01:14:06.000 : Chapitre 10
Bit rate mode : Constant
Menu #2
00:00:00.000 : Chapitre 01
00:08:39.000 : Chapitre 02
00:15:10.000 : Chapitre 03
00:24:47.000 : Chapitre 04
00:33:39.000 : Chapitre 05
00:43:38.000 : Chapitre 06
00:50:51.000 : Chapitre 07
00:59:13.000 : Chapitre 08
01:08:01.000 : Chapitre 09
01:14:06.000 : Chapitre 10
提前感谢您为提供的任何有价值的提示
奇怪的是,我设法解决了这个问题,尽管我仍然不明白为什么。
我注意到我的服务器的另一个问题是我无法在视频中找到某个点。
在debian stretch arm64下运行apache2服务器时,我发现字节范围并没有被接受。
我启用了apache2 mod头并添加了:
Header set Accept-Ranges bytes
到我的apache2.conf文件。
我修复了查找问题,但不播放mp4文件也!出于好奇,如果有人能解释这两件事是如何关联的(考虑到其他mp4文件播放得非常好(,我将不胜感激。
还不能发表评论,否则我会把它放在评论中。
在命令行中使用-v verbose,查看是否有任何与faststart设置相关的内容导致您出现问题。比如…一个错误的选项。
-movflags +faststart
是ffmpeg描述命令用法的方式。https://trac.ffmpeg.org/wiki/Encode/H.264