我从高分辨率视频文件开始,我想为移动流媒体创建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
答案 0 :(得分:9)
是的,您需要对所有变体进行编码并首先生成媒体播放列表(包含片段的播放列表)。
如果您愿意,可以在一个命令中执行此操作,因为def createUser = Action { implicit request =>
createUserForm.bindFromRequest.fold(
println("You need to enter all the fields.")
){ case (username, password, role) =>
println(username, password, role)
}
}
支持multiple inputs/outputs。例如:
ffmepg
您必须提供多种质量/比特率的变体,但宽高比应保持不变。保持纵横比最初是强制性的,但在最新的HLS创作指南中,它被降级为建议。
所有变体流必须是关键帧对齐的,因此请使用ffmpeg -i input \
... [encoding parameters 1] ... output1 \
... [encoding parameters 2] ... output2 \
....[encoding parameters 3] ... output3
选项设置GOP大小,禁用场景剪切检测并使用段持续时间-g
,它是关键帧间隔的倍数。
获得所有3x hls_time
媒体播放列表后,您可以手动创建指向每个媒体播放列表的主播放列表。
来自Apple HLS documentation的示例,您必须根据自己的编码选项更改带宽,编解码器,分辨率和播放列表文件名:
m3u8
答案 1 :(得分:0)
宽高比不一定相同,没有意义。 你怎么知道客户可以玩什么?
非高清的宽高比为4:3,高清变体为16:9。