ts流在flush播放器中无法正常播放问题及解决(只有声音没有画面)

问题描述:

第一次遇到这个问题是复用后的TS流在VLC上播放正常,但在苹果手机的浏览器上无法正常播放,只有声音没有画面。

注:苹果手机自带的浏览器播放器是flash的,所以在flash播放器上一般都会有这种问题,其他播放器不确定会不会导致此问题。

为什么这么做?

在网上搜索资料查到,苹果官网说法:查看第10条 https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/StreamingMediaGuide/FrequentlyAskedQuestions/FrequentlyAskedQuestions.html

一般文档没有对AUD进行描述,其实这是一个帧开始的标志,字节顺序为:00 00 00 01 09 f0,从结构上看,有start_code, 所以确实是一个NALU,类型09在H264定义里就是AUD(分割器)。大部分播放器可以在没有AUD的情况下正常播放。紧随AUD,一般是SPS/PPS/SEI/IDR的组合或者简单就是一个SLICE,也就是一个帧的开始。像Flash这样的播放器,每次需要一个完整的帧数据,那么把2个AUD之间的数据按照格式打包给播放器就可以了。

解决办法:

在真正的帧数据之间加上AUD帧就可以了。

在ES层数据上检测到起始头start_code后判断帧类型;如果是帧类型为09不添加AUD,如果是其他则添加上AUD帧(即00 00 00 01 09 f0)。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值