我是一个新手,试图理解 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/