美文网首页
live555利用ffmpeg读取源文件的若干问题

live555利用ffmpeg读取源文件的若干问题

作者: 叶迎宪 | 来源:发表于2018-08-25 17:56 被阅读0次

    一、文件中H.264码流没有sps、pps怎么办?

    一般在MP4文件中,sps、pps是单独存放在文件头的AVCC中,文件中的码流是不含sps、pps的。如果用常规的方法使用live555,会导致RTPSink一直无法创建SDP,从而使DESCRIBE命令无法响应客户端。正确的做法是在 ServerMediaSubsession::createNewRTPSink 中使用
    createNew(UsageEnvironment& env, Groupsock* RTPgs, unsigned char rtpPayloadFormat,
    u_int8_t const* sps, unsigned spsSize, u_int8_t const* pps, unsigned ppsSize);
    这种形式的重载,在创建RTPSink的时候就传入sps、pps

    解析AVCC的代码可以参考MatroskaFile
    ::createRTPSinkForTrackNumber

    二、读取下一帧时间控制问题

    要实现读取完一帧以后,休息一段时间再读取下一帧,有两种方法:一、使用 nextTask() = envir().taskScheduler().scheduleDelayedTask 定时器触发下一次deliverFrame;二、需要休息的时候,在deliverFrame中设置fDurationInMicroseconds,则live555会自动生成定时任务读取下一帧

    相关文章

      网友评论

          本文标题:live555利用ffmpeg读取源文件的若干问题

          本文链接:https://www.haomeiwen.com/subject/izmgiftx.html