LVGL之FFmpeg使用

xjxcxjx發表於2024-08-26

FFmpeg是一個開源的多媒體框架,它可以處理各種音訊和影片格式的轉換、解碼、編碼和流處理。它提供了一套豐富的庫和工具,廣泛應用於影片點播、直播、多媒體處理、遊戲開發等領域。

FFmpeg的主要元件包括:

  1. libavformat - 用於音訊和影片的多媒體容器的多路複用和解複用。支援多種格式,如MP4、MKV、AVI等。
  2. libavcodec - 提供對許多流行編解碼器的訪問,包括H.264, H.265, VP9, MP3等。
  3. libavutil - 包含一些公共的工具函式,如隨機數生成器、資料結構等。
  4. libswscale - 用於顏色空間轉換和縮放的庫。
  5. libpostproc - 用於後期處理的庫,如去塊、去噪等。
  6. libavfilter - 用於建立和處理音訊和影片過濾器的框架。

FFmpeg的主要工具包括:

  • ffmpeg - 命令列工具,用於轉換、流處理和播放。
  • ffplay - 一個簡單的播放器,使用SDL庫。
  • ffprobe - 一個多媒體流分析工具。

LVGL官方文件給出了FFmpeg的使用方法,按照其指導一步一步來就能正常使用了

  1. 安裝FFmpeg
    #clone ffmpeg工程
    git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
    #進入工程目錄
    cd ffmpeg
    #配置工程
    ./configure --disable-all --disable-autodetect --disable-podpages --disable-asm --enable-avcodec --enable-avformat --enable-decoders --enable-encoders --enable-demuxers --enable-parsers --enable-protocol='file' --enable-swscale --enable-zlib
    

執行make

make

安裝ffmpeg

sudo make install
```
2. 將其新增到專案中

在CMakeList.txt中新增下面這句

target_link_libraries(${PROJECT_NAME} -lavformat -lavcodec -lavutil -lswscale -lm -lz -lpthread)
  1. 使用
/**
 * Open an image from a file
 */
void lv_example_ffmpeg_1(void)
{
    lv_obj_t * img = lv_image_create(lv_screen_active());
    lv_image_set_src(img, "./lvgl/examples/libs/ffmpeg/ffmpeg.png");
    lv_obj_center(img);
}

注意:
FFmpeg 擴充套件不使用 LVGL 的檔案系統。您可以只需像往常一樣在操作中傳遞影像或影片的路徑即可系統或平臺。
在使用PNG的時候,檔案目錄是這樣寫的:

#define PIC_BOOT_LODA_ADDR   "A:/home/.../picture/boot/%d.png"

而因為FFmpeg不使用LVGL的檔案系統,因此地址就不能帶磁碟機代號:

#define PIC_BOOT_LODA_ADDR   "/home/.../picture/boot/%d.png"

本文由部落格一文多發平臺 OpenWrite 釋出!

相關文章