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¶
C code
GitHub#include "../../lv_examples.h"
#if LV_BUILD_EXAMPLES
#if LV_USE_FFMPEG
/**
* Open an image from a file
*/
void lv_example_ffmpeg_1(void)
{
lv_obj_t * img = lv_img_create(lv_scr_act());
lv_img_set_src(img, "./lvgl/examples/libs/ffmpeg/ffmpeg.png");
lv_obj_center(img);
}
#else
void lv_example_ffmpeg_1(void)
{
/*TODO
*fallback for online examples*/
lv_obj_t * label = lv_label_create(lv_scr_act());
lv_label_set_text(label, "FFmpeg is not installed");
lv_obj_center(label);
}
#endif
#endif
Error encountered while trying to open /home/runner/work/100ask_lvgl_docs/100ask_lvgl_docs/examples/libs/ffmpeg/lv_example_ffmpeg_1.py
Decode video¶
C code
GitHub#include "../../lv_examples.h"
#if LV_BUILD_EXAMPLES
#if LV_USE_FFMPEG
/**
* Open a video from a file
*/
void lv_example_ffmpeg_2(void)
{
/*birds.mp4 is downloaded from http://www.videezy.com (Free Stock Footage by Videezy!)
*https://www.videezy.com/abstract/44864-silhouettes-of-birds-over-the-sunset*/
lv_obj_t * player = lv_ffmpeg_player_create(lv_scr_act());
lv_ffmpeg_player_set_src(player, "./lvgl/examples/libs/ffmpeg/birds.mp4");
lv_ffmpeg_player_set_auto_restart(player, true);
lv_ffmpeg_player_set_cmd(player, LV_FFMPEG_PLAYER_CMD_START);
lv_obj_center(player);
}
#else
void lv_example_ffmpeg_2(void)
{
/*TODO
*fallback for online examples*/
lv_obj_t * label = lv_label_create(lv_scr_act());
lv_label_set_text(label, "FFmpeg is not installed");
lv_obj_center(label);
}
#endif
#endif
Error encountered while trying to open /home/runner/work/100ask_lvgl_docs/100ask_lvgl_docs/examples/libs/ffmpeg/lv_example_ffmpeg_2.py
API¶
Enums
Functions
-
void lv_ffmpeg_init(void)¶
Register FFMPEG image decoder
-
int lv_ffmpeg_get_frame_num(const char *path)¶
Get the number of frames contained in the 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)¶
Create ffmpeg_player object
- Parameters
parent -- 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)¶
Set the path of the file to be played
- Parameters
obj -- 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)¶
Set command control video player
- Parameters
obj -- pointer to a ffmpeg_player object
cmd -- control commands
Variables
-
const lv_obj_class_t lv_ffmpeg_player_class¶
-
struct lv_ffmpeg_player_t¶
Public Members
-
lv_timer_t *timer¶
-
lv_img_dsc_t imgdsc¶
-
bool auto_restart¶
-
struct ffmpeg_context_s *ffmpeg_ctx¶
-
lv_timer_t *timer¶