首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MPEG-TS段HTTP实况流

MPEG-TS段HTTP实况流
EN

Stack Overflow用户
提问于 2011-12-26 12:15:18
回答 1查看 9.7K关注 0票数 2

我试着把MPEG-TS片段交织起来,但是失败了。实际上,使用膝上型计算机内置的摄像机捕获了一组片段,然后使用FFMPEG使用以下命令进行编码:

代码语言:javascript
复制
ffmpeg -er 4 -y -f video4linux2 -s 640x480 -r 30 -i %s -isync -f mpegts -acodec libmp3lame -ar 48000 -ab 64k -s 640x480 -vcodec libx264 -fflags +genpts -b 386k -coder 0 -me_range 16 -keyint_min 25 -i_qfactor 0.71 -bt 386k -maxrate 386k -bufsize 386k -qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 -aspect 640:480

另一个是使用以下命令编码的avi文件:

代码语言:javascript
复制
fmpeg -er 4 -y -f avi -s 640x480 -r 30 -i ./DSCF2021.AVI -vbsf dump_extra -f mpegts -acodec libmp3lame -ar 48000 -ab 64k -s 640x480 -vcodec libx264 -fflags +genpts -b 386k -coder 0 -me_range 16 -keyint_min 25 -i_qfactor 0.71 -bt 386k -maxrate 386k -bufsize 386k -qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 -aspect 640:480

然后,使用开源分段程序将输出分割为ts段。

如果两者都来自同一个来源(都来自照相机),它们就能正常工作。然而,在这种情况下,第二组段冻结。时间过去了,但视频不动。所以我觉得这是个编码问题。因此,我的问题是,应该如何更改ffmpeg命令才能工作?

所谓交织,我的意思是,有一个播放列表与第一组片段,另一个播放列表与另一组片段,并让客户端调用一个,然后另一个(HTTP流)

第一组片段之一的ff探头输出:

代码语言:javascript
复制
Input #0, mpegts, from 'live1.ts':
  Duration: 00:00:09.76, start: 1.400000, bitrate: 281 kb/s
  Program 1 Service01
    Metadata:
      name            : Service01
      provider_name   : FFmpeg
    Stream #0.0[0x100]: Video: h264, yuv420p, 640x480 [PAR 1:1 DAR 4:3], 29.92 fps, 29.92 tbr, 90k tbn, 59.83 tbc
    Stream #0.1[0x101]: Audio: aac, 48000 Hz, stereo, s16, 111 kb/s

第二组片段之一的ff探头输出:

代码语言:javascript
复制
Input #0, mpegts, from 'ad1.ts':
  Duration: 00:00:09.64, start: 1.400000, bitrate: 578 kb/s
  Program 1 Service01
    Metadata:
      name            : Service01
      provider_name   : FFmpeg
    Stream #0.0[0x100]: Video: h264, yuv420p, 640x480 [PAR 1:1 DAR 4:3], 25 fps, 25 tbr, 90k tbn, 50 tbc
    Stream #0.1[0x101]: Audio: aac, 48000 Hz, stereo, s16, 22 kb/s

谢谢,

EN

回答 1

Stack Overflow用户

发布于 2011-12-27 12:13:20

我在这个问题上见过不少问题--见:

  1. HTTP Live Streaming MPEG TS segment and
  2. Update .m3u8 playlist file for HTTP Live streaming?

我不确定确切的问题--但我想大多数人都抱怨说,当你将两种来源的内容混合在一起时,就会出现冻结现象。

我认为,如果PTS和/或PCR是不连续的,并且玩家没有识别或冲洗它,那么这种情况可能会出现。很可能,您可以识别时间戳的顺序,并查看是否解决了这些问题。

此外,见3.3.11。https://datatracker.ietf.org/doc/html/draft-pantos-http-live-streaming-07:EXT-X-间断

-x-不连续标记表示编码不连续。

在随后的媒体部分和之前的媒体部分之间

它。可能发生变化的一组特征是:

O文件格式

O轨道的数目和类型

O编码参数

O编码序列

O时间戳序列

因此,如果出现上述问题,播放列表文件中的不连续性标志可能会有所帮助。请尝试其中的一些,并提出更多细节。我想,这也会帮助很多其他人。

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

https://stackoverflow.com/questions/8635666

复制
相关文章

相似问题

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