pes packet size 医学mismatchh怎么导致的

数字电视当中接触最多的还是ts流以前使用ffplay播放过录制的ts流,但却不知道在ffmpeg当中ts流是如何被解析出来的今天花点时间对ffmpeg当中ts流的解析过程做了一个简单分析。

从这个文件最下面开始:

这函数一看就知道是检测数据格式是不是mpegts格式的

读数据头信息,比如在ts流当中的数据包大小和ts流中的节目信息,sdt表pmt表,video pidaudio pid等等,以便后面读数据时使用

上面这几行代码是从数据流当中读了5 * 1024个字节来判断数据包的大小

,一般这个值是188当然如果这个ts流鈈是标准和dvb ts流的话,那当然会不一样的


上面这几行代码是扫描节目信息,首先

设置了一个SDT表的filterSDT表当中会有节目的名子,提供商名子等等接着在

就不用看了,上面设置了filter这里紧跟着就得让filter工作起来了。


得到每个video, audio的PID然后就设置成pes filter,到这里基本上获取流的基本信息就已經结束了

下面再来看使用最多的一个函数

handle_packets 这是我们刚刚跳过去的函数,此函数执行完就得到一个PES包,保存在pkt中

这函数是处理单个包嘚,所以后面没有s

ts->stop_parse = 1意味着一个pes包构成了所以上面的函数mpegts_read_packet就返回了,这样一个pes包送上去了,再送到codec去解码最后送去video或audio输出设置显示了。由些可以看到ts流和avi, mkv这些一样都是一个容器,真真的数据都是包含在其中的一个一个的串流

获取到一个PES包后,会进行帧判断



}

我要回帖

更多关于 医学mismatch 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信