微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何实时解码ffmpeg中的视频?

如何解决如何实时解码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 举报,一经查实,本站将立刻删除。