视频播放不正确,速度太快,说明pts有问题,网上找过计算的公式感觉套用不起来,播放还是不对。
有音视频开发的高手请指点下吧,万分感激!!!!
// 委托获取Packet数据
private unsafe void avPacketTodo(JT1078Codec codec, JTRTHead head, AVPacket* pkt)
{
// pts需要计算,公式:第n帧的pts = n * ((1 / timbase)/ fps)
/*
* 在解码视频流的时候对每一个视频帧都会有一个时间戳pts(显示时间戳)
* 得到这个pts的值,并记下最开始的一个pts值(pts_00)
*以后画面显示的时间就可以用当前播放的帧的时间戳(pts_now -pts_00)/90000获得了,单位是秒
*/
if (pts_00 == 0)
{
pts_00 = (ulong)head.RTTimeSpan;
tomp4.WriteFrame(pkt,0);
}
else
{
ulong pts = (ulong)(head.RTTimeSpan- pts_00) / 90000*1000;
tomp4.WriteFrame(pkt, (long)pts);
}
}