作者Arton0306 (Ar藤)
看板Programming
标题[问题] 解码影片并播放
时间Fri May 25 15:11:56 2012
小弟最近用libav(ffmpeg)写一个简单的播放器(用qt作gui)
目前已经可以解出 video audio packet
现在要同步播放出来
但在这中间有个问题 - 要怎麽处理读(play thread)写(decode thread)packet的问题
假设我什麽都不管 就一直解码存到两thread的共用buffer
(buffer指两个fifo)
1秒20张ppm一定会把buffer炸掉
所以我目前想法是这样:
play thread 在buffer中会不断把audio packet读进来 这qt有个物件可以吃pcm stream
并根据video frame的时间适当画出来
比较麻烦的是decode
decode要知道play thread播放到哪
根据这时间来决定要不要decode
我想根据audio/video fifo中最大时间 - 播放时间
如果小於5个1/fps
就解5个packet
否则sleep 5msec
以上是我的想法 尚未实作
不知一般播放器是不是有个既有的经典pattern?
如果没有的话 我就先造我的方式coding
感谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 203.192.162.252
※ 编辑: Arton0306 来自: 203.192.162.252 (05/25 15:18)
1F:推 cobrasgo:还是你分两个process,用IPC来连? 220.135.237.56 05/25 17:26
2F:推 popcorny:试试producer consumer pattern220.135.251.162 05/28 10:21