boonya 2018-02-28 07:07 采纳率: 66.7%
浏览 2236
已采纳

已知视屏的加密时的pts时间戳,怎么计算播放时的pts?

视频播放不正确,速度太快,说明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);
            }

        }
  • 写回答

2条回答 默认 最新

  • 键盘舞者113 博客专家认证 2018-02-28 07:24
    关注

    enc_pkt.pts = count * (video_st->time_base.den) / ((video_st->time_base.num) * fps);

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已采纳回答 12月15日

悬赏问题

  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题
  • ¥15 FPGA-SRIO初始化失败
  • ¥15 MapReduce实现倒排索引失败
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码
  • ¥50 随机森林与房贷信用风险模型
  • ¥50 buildozer打包kivy app失败