如何实时解码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 (将#修改为@)