【C/C++】LibVLC库在逐帧提取的开发中回调设置帧格式
文章目錄
- 前言
- 一、應用場景
- 二、API介紹
- 1. libvlc_video_set_callbacks ()
- 2. libvlc_video_set_format ()
- 3. libvlc_video_set_format_callbacks ()
- 二、逐幀提取
- 1. 開發者設置幀格式
- 2. 回調設置幀格式
- 總結
前言
提示:libvlc_video_set_format_callbacks
在LibVLC對視頻媒體的逐幀提取開發中,void libvlc_video_set_format () 通常被開發者用來設置視頻的格式,但是不同視頻的格式是不同的,所以該函數是應用于用戶已知媒體視頻的格式,用戶進行手動設置。接下來我將介紹由libvlc提供的void libvlc_video_set_format_callbacks () 回調設置視頻的原始幀格式,該函數也可以幫助開發者在視頻媒體播放前獲取到幀格式。
提示:以下是本篇文章正文內容,下面案例可供參考
一、應用場景
當開發者需要對視頻媒體的幀進行處理、保存幀圖像、實現多屏播放等應用場景時,逐幀提取是一個關鍵的技術。libvlc幫我們實現了逐幀提取的相關API,理解這些API是實現上述場景的核心。
二、API介紹
您可在https://videolan.videolan.me/vlc/group__libvlc__media__player.html#ga612605f2e5c638d9f4ed59021d714bf0查看這些API。
1. libvlc_video_set_callbacks ()
void libvlc_video_set_callbacks ( // 設置回調,將解碼后的幀渲染并存儲到內存中的自定義區域。libvlc_media_player_t * mp,libvlc_video_lock_cb lock,libvlc_video_unlock_cb unlock,libvlc_video_display_cb display,void * opaque )2. libvlc_video_set_format ()
void libvlc_video_set_format ( // 配置幀的解碼格式libvlc_media_player_t * mp, const char * chroma, unsigned width, unsigned height, unsigned pitch )3. libvlc_video_set_format_callbacks ()
版本:LibVLC 2.0.0 or later
libvlc_video_set_format_callbacks ( // 設置回調,配置幀的解碼格式libvlc_media_player_t * mp, libvlc_video_format_cb setup, libvlc_video_cleanup_cb cleanup )二、逐幀提取
1. 開發者設置幀格式
因為我看到很多的平臺都由相關的 libvlc_video_set_format () 使用介紹,所以在此我不再贅述。如果有需要,可以參考https://jishuin.proginn.com/p/763bfbd2afc3。
2. 回調設置幀格式
代碼如下(示例):
因為本人是在Qt + VLC的開發環境下,所以會使用部分Qt的工具,如果你是純C++開發者,你可以用C++相應的工具替換它們。
本人的開發環境:Linux、Qt、C++
總結
如果用戶需要對不同視頻媒體進行逐幀提取時,用戶需要重復設置不同的幀格式。因為保持相同的幀格式應用在不同的視頻媒體上,往往會帶來幀的橫向或縱向的拉伸。而回調設置幀格式的方法很好的解決了開發者手動設置幀格式的繁瑣和弊端。
希望您能仔細閱讀,因為發現和指正文章中的不足之處,是對我莫大的提升,謝謝!
總結
以上是生活随笔為你收集整理的【C/C++】LibVLC库在逐帧提取的开发中回调设置帧格式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 车辆控制知识总结(一):LQR算法
- 下一篇: c语言算除法会把小数转成整数,在C语言中