作者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)
推 cobrasgo:還是你分兩個process,用IPC來連? 220.135.237.56 05/25 17:26
推 popcorny:試試producer consumer pattern220.135.251.162 05/28 10:21