看板 Programming 關於我們 聯絡資訊
小弟最近用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