HK + FFMPEG + X264 + QSV + libRTMP + FMS踩了坑


最近自己写一个软件,利用海康摄像机的RTSP流通过ffmpeg拉取之后解码成YUV进行相关细节处理,在用X264或者QSV编码,通过rtmp发送到fms的程序。


为了保证程序的稳定性,界面配置控制层和底层转码,图像处理,图像合成等采用了多进程的方式,就是为了方便底层可能不稳定从而易维护(其实就是为了偷懒,真内存泄漏啦啥的,直接结束进程在拉起来,图像中断不超过500ms,感觉挺划算)。


谁知道,踩了坑了。


1.librtmp推流到fms,过一段时间后(这个时间一般是若干小时),从fms拉出来的图像,播放器播放仅能播放第一个I帧,后续的帧解码不出来。不显示。查看流的信息后发现,帧确实收到了,但是没有时间戳,时间戳都是0.所以应该是哪里的时间戳出了问题。使用rtmp我没有采用他的扩展时间戳,是将毫秒级的时间%0xFFFFFF来做的,即到了24位的时间就归零。确实没看出什么问题。但是librtmp的内部其实已经针对时间戳和扩展时间戳做了处理。在 RTMP_SendPacket 中


中已经有了相关的超出0xFFFFFF时间的处理方式,所以其实直接赋值毫秒级时间戳即可。改正之后,貌似问题消失了。当然针对时间戳必须严格递增,音视频必须同一时

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值