我需要將視頻播放器嵌入到我的程序(C++)中,但我無法使用XEmbed,因爲我必須執行一些後處理。 是否有可能將輸出作爲原始RGB寫入內存緩衝區,就像使用ffmpeg可以做到的一樣?如何使用mplayer播放內存
回答
不幸的是,mplayer無法作爲庫運行,但如果您願意對mplayer代碼進行一些更改,可能會出現一些黑客解決方案。這應該也適用於Windows和MacOSX,但需要一些適應。
下載mplayer來源並查找./libvo/vo_png.c
文件。你可以使用這個文件作爲模板並創建你自己的(比方說)./libvo/vo_shm.c
- 有一個函數可以獲取原始像素。這個想法是創建一個共享內存對象(man shmget
)。您可以稍後通過使用相同的鍵和shmget
調用另一個要顯示像素緩衝區的進程來引用此內存。請注意,您應該至少創建兩個內存緩衝區,以便一次只有一個進程使用一個緩衝區。也許甚至三個或更多的緩衝區將是最佳的。
也不要忘記更改static const vo_info_t info
結構初始化註冊視頻輸出設備作爲不同的名稱。據我所知,您的新vo_shm.c
可以被添加到構建系統config.mak
文件中。
祝你好運。
此外,還需要一個信號量IPC來管理對這些緩衝區的訪問+可能是一些共享控制寄存器。我知道,因爲我們已經在mplayer的基礎上在我們的項目中實現了框架。 – pmod
大量的Linux程序的嵌入的mplayer播放器(IIRC:GIMP間隙,等等k9copy)
我認爲,通常的做法是正確的嵌入你的X父窗口內從mplayer的一個子窗口。顯然,這是更容易在X11架構實現了比在Windows :)
man mplayer顯示:
mplayer -wid <windowId>
-guiwid <window id>
This tells the GUI to also use an X11 window and stick itself to the bottom of the video, which is useful to embed a mini-GUI in a browser (with the mplayerplug-in for instance).
-wid <window id>
This tells MPlayer to use a X11 window, which is useful to embed MPlayer in a browser (with the plugger extension for instance).
你可以(例如使用Qt應用程序),只需使用
mplayer -wid mywidget->winId();
因此,所有你需要的是
- 上mplayer的一個安裝相關性
- 人的execve /人的mplayer
- 1. 如何阻止mplayer通過python播放
- 2. 如何使用shell腳本創建MPlayer播放列表?
- 3. mplayer在全屏播放gif動畫?
- 4. 用於Web播放鏈視頻(Flash/HTML5廣告等同MPlayer的?)
- 5. 從內存播放列表的開放媒體播放器
- 6. 如何使用UITableViewController釋放內存
- 7. 如何釋放MediaElement使用的內存
- 8. 使用命令行選項在mplayer中播放特定間隔的視頻
- 9. 播放媒體(mplayer)的代理服務器,它是如何工作的?
- 10. 獲取MPlayer從模式下的當前播放文件
- 11. 如何使用AVAudioPlayer在iPhone/iPad上播放播放列表
- 12. 如何在播放中使用ORDERBY和findAll()播放
- 13. 如何使用YouTube JavaScript API播放播放列表
- 14. 媒體自動播放:如何使用iframe自動播放
- 15. 如何使用Python soco播放Sonos播放列表?
- 16. 如何使用媒體播放器播放和暫停音頻?
- 17. 如何讓媒體播放器*使用C#播放*?
- 18. 播放服務器內存使用情況
- 19. 在內存中播放html5視頻源
- 20. Spark:播放對象時內存不足
- 21. 播放內存中的wav/mp3
- 22. Flash視頻播放器內存問題
- 23. iOS從內存流中播放視頻
- 24. 如何釋放AudioFileReadPacketData使用的內存 - Xcode顯示仍在使用的內存
- 25. 如何使用wistia內聯播放器進行反應?
- 26. 如何使用simpleaudioengine在指定的時間內播放音頻
- 27. 如何使用YouTube iframe API播放VEVO內容?
- 28. 諾基亞Qt:如何從手機內存播放視頻?
- 29. 如何在C#中從內存流中播放MP3?
- 30. 如何從內部存儲播放mp3文件?
過於廣泛.. –
最後,我修改了ffplay(不是mplayer)來寫入共享內存。所以我有一個強大的玩家可以渲染共享內存。 (http://ffmpeg.org/ffplay.html) –