首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用正确的时间戳连接TS文件

使用正确的时间戳连接TS文件
EN

Stack Overflow用户
提问于 2015-11-09 06:34:58
回答 3查看 13.6K关注 0票数 6

我正在尝试将多个ts块文件合并到一个文件中,而不会损失任何质量或重新编码。这些文件是从一个实时流中获取的,但是我试图以不同的顺序合并它们,而不是按照它们被流式传输的顺序。

文件示例:

代码语言:javascript
复制
0000000033.ts
0000000034.ts
0000000039.ts
0000000044.ts

我试过了:

代码语言:javascript
复制
cat 0000000033.ts 0000000034.ts 0000000039.ts 0000000044.ts >combined.ts

代码语言:javascript
复制
ffmpeg -i "concat:0000000033.ts|concat:0000000034.ts|concat:0000000039.ts|concat:0000000044.ts" -c copy -bsf:a aac_adtstoasc output.mp4

这有点用,但是我不是4秒长,而是15秒左右。它是这样播放的:

代码语言:javascript
复制
[first 2 clips]
[5 secs pause]
[39.ts]
[5 secs pause]
[44.ts]
[done]

这种情况发生在cat和ffmpeg的组合版本上。因此,看起来ts块包含来自正在使用的流的时间戳。

我如何修复它,使其成为一个连续的剪辑?

这里的组块更多的是一个例子,组块将被动态选择。

EN

回答 3

Stack Overflow用户

发布于 2016-05-23 14:21:40

我还没有检查这是否适用于concat协议,但是您需要生成一组新的时间戳。

代码语言:javascript
复制
ffmpeg -i "concat:0000000033.ts|0000000034.ts|0000000039.ts|0000000044.ts" \
       -c copy -bsf:a aac_adtstoasc -fflags +genpts output.mp4
票数 5
EN

Stack Overflow用户

发布于 2018-11-23 15:45:41

如果您有一个很长的TS文件列表,您可以创建一个播放列表,该文件包含以下行格式的TS文件列表:

代码语言:javascript
复制
    file 'seg-37-a.ts'

这些命令生成这样一个文件,其中TS文件按数字排序。

代码语言:javascript
复制
    delimiterBeforeFileNumber="-"
    ls |egrep '[.]ts$' \
        |sort "-t$delimiterBeforeFileNumber" -k2,2n \
        |sed -r "s/(.*)/file '\1'/" >ts.files.txt

然后,单个文件的创建可以使用ffmpeg的-i选项的-f concat修饰符读取播放列表。

代码语言:javascript
复制
    ffmpeg -f concat -i ts.files.txt -c copy tsw.014.ts.mp4
票数 4
EN

Stack Overflow用户

发布于 2016-05-23 01:07:15

这些例子的文件号是否准确?因为0033.ts和0034.ts在一起玩,但是需要5秒才能到达0039.ts,然后再用5秒到0044.ts,所以0034 +5秒= 0039和+5秒= 0044,那么你是按正确的顺序加入他们的吗?

很抱歉我读错了问题,但是关于你的问题,一旦你有了15秒的剪辑,moyea有一个名为flv editor lite的程序,它会接收.mp4文件并将其转换为.flv,并允许你削减文件中多余的时间并将其导出为一个文件,但然后你需要再次转换回.mp4

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33599831

复制
相关文章

相似问题

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