【发布时间】:2016-08-07 22:37:03
【问题描述】:
我正在使用ffmpeg 库创建一个非常基本的视频播放器,并且我已经完成了所有的解码和重新编码,但我被困在音频视频同步上。
我的问题是,电影的音频和视频流混合(交织),音频和视频以“突发”(多个音频包,然后是并列的视频帧)的方式出现,就像这样,其中 每个数据包都有自己的时间戳:
A A A A A A A A V V V V A A A A A A A V V V V ...
A: decoded and re-encoded audio data chunk
V: decoded and re-encoded video frame
据说是为了防止在没有视频的情况下处理太多音频,反之亦然。
现在我必须对“突发”进行解码,并及时将它们发送到音频/视频播放组件,我有点迷失在细节上。
- 是否有“标准”策略/范式/模式来应对此类问题?
- 是否有解释使用技术的教程/文档/书籍?
- 在一部编码良好的电影中,多路复用能走多远?
因为我不期待这样的事情:
AAAAAAAAAAA .... AAAAAAAAAAAAA x10000 VVVVVVVVVVVVVV x1000
audio for the whole clip followed by video
或者这个:
VVVVVVVVVVVV x1000 AAAAAAAAAAA...AAAAAAAAA x1000
all video frames followed by the audio
发生在编码良好的视频中(毕竟,防止这种极端情况是复用的全部意义所在......)
谢谢!
更新:由于我的描述可能不清楚,问题不在于流是如何,或者如何解码它们:整个音频/视频解复用、解码、重新缩放和重新编码已设置好,每块数据都有自己的时间戳。
我的问题是如何处理解码后的数据,而不会导致缓冲区溢出和欠载,并且通常会堵塞我的管道,所以我想这可能被认为是“调度”问题。
【问题讨论】:
-
你解决了这个问题我有一个类似的问题试图同步多个流我有他们的时间戳,它的相对经过时间。
-
@Teocci 我没有,我只是暂时搁置了这个问题,我会再次解决手动 A/V 解码问题,抱歉!
标签: audio video ffmpeg playback