我正在尝试将 rtmp 流转换为 m3u8 流。为了达到这个目标,我使用 FFMPEG。现在,转换和下载没有问题。但是,它会写入很多 .ts 文件,例如 channel0000.ts、channel0001.ts、channel0002.ts。每 10 秒创建 1 个 ts 文件。在这一点上,我想要一个 ts 文件。换句话说,我需要覆盖,因为我不想存储我只需要最后 10 秒的所有流。当我尝试在同一个文件上写入时,出现此错误:
Invalid segment filename template 'channel.ts'
Could not write header for output file #0 (incorrect codec parameters ?): Invalid argumentStream mapping:
Stream #0:0 -> #0:0 (copy)
Stream #0:1 -> #0:1 (copy)
Last message repeated 1 times
这是我的 FFMPEG 命令。
ffmpeg -loglevel quiet -i rtmp://example -c:v libx264 -profile:v baseline -level 3.1 -c:a aac -strict experimental -f mpegts - | ffmpeg -i - -c copy -map 0 -f segment -segment_list channel.m3u8 -segment_format mpegts -segment_time 10 channel%04d.ts
有什么建议吗?
最佳答案
在 FFMPEG 文档中,我找到了“ segment_wrap ”选项。添加此选项时,文件将循环写入。在我的例子中,我添加了“ -segment_wrap 1 ”命令部分,它现在只写入一个文件。
关于linux - 在 Linux 中使用 FFMPEG 覆盖 TS 流文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45640130/