linux - 在 Linux 中使用 FFMPEG 覆盖 TS 流文件

标签 linux file terminal ffmpeg overwrite

我正在尝试将 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/

相关文章:

c++ - 使用标准 C++/C++11、14、17/C 检查文件是否存在的最快方法?

php - 删除文件中的完全匹配

macos - 从 curl 管道运行时跳过 bash 读取

user-interface - 在哪里可以找到图形命令 shell ?

linux - 为什么指定我的 shell 会更改 root 的 EUID?

linux - 使用sed删除文本文件中的编号

c - 读取文件并使用Strtok,某些字段读取成功,某些字段读取不成功

linux - 是否可以使用远程主机上不存在的子域来设置 ssh 反向隧道?

linux - 在 bash 脚本中获取祖父目录 - 重命名路径中目录的文件

linux - 终端 I/O(如何使用特定内存区域模拟终端读/写?)