当前位置: 首页 > news >正文

linux笔记(10):ubuntu环境下,基于SDL2运行lvgl+ffmpeg播放mp4

文章目录

  • 1.ubuntu安装ffmpeg
    • 1.1 源码安装
      • 1.1 克隆ffmpeg源码
      • 1.2 配置编译条件,编译,安装
    • 1.2 直接安装依赖包
  • 2.下载lvgl源码
    • 2.1 测试原始代码
    • 2.2 运行lv_example_ffmpeg_2()例程
      • 2.2.1 配置 LV_USE_FFMPEG 为 1
      • 2.2.2 lv_example_ffmpeg_2()替换lv_demo_widgets()
      • 2.2.3 链接库增加ffmpeg的库目录和库名
      • 2.2.4 《lv_ffmpeg.c》增加一行代码 av_register_all()
      • 2.2.5 视频文件传入路径
  • 3.源码链接

参考文章:
1.百问网: 3rd party libraries(第 3 方库) » FFmpeg support

1.ubuntu安装ffmpeg

1.1 源码安装

1.1 克隆ffmpeg源码

git clone https://github.com/FFmpeg/FFmpeg.git

1.2 配置编译条件,编译,安装

#1.配置
./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
#2.编译
make
#3.安装
sudo make install 

1.2 直接安装依赖包

我由于先安装了源码,再安装依赖包,现在都不知道是不是直接安装依赖包就可以了。

sudo apt install libsdl2-dev libavformat-dev libavcodec-dev libavutil-dev libswscale-dev libswresample-dev

2.下载lvgl源码

2.1 测试原始代码

使用这个版本https://github.com/lvgl/lv_port_pc_eclipse的源码。

#1.下载源码
git clone https://github.com/lvgl/lv_port_pc_eclipse.git
#2.进入目录
cd lv_port_pc_eclipse
#3.下载子模块
git submodule update  --init --recursive

此时,默认显示配置使用SDL,可以直接编译运行,默认运行《lv_demo_widgets()》:
在这里插入图片描述

2.2 运行lv_example_ffmpeg_2()例程

2.2.1 配置 LV_USE_FFMPEG 为 1

在顶层目录下的 《lv_conf.h》 配置 LV_USE_FFMPEG 为 1:
在这里插入图片描述

2.2.2 lv_example_ffmpeg_2()替换lv_demo_widgets()

//    lv_demo_widgets();lv_example_ffmpeg_2();

2.2.3 链接库增加ffmpeg的库目录和库名

LDLIBS	 			:= -lSDL2 -lm -L/uar/local/ffmpeg/lib -lavutil -lavformat -lavcodec -lswscale -lswresample 

在这里插入图片描述

2.2.4 《lv_ffmpeg.c》增加一行代码 av_register_all()

《lvgl\src\extra\libs\ffmpeg\lv_ffmpeg.c》 需要增加一行代码,才能正常工作:
在这里插入图片描述
在上面的函数中,没有av_register_all()就会导致avformat_open_input()出错;或许av_register_all()应该放置在更合理的地方(比如ffmpeg初始化时),放置这里只是临时解决方案。
从上面图片中689行的代码:

  if(avformat_open_input(&(ffmpeg_ctx->fmt_ctx), path, NULL, NULL) < 0) {

可以推断,视频文件的路径path是linux系统路径,不用理会lvgl自身的路径。

2.2.5 视频文件传入路径

本例程中,使用的文件系统驱动是STDIO ,lvgl自身的文件目录的命名都没有起作用,直接使用ubuntu的文件目录。
在这里插入图片描述
比如我播放的视频是 bird.mp4 ,在ubuntu中的路径是 /mnt/hgfs/linux-D1/app/birds.mp4,直接传入例程:

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, "/mnt/hgfs/linux-D1/app/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);
}

在这里插入图片描述

3.源码链接

https://gitee.com/huangweide001/lvgl-ffmpeg

http://www.lryc.cn/news/31595.html

相关文章:

  • JavaScript专题之类型判断(下)
  • 【VC 7/8】vCenter Server 基于文件的备份和还原Ⅲ—— 使用 SMB 协议备份 VC(VAMI 中文)
  • linux - 内核编译
  • Spring——配置文件实现IOC和DI入门案例
  • 机器学习100天(四十一):041 对偶支持向量机-公式推导
  • C语言下的signal()函数
  • google独立站和与企业官网的区别是什么?
  • Vue3---语法初探
  • esp8266WiFi模块通过MQTT连接华为云
  • 苹果新卫星专利公布,苹果Find My功能知多少
  • [ICLR‘22] DAB-DETR: Dynamic Anchor Boxes Are Better Queries for DETR
  • 双周赛99(贪心、数学、区间合并计算、换根DP)
  • OpenText Exceed TurboX(ETX) 客户案例——弗吉尼亚理工大学
  • 【Python】torch.norm()用法解析
  • C++核心编程<内存分区模型>(1)
  • 电路基础(1)电路模型和电路定律
  • pytest 基础
  • 软测入门(七)python操作数据文件(Json、yaml、csv、excel、xml)
  • 【小程序】django学习笔记1
  • MySQL常用函数整理
  • 设计模式—“组件协作”
  • vue里使用driver.js实现项目功能向导指引
  • 详解JAVA类加载
  • 高斯分布、高斯混合模型、EM算法详细介绍及其原理详解
  • [Linux入门篇]一篇博客解决C/C++/Linux System Call文件操作接口的使用
  • 数据结构和算法学习记录——删除有序数组中的重复项、合并两个有序数组
  • FPGA实现模拟视频BT656解码 TW2867四路PAL采集拼接显示 提供工程源码和技术支持
  • 【建议收藏】超详细的Canal入门,看这篇就够了!!!
  • KubeSphere 社区双周报 | OpenFunction v1.0.0-rc.0 发布
  • 查漏补缺3月