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

#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_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
#!/opt/bin/lv_micropython-ffmpeg -i
import sys
import lvgl as lv
import display_driver

try:
    #
    # Open an image from a file
    #
    image = lv.image(lv.screen_active())
    image.set_src("ffmpeg.png")
    image.center()
except Exception as e:
    print(e)
    # TODO
    # fallback for online examples

    label = lv.label(lv.screen_active())
    label.set_text("FFmpeg is not installed")
    label.center()


Decode video

#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_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
#!/opt/bin/lv_micropython-ffmpeg -i
import sys
import lvgl as lv
import display_driver

#
# Open a video from a file
#

# 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
player = lv.ffmpeg_player(lv.screen_active())
player.player_set_src("birds.mp4")
player.player_set_auto_restart(True)
player.player_set_cmd(lv.ffmpeg_player.PLAYER_CMD.START)
# player.player_set_cmd(0)
player.center()

API