gpt4 book ai didi

ffmpeg - 使用 FFMPEG 创建 HLS 变体

转载 作者:行者123 更新时间:2023-12-03 13:58:23 25 4
gpt4 key购买 nike

我从一个高分辨率视频文件开始,我想为移动流媒体创建 3 个变体,低质量、中等质量和高质量。我希望将这些中/低/高变体分割成 m3u8 文件将指向的 ts 片段。有没有办法在ffmpeg的一行中做到这一点?

我已经使用 ffmpeg 成功生成了一个 m3u8 文件和 ts 段,我是否需要这样做 3x 并设置低/中/高规范?如果是这样,我如何让单个 m3u8 文件指向所有变体,而不是每个变体一个?

这是我用来生成 m3u8 文件和 ts 段的命令。
ffmpeg -i C:\Users\george\Desktop\video\hos.mp4 -strict -2 -acodec aac -vcodec libx264 -crf 25 C:\Users\user\Desktop\video\hos_Phone.m3u8

最佳答案

是的,您需要先编码所有变体并生成媒体播放列表(包含片段的播放列表)。

如果你愿意,你可以在一个命令中完成 ffmepg支持multiple inputs/outputs .例如:

ffmpeg -i input \
... [encoding parameters 1] ... output1 \
... [encoding parameters 2] ... output2 \
....[encoding parameters 3] ... output3

您必须提供多种质量/比特率的变体,但纵横比应保持不变。保持纵横比最初是强制性的,但在最新的 HLS 创作指南中,它被降级为建议。

所有变体流必须是关键帧对齐,因此使用 -g 设置 GOP 大小选项,禁用场景切换检测并使用片段持续时间 hls_time这是关键帧间隔的倍数。

一旦你拥有所有 3x m3u8媒体播放列表您可以手动创建指向每个媒体播放列表的主播放列表。

来自 Apple HLS documentation 的示例,您必须根据自己的编码选项更改带宽、编解码器、分辨率和播放列表文件名:
#EXTM3U
#EXT-X-VERSION:6
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2855600,CODECS="avc1.4d001f,mp4a.40.2",RESOLUTION=960x540
medium.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=5605600,CODECS="avc1.640028,mp4a.40.2",RESOLUTION=1280x720
high.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1755600,CODECS="avc1.42001f,mp4a.40.2",RESOLUTION=640x360
low.m3u8

关于ffmpeg - 使用 FFMPEG 创建 HLS 变体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33225026/

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