我一直在尝试生成使用 h265 编码的 HLS 流但没有成功。我遇到了使用 h265 编解码器生成 hls 流但其中给出的解决方案似乎不起作用。
我尝试的另一种方法是运行以下命令:
ffmpeg -hide_banner -y -i original.mp4 -c:v libx265 -tag:v hvc1 -force_key_frames expr:gte(t,n_forced*2) -c:a copy -profile:v main -crf 20 -sc_threshold 0 -g 60 -keyint_min 60 -hls_segment_type fmp4 -hls_time 6 -hls_playlist_type vod -vf scale=w=720:h=720:force_original_aspect_ratio=decrease,pad=ceil(iw/2)*2:ceil(ih/2)*2 processed/720p.m3u8
我还在主播放列表中添加了以下内容。
CODECS=hvc1.1.6.L120.90,mp4a.40.2
当我把所有内容放在 S3 上并使用不同的播放器时hls-js,比特莫文和阿卡迈,它们似乎都能正确加载清单文件,但无法播放视频。
笔记:上述行为仅在 Safari 上出现。它manifestIncompatibleCodecsError
在 Chrome 上开始出现问题。我认为这是因为 Chrome 无法支持H265
,目前对我来说没问题。
我的ffmpeg版本是N-102560-g4718d74c58
当我mediastreamvalidator
在主播放列表上运行时,它会抛出错误
mediastreamvalidator playlist.m3u8
Error injecting segment data
Error injecting segment data
Error injecting segment data
Error injecting segment data
Error injecting segment data
Error injecting segment data
Error injecting segment data
Error injecting segment data
Error injecting segment data
Error injecting segment data
Error injecting segment data
Error injecting segment data
Error injecting segment data
Error injecting segment data
Error injecting segment data
Error injecting segment data
Error injecting segment data
Error injecting segment data
Error injecting segment data
Error injecting segment data
Error injecting segment data
Error injecting segment data
Error injecting segment data
Error injecting segment data
Error injecting segment data
Error injecting segment data
Error injecting segment data
Error injecting segment data
Error injecting segment data
[720p.m3u8] All media files delivered and have end tag, stopping
Error injecting segment data
--------------------------------------------------------------------------------
720p.m3u8
--------------------------------------------------------------------------------
Processed 0 out of 20 segments
Average segment duration: 5.873333
Total segment bitrates (all discontinuities): average: 1722.41 kb/s, max: 2295.00 kb/s
Playlist max bitrate: 2500.000000 kb/s
Audio Group ID: AUDIO
Discontinuity: sequence: 0, parsed segment count: 0 of 20, duration: 117.467 sec, average: 1722.41 kb/s, max: 2295.00 kb/s
我不太清楚这里出了什么问题。
额外信息
使用 ffmpeg 发现了一些类似的票6888,7021,7023和7024。
其中,6888 似乎已经修复,其余问题仍未解决(CMIIW)。6888 的修复似乎已有三年历史。我猜现在它也已合并到主版本中
答案1
当我切换到 bento 时我也遇到了麻烦,但我所需要做的就是修改我的 ffmpeg 转码。
- 对于我的 ffmpeg 转码,我删除了所有 HLS 特定参数,只留下 sc_threshold = 0、force_keyframes、r 和 g
- 我让 bento 分割文件
mp4fragment --fragment-duration 6000
- 然后
mp4dash --hls
应该能够生成一个有效的、可播放的播放列表