ffmpeg - 每秒帧数 概念细节

标签 ffmpeg libavcodec libavformat

我是一个新手,试图理解 ffmpeg/video 背后的概念。

FPS 表示每秒帧数,例如

25fps -> 25 frames captured in a second

从显示角度
25 frames need to be displayed in a second.

如果我错了,请纠正我?

现在我已经在 ffmpeg 中编写了一个简单的视频播放器来显示。我读
av_read_frame() 的帧,如果 fps 为 25,则
 av_read_frame()

每秒返回 25 帧?我怎么能把它联系起来?

最佳答案

读取和写入操作不必遵守相关流的数据速率。相反,它们会尽快发生,不会有任何延迟。毕竟,如果您对文件进行转码,您通常对以 100% 的播放速度执行它不感兴趣,您更有可能对快速完成它感兴趣,尽可能快地读取、写入、编码等允许。

任何生成内容的源都有兴趣为其添加正确的时间戳,附加帧速率和单独的时间戳,以便播放可以准确地再现流,包括相对于其他流(“lipsync”)。

任何演示系统都有兴趣在考虑时间戳的情况下呈现数据,如果/在必要时添加延迟和空闲时间,以便回放准确。

介于两者之间的所有其他内容,包括 av_read_frame , 只关心不丢失附加到数据的时间,并且没有任何延迟地执行(如果 av_read_frame 每秒返回尽可能多的帧数)。

关于ffmpeg - 每秒帧数 概念细节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22009665/

相关文章:

ffmpeg - 通过 libavformat 流式传输后显示视频流的延迟

c++ - ffmpeg和代码生成的碎片化mp4文件的区别

ffmpeg - 运行 FFmpeg 命令后无法播放的视频

vb.net - 在 VB 中使用计时器为 Windows 桌面背景设置动画

bash - 为什么我的 bash 脚本因 ffmpeg 而停止?

c - 删除视频的某些部分并重新制作关键帧(c++ + libav)

c++ - 视频播放器问题

ffmpeg - 记录传入的 mjpeg 流?

FFMPEG:是否有可能在新 API 中获得 coded_width?

ffmpeg - FMP4 moof box序列号排序