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