首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以使用FFMPEG将HLS文件集合中的一个".ts“文件替换为另一个".ts”文件?

是否可以使用FFMPEG将HLS文件集合中的一个".ts“文件替换为另一个".ts”文件?
EN

Stack Overflow用户
提问于 2019-07-26 14:47:12
回答 1查看 1K关注 0票数 1

有一个视频,实际上是一个HLS流( TS文件序列),我想取出一个TS块并替换为另一个。另一个块将使用相同的FFMPEG编码设置进行编码。

如果你想知道为什么我需要这个:有一个五个小时的HLS流。其中一个TS在视频中出现了错误的标题。我需要更改TS而不重新编码整个HLS流。

目前我试过:

  1. 将TS和FFMPEG转换成mp4
  2. 编辑mp4视频(更改标题)并保存为新的mp4
  3. 将新的mp4转换为新的TS (使用FFMPEG,设置与原始视频相同)
  4. 用新TS替换原始TS。

但它不起作用,播放器显示加载正在进行的图标。(在网络控制台中,我看到这个新TS正常加载,状态为200)

一旦我用原来的TS替换了新的TS,玩家就会正常播放。

两个TS文件都以i帧开头,都有音频.在P和B帧的序列上只有细微的差别。

代码语言:javascript
复制
old new
I   I
P   P
B   B
B   B
P   P
B   B
B   B
B   B
P   P
B   B
B   P
B   B
P   B
P   B
B   P

如何使新的TS块在原始TS序列中工作?

更新:

根据szatmary的建议(下面),我试图在所有的-copyts转换过程中包括“ts>mp4>ts”标志。也尝试了"-copytb“标志的所有3个选项- 1,0,和1。然而,结果仍然一样-玩家不播放新的TS块的HLS TS序列(m3u8)。

在M3U8列表中替换TS后添加“#EXT-X-间断”标记,并不能解决这种情况。

如果没有“#EXT-X-间断”标记,player会给出错误:

代码语言:javascript
复制
VIDEOJS: ERROR: (CODE:4 MEDIA_ERR_SRC_NOT_SUPPORTED) There appears to be a playback issue.

code: 4
message: "There appears to be a playback issue."

__proto__:
MEDIA_ERR_ABORTED: 1
MEDIA_ERR_CUSTOM: 0
MEDIA_ERR_DECODE: 3
MEDIA_ERR_ENCRYPTED: 5
MEDIA_ERR_NETWORK: 2
MEDIA_ERR_SRC_NOT_SUPPORTED: 4
code: 0
message: ""
status: null

在“#EXT-X-间断”标记下,player给出了错误:

代码语言:javascript
复制
VIDEOJS: ERROR: (CODE:3 MEDIA_ERR_DECODE) There appears to be a playback issue.

code: 3
message: "error"

__proto__:
MEDIA_ERR_ABORTED: 1
MEDIA_ERR_CUSTOM: 0
MEDIA_ERR_DECODE: 3
MEDIA_ERR_ENCRYPTED: 5
MEDIA_ERR_NETWORK: 2
MEDIA_ERR_SRC_NOT_SUPPORTED: 4
code: 0
message: ""
status: null

两个TS文件(旧的和新的)都有视频和音频流。

看来还得做点别的。我认为解决方案将类似于广告插入。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-26 15:05:53

您还需要匹配时间戳。当转换为mp4时,您将丢失时间戳数据。您必须将其保留为ts,并使用-copy ts。即使这样,您也可能会丢失连续性计数器,并且需要在m3u8中放置不连续标记。你想做的事情没有得到真正的支持,而且很难得到仪式的认可。我在工作中做了一些类似的事情,但我们不得不编写定制的软件来实现无缝过渡。

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

https://stackoverflow.com/questions/57222423

复制
相关文章

相似问题

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