我希望从ts文件列表中创建'm3u8'文件。有什么方法吗?
我在谷歌上搜索并阅读了ffmpeg的文档,但没有找到相关信息。
我希望从ts文件列表中创建'm3u8'文件。有什么方法吗?
我在谷歌上搜索并阅读了ffmpeg的文档,但没有找到相关信息。
不清楚你是在问以下哪种情况,所以这里为两种情况给出一个快速答案:
FFMpeg 可以完成这三个步骤。
无论哪种情况,都需要考虑 .ts 文件的一些问题:
如果片段文件不属于连续的序列(例如,它们是从单个源剪辑转码用于HLS),则需要在没有相同编码特性或没有单调递增PTS(演示时间戳)值的片段之间插入EXT-X-DISCONTINUITY标记。
虽然片段的长度不需要全部相同,但最长的片段不能超过EXT-X-TARGETDURATION标记指定的秒数(整数)。
"对于VOD内容,平均片段比特率必须在AVERAGE-BANDWIDTH属性的10%范围内"
当您构建m3u8文件时,通过验证器运行它可以帮助您查找任何问题。这比在各种播放器/浏览器中猜测为什么HLS流播放效果不佳或不一致要容易得多。
#!/usr/bin/env bash
file="hls.m3u8"
echo "#EXTM3U" > $file
echo "#EXT-X-VERSION:3" >> $file
echo "#EXT-X-MEDIA-SEQUENCE:24" >> $file
echo "#EXT-X-TARGETDURATION:10" >> $file
for i in `find *.ts -type f | sort -g`; do
l=$(ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 $i)
echo "#EXTINF:$l," >> $file
echo "$i" >> $file
done
echo "#EXT-X-ENDLIST" >> $file
.ts
文件。您可以省略主M3U8,直接提供“第二级”。#EXTM3U
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:1
#EXTINF:10, no desc
media-000001.ts
#EXTINF:10, no desc
media-000002.ts
#EXTINF:10, no desc
media-000003.ts
< p > EXT-X-TARGETDURATION
指定每个 .ts
文件的持续时间(它们必须都具有相同的长度)。它可以是相对路径或绝对路径。