[問題] 解碼影片並播放
小弟最近用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)
推
05/25 17:26, , 1F
05/25 17:26, 1F
推
05/28 10:21, , 2F
05/28 10:21, 2F
討論串 (同標題文章)