Ffmpeg 创建指向其他m3u8文件的m3u8文件

Ffmpeg 创建指向其他m3u8文件的m3u8文件,ffmpeg,m3u8,http-live-streaming,adaptive-bitrate,Ffmpeg,M3u8,Http Live Streaming,Adaptive Bitrate,我希望创建一个m3u8文件,该文件根据带宽指向其他m3u8文件,类似这样 #EXTM3U #EXT-X-VERSION:4 #EXT-X-TARGETDURATION:7 #EXT-X-MEDIA-SEQUENCE:4 #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=500000,RESOLUTION=480x270 480x270.m3u8 #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1000000,RESOLUTION=

我希望创建一个m3u8文件,该文件根据带宽指向其他m3u8文件,类似这样

#EXTM3U
#EXT-X-VERSION:4
#EXT-X-TARGETDURATION:7
#EXT-X-MEDIA-SEQUENCE:4
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=500000,RESOLUTION=480x270
480x270.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1000000,RESOLUTION=640x360
640x360.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2000000,RESOLUTION=1280x720
1280x720.m3u8
#EXT-X-ENDLIST

我希望能够使用ffmpeg来实现这一点,但我似乎找不到任何关于这样做的信息。如果有人能为我指出正确的方向,我将不胜感激,那么这样做可能是错误的。

2018年1月更新

现在,您可以使用FFmpeg使用
master\u pl\u name
var\u stream\u map
直接创建主播放列表。看


您无法直接使用FFmpeg创建HLS主播放列表(尚未)。您可以对同一个源进行多比特率编码,并获得每个不同的播放列表,但您必须自己提供主播放列表

当然,结果流必须对齐,以便您:

  • 使用固定的GOP大小(
    -g-sc_阈值0
    ,x264--keyint--min keyint--scenecut-1)

  • 如果适用,每过一秒就进行一次。如果您在需要的比特率中间生成一个回传的STATFILE,这样会更好,因为会有一些精度损失。p>

感谢您的回复。我目前正在使用这一行创建不同的文件。ffmpeg-i i.mp4-filter:v-c:aac-strict-experimental-ac 2-b:a 64k-ar 44100-c:v libx264-pix_fmt yuv420p-profile:v基线-level 21-b:v 400K-r 12-g 36-f hls-hls_time 9-s 480x270 ts/480x270.m3u8,然后我将大小更改为640 x 360或1280 x 720。播放列表似乎正常工作,但您是说在我能够使用它们之前,我需要再做一步吗?您必须自己编写主播放列表并引用ffmpeg生成的播放列表。您正在使用固定GOP解决方案(
-g 36
),您应该添加
-sc\u阈值0
。但是,您的命令看起来不正确,因为您只是更改分辨率,但所有格式副本的比特率都相同(
-b:v 400K
),并且分辨率也会有所不同。你想要多比特率媒体进行自适应流。哦,很抱歉,我只是太懒了,应该粘贴三个不同的ffmpeg命令。我正在更改每个不同编码的比特率。再次感谢您的帮助和链接到这篇伟大的文章!