vlc 播放录制ts文件显示时长负值且无法播放问题解决

采用 vlc 播放录制的ts文件,显示时长为负值,如下图:

但是用 ffplay 及 windows media player 可以播放,用 elecard stream analyzer 分析如下:

发现前面全是音频帧,13个音频帧之后才是视频 IDR,出现vlc 获取视频时长为负值及播放不了的原因就在这,把ts文件里面视频及音频 dts 重新排序解决问题。

解决方法:

把AAC音频帧第一个 dts 赋值等于第一个视频帧的dts,后续AAC 音频帧的 dts 递增值保持增加原始2个连续音频帧 dts 差值即可。

总结:

1、ts文件中按照dts的顺序写入数据(包括视频 dts 和音频 dts,上图中前面13帧均为音频是因为音频帧 dts的值都小于视频dts所致)。

2、视频和音频 AAC交替写入,一般2、3个视频帧后写入一个音频帧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值