「App:Library:LVGL:docs:3rd party libraries:FFmpeg support」の版間の差分

提供: robot-jp wiki
ナビゲーションに移動検索に移動
(ページの作成:「https://docs.lvgl.io/8.2/libs/ffmpeg.html __NOTOC__ {| class="wikitable" !英文 !自動翻訳 |- | | |} ---- :App:Library:LVGL:docs:3rd party libraries|戻る…」)
 
8行目: 8行目:
 
|
 
|
 
|}
 
|}
 +
 +
= FFmpeg support =
 +
FFmpeg A complete, cross-platform solution to record, convert and stream audio and video.
 +
 +
== Install FFmpeg ==
 +
 +
* Download FFmpeg from here
 +
* <code>./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</code>
 +
* <code>make</code>
 +
* <code>sudo make install</code>
 +
 +
== Add FFmpeg to your project ==
 +
 +
* Add library: <code>FFmpeg</code> (for GCC: <code>-lavformat -lavcodec -lavutil -lswscale -lm -lz -lpthread</code>)
 +
 +
== Usage ==
 +
Enable <code>LV_USE_FFMPEG</code> in <code>lv_conf.h</code>.
 +
 +
See the examples below.
 +
 +
Note that, the FFmpeg extension doesn't use LVGL's file system. You can simply pass the path to the image or video as usual on your operating system or platform.
 +
 +
== Example ==
 +
 +
=== Decode image ===
 +
[[ファイル:LVGL docs 3rdPartyLibs FFmpeg 01.png|サムネイル]]
 +
 +
 +
https://docs.lvgl.io/8.2/libs/ffmpeg.html#decode-image
 +
 +
----
 +
 +
=== Decode video ===
 +
https://docs.lvgl.io/8.2/libs/ffmpeg.html#decode-video
 +
 +
----
 +
 +
== API ==
 +
Enums
 +
 +
; <span id="_CPPv322lv_ffmpeg_player_cmd_t"></span><span id="_CPPv222lv_ffmpeg_player_cmd_t"></span><span id="lv__ffmpeg_8h_1a6b99f7ef5a3c69662a18f4af6822ae03" class="target"></span>enum lv_ffmpeg_player_cmd_t[https://docs.lvgl.io/8.2/libs/ffmpeg.html#_CPPv422lv_ffmpeg_player_cmd_t] <span id="_CPPv322lv_ffmpeg_player_cmd_t"></span><span id="_CPPv222lv_ffmpeg_player_cmd_t"></span><span id="lv__ffmpeg_8h_1a6b99f7ef5a3c69662a18f4af6822ae03" class="target"></span>
 +
: ''Values:''
 +
:; <span id="_CPPv3N22lv_ffmpeg_player_cmd_t26LV_FFMPEG_PLAYER_CMD_STARTE"></span><span id="_CPPv2N22lv_ffmpeg_player_cmd_t26LV_FFMPEG_PLAYER_CMD_STARTE"></span><span id="lv__ffmpeg_8h_1a6b99f7ef5a3c69662a18f4af6822ae03a3974e4171ff0f33aa02fe99cba7bfe59" class="target"></span>enumerator L[https://docs.lvgl.io/8.2/libs/ffmpeg.html#_CPPv422lv_ffmpeg_player_cmd_t]V_FFMPEG_PLAYER_CMD_START[https://docs.lvgl.io/8.2/libs/ffmpeg.html#_CPPv4N22lv_ffmpeg_player_cmd_t26LV_FFMPEG_PLAYER_CMD_STARTE] <span id="_CPPv3N22lv_ffmpeg_player_cmd_t26LV_FFMPEG_PLAYER_CMD_STARTE"></span><span id="_CPPv2N22lv_ffmpeg_player_cmd_t26LV_FFMPEG_PLAYER_CMD_STARTE"></span><span id="lv__ffmpeg_8h_1a6b99f7ef5a3c69662a18f4af6822ae03a3974e4171ff0f33aa02fe99cba7bfe59" class="target"></span>
 +
::
 +
:; <span id="_CPPv3N22lv_ffmpeg_player_cmd_t25LV_FFMPEG_PLAYER_CMD_STOPE"></span><span id="_CPPv2N22lv_ffmpeg_player_cmd_t25LV_FFMPEG_PLAYER_CMD_STOPE"></span><span id="lv__ffmpeg_8h_1a6b99f7ef5a3c69662a18f4af6822ae03ac2fb5bdc35bb424a136ffcc85d7d181b" class="target"></span>enumerator LV_FFMPEG_PLAYER[https://docs.lvgl.io/8.2/libs/ffmpeg.html#_CPPv4N22lv_ffmpeg_player_cmd_t26LV_FFMPEG_PLAYER_CMD_STARTE]_CMD_STOP[https://docs.lvgl.io/8.2/libs/ffmpeg.html#_CPPv4N22lv_ffmpeg_player_cmd_t25LV_FFMPEG_PLAYER_CMD_STOPE] <span id="_CPPv3N22lv_ffmpeg_player_cmd_t25LV_FFMPEG_PLAYER_CMD_STOPE"></span><span id="_CPPv2N22lv_ffmpeg_player_cmd_t25LV_FFMPEG_PLAYER_CMD_STOPE"></span><span id="lv__ffmpeg_8h_1a6b99f7ef5a3c69662a18f4af6822ae03ac2fb5bdc35bb424a136ffcc85d7d181b" class="target"></span>
 +
::
 +
:; <span id="_CPPv3N22lv_ffmpeg_player_cmd_t26LV_FFMPEG_PLAYER_CMD_PAUSEE"></span><span id="_CPPv2N22lv_ffmpeg_player_cmd_t26LV_FFMPEG_PLAYER_CMD_PAUSEE"></span><span id="lv__ffmpeg_8h_1a6b99f7ef5a3c69662a18f4af6822ae03ac6b90ccf1b49220ed98cd8ac9fb7cf26" class="target"></span>enumerator LV_FFMPEG_PLAYE[https://docs.lvgl.io/8.2/libs/ffmpeg.html#_CPPv4N22lv_ffmpeg_player_cmd_t25LV_FFMPEG_PLAYER_CMD_STOPE]R_CMD_PAUSE[https://docs.lvgl.io/8.2/libs/ffmpeg.html#_CPPv4N22lv_ffmpeg_player_cmd_t26LV_FFMPEG_PLAYER_CMD_PAUSEE] <span id="_CPPv3N22lv_ffmpeg_player_cmd_t26LV_FFMPEG_PLAYER_CMD_PAUSEE"></span><span id="_CPPv2N22lv_ffmpeg_player_cmd_t26LV_FFMPEG_PLAYER_CMD_PAUSEE"></span><span id="lv__ffmpeg_8h_1a6b99f7ef5a3c69662a18f4af6822ae03ac6b90ccf1b49220ed98cd8ac9fb7cf26" class="target"></span>
 +
::
 +
:; <span id="_CPPv3N22lv_ffmpeg_player_cmd_t27LV_FFMPEG_PLAYER_CMD_RESUMEE"></span><span id="_CPPv2N22lv_ffmpeg_player_cmd_t27LV_FFMPEG_PLAYER_CMD_RESUMEE"></span><span id="lv__ffmpeg_8h_1a6b99f7ef5a3c69662a18f4af6822ae03a1819d17160123ca945ae2e2153d8f49d" class="target"></span>enumerator LV_FFMPEG_PLAYER[https://docs.lvgl.io/8.2/libs/ffmpeg.html#_CPPv4N22lv_ffmpeg_player_cmd_t26LV_FFMPEG_PLAYER_CMD_PAUSEE]_CMD_RESUME[https://docs.lvgl.io/8.2/libs/ffmpeg.html#_CPPv4N22lv_ffmpeg_player_cmd_t27LV_FFMPEG_PLAYER_CMD_RESUMEE] <span id="_CPPv3N22lv_ffmpeg_player_cmd_t27LV_FFMPEG_PLAYER_CMD_RESUMEE"></span><span id="_CPPv2N22lv_ffmpeg_player_cmd_t27LV_FFMPEG_PLAYER_CMD_RESUMEE"></span><span id="lv__ffmpeg_8h_1a6b99f7ef5a3c69662a18f4af6822ae03a1819d17160123ca945ae2e2153d8f49d" class="target"></span>
 +
::
 +
:; <span id="_CPPv3N22lv_ffmpeg_player_cmd_t26_LV_FFMPEG_PLAYER_CMD_LASTE"></span><span id="_CPPv2N22lv_ffmpeg_player_cmd_t26_LV_FFMPEG_PLAYER_CMD_LASTE"></span><span id="lv__ffmpeg_8h_1a6b99f7ef5a3c69662a18f4af6822ae03a86a9ab5a0475b1a547d1d4f0f5db51ce" class="target"></span>enumerator _LV_FFMPEG_PLAYER[https://docs.lvgl.io/8.2/libs/ffmpeg.html#_CPPv4N22lv_ffmpeg_player_cmd_t27LV_FFMPEG_PLAYER_CMD_RESUMEE]_CMD_LAST[https://docs.lvgl.io/8.2/libs/ffmpeg.html#_CPPv4N22lv_ffmpeg_player_cmd_t26_LV_FFMPEG_PLAYER_CMD_LASTE] <span id="_CPPv3N22lv_ffmpeg_player_cmd_t26_LV_FFMPEG_PLAYER_CMD_LASTE"></span><span id="_CPPv2N22lv_ffmpeg_player_cmd_t26_LV_FFMPEG_PLAYER_CMD_LASTE"></span><span id="lv__ffmpeg_8h_1a6b99f7ef5a3c69662a18f4af6822ae03a86a9ab5a0475b1a547d1d4f0f5db51ce" class="target"></span>
 +
::
 +
 +
Functions
 +
 +
; <span id="_CPPv314lv_ffmpeg_initv"></span><span id="_CPPv214lv_ffmpeg_initv"></span><span id="lv_ffmpeg_init__void"></span><span id="lv__ffmpeg_8h_1afc79954212a779bb104b65e1e6427239" class="target"></span>void lv_ffmpeg[https://docs.lvgl.io/8.2/libs/ffmpeg.html#_CPPv4N22lv_ffmpeg_player_cmd_t26_LV_FFMPEG_PLAYER_CMD_LASTE]_init(void)[https://docs.lvgl.io/8.2/libs/ffmpeg.html#_CPPv414lv_ffmpeg_initv] <span id="_CPPv314lv_ffmpeg_initv"></span><span id="_CPPv214lv_ffmpeg_initv"></span><span id="lv_ffmpeg_init__void"></span><span id="lv__ffmpeg_8h_1afc79954212a779bb104b65e1e6427239" class="target"></span>
 +
: Register FFMPEG image[https://docs.lvgl.io/8.2/libs/ffmpeg.html#_CPPv414lv_ffmpeg_initv] decoder
 +
 +
; <span id="_CPPv323lv_ffmpeg_get_frame_numPKc"></span><span id="_CPPv223lv_ffmpeg_get_frame_numPKc"></span><span id="lv_ffmpeg_get_frame_num__cCP"></span><span id="lv__ffmpeg_8h_1ab56507f7daa908a049d4118db3592eea" class="target"></span>int lv_ffmpeg_get_frame_num(const char *path)[https://docs.lvgl.io/8.2/libs/ffmpeg.html#_CPPv423lv_ffmpeg_get_frame_numPKc] <span id="_CPPv323lv_ffmpeg_get_frame_numPKc"></span><span id="_CPPv223lv_ffmpeg_get_frame_numPKc"></span><span id="lv_ffmpeg_get_frame_num__cCP"></span><span id="lv__ffmpeg_8h_1ab56507f7daa908a049d4118db3592eea" class="target"></span>
 +
: Get the number of frames contained in the[https://docs.lvgl.io/8.2/libs/ffmpeg.html#_CPPv423lv_ffmpeg_get_frame_numPKc] file
 +
:; Parameters
 +
:: path -- image or video file name
 +
:; Returns
 +
:: Number of frames, less than 0 means failed
 +
 +
; <span id="_CPPv323lv_ffmpeg_player_createP8lv_obj_t"></span><span id="_CPPv223lv_ffmpeg_player_createP8lv_obj_t"></span><span id="lv_ffmpeg_player_create__lv_obj_tP"></span><span id="lv__ffmpeg_8h_1aafbf8ce148637731ed6c2b9a78eb051d" class="target"></span>lv_obj_t *lv_ffmpeg_player_create(lv_obj_t *parent)[https://docs.lvgl.io/8.2/libs/ffmpeg.html#_CPPv423lv_ffmpeg_player_createP8lv_obj_t] <span id="_CPPv323lv_ffmpeg_player_createP8lv_obj_t"></span><span id="_CPPv223lv_ffmpeg_player_createP8lv_obj_t"></span><span id="lv_ffmpeg_player_create__lv_obj_tP"></span><span id="lv__ffmpeg_8h_1aafbf8ce148637731ed6c2b9a78eb051d" class="target"></span>
 +
: Create ffmpeg_player object
 +
:; Parameters
 +
:: pa[https://docs.lvgl.io/8.2/libs/ffmpeg.html#_CPPv423lv_ffmpeg_player_createP8lv_obj_t]rent -- pointer to an object, it will be the parent of the new player
 +
:; Returns
 +
:: pointer to the created ffmpeg_player
 +
 +
; <span id="_CPPv324lv_ffmpeg_player_set_srcP8lv_obj_tPKc"></span><span id="_CPPv224lv_ffmpeg_player_set_srcP8lv_obj_tPKc"></span><span id="lv_ffmpeg_player_set_src__lv_obj_tP.cCP"></span><span id="lv__ffmpeg_8h_1a1fad8be1019b63dd587ef5e71bfcc440" class="target"></span>lv_res_t lv_ffmpeg_player_set_src(lv_obj_t *obj, const char *path)[https://docs.lvgl.io/8.2/libs/ffmpeg.html#_CPPv424lv_ffmpeg_player_set_srcP8lv_obj_tPKc] <span id="_CPPv324lv_ffmpeg_player_set_srcP8lv_obj_tPKc"></span><span id="_CPPv224lv_ffmpeg_player_set_srcP8lv_obj_tPKc"></span><span id="lv_ffmpeg_player_set_src__lv_obj_tP.cCP"></span><span id="lv__ffmpeg_8h_1a1fad8be1019b63dd587ef5e71bfcc440" class="target"></span>
 +
: Set the path of the file to be played
 +
:; Parameters
 +
::* obj -[https://docs.lvgl.io/8.2/libs/ffmpeg.html#_CPPv424lv_ffmpeg_player_set_srcP8lv_obj_tPKc]- pointer to a ffmpeg_player object
 +
::* path -- video file path
 +
:; Returns
 +
:: LV_RES_OK: no error; LV_RES_INV: can't get the info.
 +
 +
; <span id="_CPPv324lv_ffmpeg_player_set_cmdP8lv_obj_t22lv_ffmpeg_player_cmd_t"></span><span id="_CPPv224lv_ffmpeg_player_set_cmdP8lv_obj_t22lv_ffmpeg_player_cmd_t"></span><span id="lv_ffmpeg_player_set_cmd__lv_obj_tP.lv_ffmpeg_player_cmd_t"></span><span id="lv__ffmpeg_8h_1ab0c15e9a56343449fbfd8fb241982e2f" class="target"></span>void lv_ffmpeg_player_set_cmd(lv_obj_t *obj, lv_ffmpeg_player_cmd_t cmd)[https://docs.lvgl.io/8.2/libs/ffmpeg.html#_CPPv424lv_ffmpeg_player_set_cmdP8lv_obj_t22lv_ffmpeg_player_cmd_t] <span id="_CPPv324lv_ffmpeg_player_set_cmdP8lv_obj_t22lv_ffmpeg_player_cmd_t"></span><span id="_CPPv224lv_ffmpeg_player_set_cmdP8lv_obj_t22lv_ffmpeg_player_cmd_t"></span><span id="lv_ffmpeg_player_set_cmd__lv_obj_tP.lv_ffmpeg_player_cmd_t"></span><span id="lv__ffmpeg_8h_1ab0c15e9a56343449fbfd8fb241982e2f" class="target"></span>
 +
: Set command control video player
 +
:; Parameters
 +
::* obj -- pointer t[https://docs.lvgl.io/8.2/libs/ffmpeg.html#_CPPv424lv_ffmpeg_player_set_cmdP8lv_obj_t22lv_ffmpeg_player_cmd_t]o a ffmpeg_player object
 +
::* cmd -- control commands
 +
 +
; <span id="_CPPv333lv_ffmpeg_player_set_auto_restartP8lv_obj_tb"></span><span id="_CPPv233lv_ffmpeg_player_set_auto_restartP8lv_obj_tb"></span><span id="lv_ffmpeg_player_set_auto_restart__lv_obj_tP.b"></span><span id="lv__ffmpeg_8h_1aa08e96785ec2989358fa6a2c8917dd65" class="target"></span>void lv_ffmpeg_player_set_auto_restart(lv_obj_t *obj, bool en)[https://docs.lvgl.io/8.2/libs/ffmpeg.html#_CPPv433lv_ffmpeg_player_set_auto_restartP8lv_obj_tb] <span id="_CPPv333lv_ffmpeg_player_set_auto_restartP8lv_obj_tb"></span><span id="_CPPv233lv_ffmpeg_player_set_auto_restartP8lv_obj_tb"></span><span id="lv_ffmpeg_player_set_auto_restart__lv_obj_tP.b"></span><span id="lv__ffmpeg_8h_1aa08e96785ec2989358fa6a2c8917dd65" class="target"></span>
 +
: Set the video to automatically replay
 +
:; Parameters
 +
::* o[https://docs.lvgl.io/8.2/libs/ffmpeg.html#_CPPv433lv_ffmpeg_player_set_auto_restartP8lv_obj_tb]bj -- pointer to a ffmpeg_player object
 +
::* en -- true: enable the auto restart
 +
 +
Variables
 +
 +
; <span id="_CPPv322lv_ffmpeg_player_class"></span><span id="_CPPv222lv_ffmpeg_player_class"></span><span id="lv_ffmpeg_player_class__lv_obj_class_tC"></span><span id="lv__ffmpeg_8h_1a43ad7afa4eed61882d7aae07b06c2745" class="target"></span>const lv_obj_class_t lv_ffmpeg_player_class[https://docs.lvgl.io/8.2/libs/ffmpeg.html#_CPPv422lv_ffmpeg_player_class] <span id="_CPPv322lv_ffmpeg_player_class"></span><span id="_CPPv222lv_ffmpeg_player_class"></span><span id="lv_ffmpeg_player_class__lv_obj_class_tC"></span><span id="lv__ffmpeg_8h_1a43ad7afa4eed61882d7aae07b06c2745" class="target"></span>
 +
:
 +
 +
; <span id="_CPPv318lv_ffmpeg_player_t"></span><span id="_CPPv218lv_ffmpeg_player_t"></span><span id="lv_ffmpeg_player_t"></span><span id="structlv__ffmpeg__player__t" class="target"></span>struct lv_ffmpeg_player_t[https://docs.lvgl.io/8.2/libs/ffmpeg.html#_CPPv418lv_ffmpeg_player_t] <span id="_CPPv318lv_ffmpeg_player_t"></span><span id="_CPPv218lv_ffmpeg_player_t"></span><span id="lv_ffmpeg_player_t"></span><span id="structlv__ffmpeg__player__t" class="target"></span>
 +
: Pu[https://docs.lvgl.io/8.2/libs/ffmpeg.html#_CPPv422lv_ffmpeg_player_class]blic Members
 +
:; <span id="_CPPv3N18lv_ffmpeg_player_t3imgE"></span><span id="_CPPv2N18lv_ffmpeg_player_t3imgE"></span><span id="lv_ffmpeg_player_t::img__lv_img_t"></span><span id="structlv__ffmpeg__player__t_1a5fc9a7b172bae6264bebca8f7907fb50" class="target"></span>lv_[https://docs.lvgl.io/8.2/libs/ffmpeg.html#_CPPv418lv_ffmpeg_player_t]img_t img[https://docs.lvgl.io/8.2/libs/ffmpeg.html#_CPPv4N18lv_ffmpeg_player_t3imgE] <span id="_CPPv3N18lv_ffmpeg_player_t3imgE"></span><span id="_CPPv2N18lv_ffmpeg_player_t3imgE"></span><span id="lv_ffmpeg_player_t::img__lv_img_t"></span><span id="structlv__ffmpeg__player__t_1a5fc9a7b172bae6264bebca8f7907fb50" class="target"></span>
 +
::
 +
:; <span id="_CPPv3N18lv_ffmpeg_player_t5timerE"></span><span id="_CPPv2N18lv_ffmpeg_player_t5timerE"></span><span id="lv_ffmpeg_player_t::timer__lv_timer_tP"></span><span id="structlv__ffmpeg__player__t_1ac2890dc7a7012d353e3ed5261f9bcaec" class="target"></span>lv[https://docs.lvgl.io/8.2/libs/ffmpeg.html#_CPPv4N18lv_ffmpeg_player_t3imgE]_timer_t *timer[https://docs.lvgl.io/8.2/libs/ffmpeg.html#_CPPv4N18lv_ffmpeg_player_t5timerE] <span id="_CPPv3N18lv_ffmpeg_player_t5timerE"></span><span id="_CPPv2N18lv_ffmpeg_player_t5timerE"></span><span id="lv_ffmpeg_player_t::timer__lv_timer_tP"></span><span id="structlv__ffmpeg__player__t_1ac2890dc7a7012d353e3ed5261f9bcaec" class="target"></span>
 +
::
 +
:; <span id="_CPPv3N18lv_ffmpeg_player_t6imgdscE"></span><span id="_CPPv2N18lv_ffmpeg_player_t6imgdscE"></span><span id="lv_ffmpeg_player_t::imgdsc__lv_img_dsc_t"></span><span id="structlv__ffmpeg__player__t_1a952543edb55aa056d0ace73123ced141" class="target"></span>lv_img_[https://docs.lvgl.io/8.2/libs/ffmpeg.html#_CPPv4N18lv_ffmpeg_player_t5timerE]dsc_t imgdsc[https://docs.lvgl.io/8.2/libs/ffmpeg.html#_CPPv4N18lv_ffmpeg_player_t6imgdscE] <span id="_CPPv3N18lv_ffmpeg_player_t6imgdscE"></span><span id="_CPPv2N18lv_ffmpeg_player_t6imgdscE"></span><span id="lv_ffmpeg_player_t::imgdsc__lv_img_dsc_t"></span><span id="structlv__ffmpeg__player__t_1a952543edb55aa056d0ace73123ced141" class="target"></span>
 +
::
 +
:; <span id="_CPPv3N18lv_ffmpeg_player_t12auto_restartE"></span><span id="_CPPv2N18lv_ffmpeg_player_t12auto_restartE"></span><span id="lv_ffmpeg_player_t::auto_restart__b"></span><span id="structlv__ffmpeg__player__t_1ae9efd4095b8d9740e9eb3598be8e7478" class="target"></span>bool auto[https://docs.lvgl.io/8.2/libs/ffmpeg.html#_CPPv4N18lv_ffmpeg_player_t6imgdscE]_restart[https://docs.lvgl.io/8.2/libs/ffmpeg.html#_CPPv4N18lv_ffmpeg_player_t12auto_restartE] <span id="_CPPv3N18lv_ffmpeg_player_t12auto_restartE"></span><span id="_CPPv2N18lv_ffmpeg_player_t12auto_restartE"></span><span id="lv_ffmpeg_player_t::auto_restart__b"></span><span id="structlv__ffmpeg__player__t_1ae9efd4095b8d9740e9eb3598be8e7478" class="target"></span>
 +
::
 +
:; <span id="_CPPv3N18lv_ffmpeg_player_t10ffmpeg_ctxE"></span><span id="_CPPv2N18lv_ffmpeg_player_t10ffmpeg_ctxE"></span><span id="lv_ffmpeg_player_t::ffmpeg_ctx__ffmpeg_context_sP"></span><span id="structlv__ffmpeg__player__t_1a1c0af404947bcc90f15893162601a36c" class="target"></span>struct [https://docs.lvgl.io/8.2/libs/ffmpeg.html#_CPPv4N18lv_ffmpeg_player_t12auto_restartE]ffmpeg_context_s *ffmpeg_ctx
 +
  
  

2022年6月28日 (火) 12:47時点における版

https://docs.lvgl.io/8.2/libs/ffmpeg.html

英文 自動翻訳

FFmpeg support

FFmpeg A complete, cross-platform solution to record, convert and stream audio and video.

Install FFmpeg

  • Download FFmpeg from here
  • ./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
  • sudo make install

Add FFmpeg to your project

  • Add library: FFmpeg (for GCC: -lavformat -lavcodec -lavutil -lswscale -lm -lz -lpthread)

Usage

Enable LV_USE_FFMPEG in lv_conf.h.

See the examples below.

Note that, the FFmpeg extension doesn't use LVGL's file system. You can simply pass the path to the image or video as usual on your operating system or platform.

Example

Decode image

LVGL docs 3rdPartyLibs FFmpeg 01.png


https://docs.lvgl.io/8.2/libs/ffmpeg.html#decode-image


Decode video

https://docs.lvgl.io/8.2/libs/ffmpeg.html#decode-video


API

Enums

enum lv_ffmpeg_player_cmd_t[1]
Values:
enumerator L[2]V_FFMPEG_PLAYER_CMD_START[3]
enumerator LV_FFMPEG_PLAYER[4]_CMD_STOP[5]
enumerator LV_FFMPEG_PLAYE[6]R_CMD_PAUSE[7]
enumerator LV_FFMPEG_PLAYER[8]_CMD_RESUME[9]
enumerator _LV_FFMPEG_PLAYER[10]_CMD_LAST[11]

Functions

void lv_ffmpeg[12]_init(void)[13]
Register FFMPEG image[14] decoder
int lv_ffmpeg_get_frame_num(const char *path)[15]
Get the number of frames contained in the[16] file
Parameters
path -- image or video file name
Returns
Number of frames, less than 0 means failed
lv_obj_t *lv_ffmpeg_player_create(lv_obj_t *parent)[17]
Create ffmpeg_player object
Parameters
pa[18]rent -- pointer to an object, it will be the parent of the new player
Returns
pointer to the created ffmpeg_player
lv_res_t lv_ffmpeg_player_set_src(lv_obj_t *obj, const char *path)[19]
Set the path of the file to be played
Parameters
  • obj -[20]- pointer to a ffmpeg_player object
  • path -- video file path
Returns
LV_RES_OK: no error; LV_RES_INV: can't get the info.
void lv_ffmpeg_player_set_cmd(lv_obj_t *obj, lv_ffmpeg_player_cmd_t cmd)[21]
Set command control video player
Parameters
  • obj -- pointer t[22]o a ffmpeg_player object
  • cmd -- control commands
void lv_ffmpeg_player_set_auto_restart(lv_obj_t *obj, bool en)[23]
Set the video to automatically replay
Parameters
  • o[24]bj -- pointer to a ffmpeg_player object
  • en -- true: enable the auto restart

Variables

const lv_obj_class_t lv_ffmpeg_player_class[25]
struct lv_ffmpeg_player_t[26]
Pu[27]blic Members
lv_[28]img_t img[29]
lv[30]_timer_t *timer[31]
lv_img_[32]dsc_t imgdsc[33]
bool auto[34]_restart[35]
struct [36]ffmpeg_context_s *ffmpeg_ctx






戻る : Previous