FFmpeg support
A complete, cross-platform solution to record, convert and stream audio and video.
Detailed introduction: https://www.ffmpeg.org
Install FFmpeg
Download first FFmpeg from here, then install it:
./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
The FFmpeg extension doesn't use LVGL's file system in
:cpp:`lv_ffmpeg_player_set_src`. You can
simply pass the path to the image or video as usual on your operating
system or platform.
The LVGL file system will always be used when an image is
loaded with lv_image_set_src()
.
Example
Decode image
C code
View on 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)
{
/*It always uses the LVGL filesystem abstraction (not the OS filesystem)
*to open the image, unlike `lv_ffmpeg_player_set_src` which depends on
*the setting of `LV_FFMPEG_PLAYER_USE_LV_FS`.*/
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);
}
#else
void lv_example_ffmpeg_1(void)
{
/*TODO
*fallback for online examples*/
lv_obj_t * label = lv_label_create(lv_screen_active());
lv_label_set_text(label, "FFmpeg is not installed");
lv_obj_center(label);
}
#endif
#endif
Decode video
C code
View on 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*/
/*It will use the LVGL filesystem abstraction (not the OS filesystem)
*if `LV_FFMPEG_PLAYER_USE_LV_FS` is set.*/
lv_obj_t * player = lv_ffmpeg_player_create(lv_screen_active());
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_screen_active());
lv_label_set_text(label, "FFmpeg is not installed");
lv_obj_center(label);
}
#endif
#endif