如何解决如何实时解码ffmpeg中的视频?
基本的 ffmpeg 解码包括 avcodec_send_packet
发送编码数据包和 avcodec_receive_frame
接收解码帧。
avcodec_send_packet
返回 EAGAIN
以防它已满。也就是说,如果没有人调用 avcodec_receive_frame
。
假设我正在阅读一个 mp4 文件并在屏幕上呈现。也就是说,我想要实时播放视频。一种方法是告诉渲染器文件的确切 fps,例如:
如果文件应以 30 fps 播放,则渲染器每秒调用 avcodec_receive_frame
30 次,并且 avcodec_send_packet
仅在可能时发送新数据包。如果收到EAGAIN
,则等待并在 1 毫秒后再次发送,而不是丢弃数据包。
这是正确的做法吗?因为获取文件的 fps 并非易事。至少我从未在 ffmpeg 中看到过这个。也许 .mp4 文件有这些信息,但是原始的 .h264 文件呢? VLC 播放器可以在正确的时间播放原始 .h264,但我不知道它是如何做到的
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。