encryption - 如何为我的加密子播放列表(使用 ffmpeg 创建)创建主 m3u8 播放列表?

标签 encryption ffmpeg video-encoding http-live-streaming m3u8

如果我使用以下 ffmpeg 命令为加密的 HLS 流创建三个输出,我如何能够创建 master.m3u8 变体播放列表(具有正确的带宽)?

./ffmpeg -re -i Test_1080p.mp4 \
     -c:a aac -b:a 128k -c:v libx264 -s 1920x1080 -g 48 -keyint_min 48  -sc_threshold 0 -bf 3 -b_strategy 2 -b:v 7800k -maxrate 8600k -bufsize 7800k -f hls -hls_time 6 -hls_list_size 0 -hls_key_info_file enc.keyinfo ./1080p/index.m3u8 \
     -c:a aac -b:a 128k -c:v libx264 -s 1280x720 -g 48 -keyint_min 48 -sc_threshold 0 -bf 3 -b_strategy 2 -b:v 4500k -maxrate 5000k -bufsize 4500k -f hls -hls_time 6 -hls_list_size 0 -hls_key_info_file enc.keyinfo ./720p/index.m3u8 \
    -c:a aac -b:a 64k -c:v libx264 -s 640x360 -g 48 -keyint_min 48 -sc_threshold 0 -bf 3 -b_strategy 2 -b:v 730k -maxrate 800k -bufsize 730k -f hls -hls_time 6 -hls_list_size 0 -hls_key_info_file enc.keyinfo ./360p/index.m3u8

这是我找到的一些示例,但我认为 BANDWIDTH-Value 对于我的输出文件不正确。如何计算正确的带宽?
#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=150000,RESOLUTION=640x360
http://example.com/360p/index.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=240000,RESOLUTION=1280x720
http://example.com/720p/index.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=640000,RESOLUTION=1920x1080
http://example.com/1080p/index.m3u8

Apple 的 variantplaylistcreator-tool 在这种情况下不起作用,因为我需要 .plist 文件,ffmpeg 不会生成这些文件。

我认为 ffmpeg 无法为生成的输出文件创建 master.m3u8 播放列表。

最佳答案

2018 年 1 月更新

您现在可以使用 master_pl_name 直接使用 FFmpeg 创建主播放列表和 var_stream_map .见documentation .

FFmpeg 不会创建主播放列表,但您可以像示例中那样手动创建。
BANDWIDTH属性表示变体的峰值比特率。对于像你这样的多路复用流,值是 peak audio bitrate + peak video bitrate + mux overhead (包括任何加密填充)。如果您有单独的视频/音频,则必须考虑最高比特率的演绎组合。

ffmpeg 时显示多路复用开销。命令结束,但前提是您只有一个输出。选择编码参数后,您可以运行一些测试并根据结果做出有根据的猜测。

要记住的一件事是,根据 Apple 指南,测量值必须在 VOD 声明带宽的 10% 以内,对于 1 小时的实时内容,测量值必须分别在 25% 以内。

关于encryption - 如何为我的加密子播放列表(使用 ffmpeg 创建)创建主 m3u8 播放列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44385859/

相关文章:

android - 需要在 Android 上从图像编码到视频

ffmpeg - ffmpeg 认为音频帧和音频样本之间有什么区别?

iphone - 如何在iPhone SDK上向视频文件添加音频

ffmpeg - 如何通过卡住最后一帧而不重新编码整个流来扩展视频?

mysql - ProFTPD 如何读取使用 MySQL ENCRYPT() 函数加密的密码?

java - 使用 SpongyCaSTLe 的 RSA

ffmpeg 将不同大小的视频转码为 4 :3

node.js - Golang 解密用 Node.js 加密的字符串

Java 字符串中断文件操作

video - ffmpeg 缩放/强制固定视频分辨率问题