HTTP直播流 MPEG TS分段

4
我正在使用FFMPEG和免费的分段器(Carson Mcdonald的)来生成我的ts分段,然后将其保存到Web服务器并通过播放.m3u8文件使用Quicktime播放。
如果我有1、2、3、4个分段以及另一个带有1、2、3、4个分段的流,并且想要交错它们,我该怎么办?如果按照以下方式进行操作:1、2、其他流的3、4,则可以正常工作。但是,如果我想要按照以下方式进行操作:1、2、其他流的4、4,则无法正常工作。
换句话说,要添加的分段必须与要替换的分段具有相同的编号。这是为什么?这与PCR有关吗?我希望能够在任何地方交错任何分段..我该如何做?
谢谢,
M3U8文件是:
#EXTM3U 
#EXT-X-TARGETDURATION:10 
#EXT-X-MEDIA-SEQUENCE:21 
#EXTINF:10, sample_ep_386k-00021.ts 
#EXTINF:10, media_2.ts 
#EXTINF:10, sample_ep_386k-00023.ts

你能发布M3U8文件吗? - TheJuice
作为一个实验,如果你将这些文件合并起来,例如:'cat 1 2 other4 4 > test.ts',你能在VLC中播放这个视频吗? - TheJuice
请详细说明“它不起作用”是指什么?您看到了什么行为? - TheJuice
@TheJuice 我的意思是它播放了sample_ep_386k-00021,然后当它到达另一个流(media_2)的片段时,它会冻结,然后跳过并进入其后面的片段(sample.. 23)... 所以它甚至没有播放。但是,如果media_2实际上是另一个流中的第22个片段...那么它就可以正常播放! - user1069624
@TheJuice 当我按照你的建议将文件串联起来后,它们在VLC中可以正常播放... 我感觉问题出现在没有串联时使用播放列表文件进行播放。 - user1069624
2个回答

0
你修改了.M3U8播放列表(索引)文件,使其指向这两个4个文件吗?我猜它们在服务器上的不同位置。

是的,我修改了它以包含新片段的位置。目前为了简单起见,我将它们保持在相同的位置。这是播放列表文件:#EXTM3U #EXT-X-TARGETDURATION:10 #EXT-X-MEDIA-SEQUENCE:21 #EXTINF:10, sample_ep_386k-00021.ts #EXTINF:10, media_2.ts #EXTINF:10, sample_ep_386k-00023.ts其中media_2来自另一个流,片段编号为2。 - user1069624
只是为了明确,如果media_2甚至是sample_ep_386k-00003或同一流中的任何片段但不同的片段编号...它也不起作用。 - user1069624
1
我找到了解决原问题的方法。谢谢。 - user1069624
@tommychheng 对不起,我不太记得了,因为那是一段时间以前的事情...但我相信,我曾经不是编辑当前的播放列表文件,而是指向另一个包含我想要交错的片段的文件,然后在完成后再指回这个文件... - user1069624

0

这是许多人在SO上面常遇到的问题之一。

请查看我的答案:MPEG-TS Segments HTTP Live Streaming

需要检查的事项:

o PCR(时间戳)不连续
o 匹配帧率
o 文件格式
o 轨道数和类型
o 编码参数
o 编码顺序


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接