首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MPEG-TS文件的级联和转码

MPEG-TS文件的级联和转码
EN

Stack Overflow用户
提问于 2019-02-25 01:37:42
回答 1查看 1.5K关注 0票数 0

我有一个DVR,它可以录制空中电视,并以MPEG-TS格式保存录音,将每集分割成多个文件,每个文件的大小约为500 MB。

为了简化归档,我一直在尝试编写一个shell脚本,以自动化将文件连接在一起并将它们转换成更常见的视频格式(如h.264 )的过程。

以下是我到目前为止所执行的步骤:

  • 首先,我想确保我得到的文件是有效的。为了测试这一点,在使用ffmpeg的concat命令合并之前,每个部分都用手制动器进行了代码转换。这是可行的,但是手动的,并增加了一个恼人的黑色框架之间的每一节。
  • 我编写了一个shell脚本,可以在一个文件夹中找到一个插曲的所有部分,并将文件名放入一个文本文件中,由来解析。
  • 测试此命令:

代码语言:javascript
复制
ffmpeg -hide_banner -f concat -i video_files_tmp.txt -c:v libx264 -pix_fmt yuv420p -c:a aac $2$OUTPUT_FILE_NAME

在代码转换期间,这将引发许多警告和错误,例如"PES数据包大小不匹配“。在某个时候,它会警告超过1,000帧被跳过。当输出被播放时,它将跳过帧,并导致一个文件,其中视频冻结一半,但音频继续播放。我还尝试将-vsync 0添加到输出中。

  • 然后,尝试将级联和代码转换分为两个步骤:

代码语言:javascript
复制
ffmpeg -hide_banner -f concat -i video_files_tmp.txt -c copy output_tmp.ts
ffmpeg -hide_banner -i output_tmp.ts -c:v libx265 -pix_fmt yuv420p -c:a aac $2$OUTPUT_FILE_NAME

这基本上和以前一样。

  • 尝试使用libx265编码器代替。同样的结果。
  • 然后,我尝试直接播放连接的MPEG-TS文件,这也会在播放过程中冻结。

我想知道,设置哪些ffmpeg标志或选项来实现此工作,或其他我可以尝试的选项?谢谢!

EN

回答 1

Stack Overflow用户

发布于 2020-12-20 20:59:52

我也有类似的问题,我用ffmpeg解决了。

我首先列出了我想连接的所有文件的列表:

代码语言:javascript
复制
for i in `\ls`; do echo "file $i" >> my_file_list.txt; done

不是每行开头的文件。然后我运行了ffmpeg,给了它文件列表:

代码语言:javascript
复制
ffmpeg -f concat -i my_file_list.txt -c copy output.mkv
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54858396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档