zoukankan      html  css  js  c++  java
  • 用ffmpeg4.x AV_CODEC_ID_H264编码器将yuv数据转换成h264有B帧问题解决

    H.265技术在码率上进行了深度优化,同等画质下,可以比H.264节省近50%的码率,使存储成本大大降低。我们流媒体服务器和流媒体播放器都将会趋向于H265编码,之前我们实现了H265编码的播放:EasyRTMP-Android使用H265编码流程,而现在我们也实现了RTSP/Onvif网络摄像头流媒体服务器播放H265编码视频。

    本文我们暂时不讨论H265,我们来讲一下有用户遇到的关于ffmpeg4.x AV_CODEC_ID_H264编码器将yuv数据转换成h264的问题。

    有开发者用ffmpeg4.x AV_CODEC_ID_H264编码器将yuv数据转换成h264,转换成的h264里面有B帧,将h264转换成mp4,再将yuv转换成h264的时候是设置了pts和dts的,但是转成h264后,pts和dts都没了,再将h264转换成mp4的时候还得重新设置pts和dts,但是流里面有B帧,因此pts和dts不能设置成一样的,这位开发者无法解决此问题。

    这是因为h264文件里是不会把pts写进去的,dts也不会,但是他是按照dts的顺序写进去的,可以在avframe里设置好pts,然后出来avpacket以后,直接把avpacket写到文件里。

    后来我们跟这块有了解的同事沟通了一下,将h264直接存mp4,发现里面没有I帧,播放器可能无法播放,但是同样代码换到ffmpeg3.x上就都能播放。

  • 相关阅读:
    项目工作总结 (转)
    mysql-笔记 操作语句
    QTP自动化测试-excel sheet页数量过多--但是不能在qtp里被识别
    mysql-笔记 定义语句
    HDU
    CodeForces
    CodeForces
    CodeForces
    CodeForces
    CodeForces
  • 原文地址:https://www.cnblogs.com/TSINGSEE/p/12910158.html
Copyright © 2011-2022 走看看