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
效果:
linux-sdl-lvlg-ffmpegmp4
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 直接安装依赖包
我由于先安装了源码,再安装依赖包,现在都不知道是不是直接安装依赖包就可以了。
2023年3月12日,在家里的电脑测试了一下不用编译安装源码,只安装依赖包,就可以正常使用SDL2和FFmpeg。
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()》:
在 lv_port_pc_eclipse 目录下,直接编译,运行:
#1.编译
make
#2.运行,SDL需要管理员权限
sudo ./demo
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的库目录和库名
在 lv_port_pc_eclipse 目录下,修改Makefile,增加红框的内容:
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
编译本源码时,只需安装1.2节的依赖包,修改mp4文件的目录:
lv_example_ffmpeg_2() 位于 lvgl-ffmpeg/lvgl/examples/libs/ffmpeg/lv_example_ffmpeg_2.c 文件中。
在 lvgl-ffmpeg 目录下,直接编译,运行即可。
linux笔记(10):ubuntu环境下,基于SDL2运行lvgl+ffmpeg播放mp4相关推荐
- Ubuntu环境下基于Linux进行DOL配置
Ubuntu环境下基于Linux进行DOL配置 Description The distributed operation layer (DOL) is a framework that enable ...
- HaaS学习笔记 | HaaS框架环境下基于MicroPython的LED跑马灯实现及比较
[1]题目要求 [案例]:在HaaS框架下用原生MicroPython实现LED跑马灯. 蓝蜻蜓ESP32开发板的LED灯电路连接如下: D3灯----GPIO14,高电 ...
- linux sublime nodejs,Ubuntu环境下sublime3 nodejs安装与插件配置
1.sudo add-apt-repository ppa:webupd8team/sublime-text-3 回车,出现很多信息.但是我们看看图片最后字知道,这地方在等待我们确认是否添加这个仓库, ...
- [Linux实用工具]Ubuntu环境下SSH的安装及使用
SSH分为客户端和服务端. 服务端是一个守护进程,一般是sshd进程,在后台运行并响应来自客户端的请求.提供了对远程请求的处理,一般包括公共密钥认证.密钥交换.对称密钥加密和非安全连接. 客户端一般是 ...
- linux鼠标触摸屏应用程序,在Ubuntu环境下实现插入鼠标自动关闭触摸板
本文将为你介绍在 Ubuntu 环境下也能实现插入鼠标自动关闭触摸板的功能. 如果你经常在笔记本上用鼠标,你就会对因为偶尔碰到触摸板而打断自己的操作而憋屈了.当你用外接鼠标的时候关闭触摸板就是一个很好 ...
- Linux环境下基于策略的路由
Linux环境下基于策略的路由 原文作者:Matthew G. Marsh 原文出处:[url]http://www.sysadminmag.com/linux/articles/v09/i01/a3 ...
- Linux系统编程及应用——ubuntu环境下
Linux系统编程及应用--ubuntu环境下 程序由业务逻辑和系统访问两部分构成的.其中,业务逻辑是根据业务需求,按照设计好的逻辑规则,处理信息,与系统(平台)无关的:而系统访问则是利用操作系统所提 ...
- linux 下 storm环境搭建,Storm在Ubuntu环境下的单机部署
Storm在Ubuntu环境下的单机部署 目录 查看Ubuntu 安装JDK 安装Pythod 安装Zookeeper 安装ZeroMQ 安装Jzmp 安装Storm 查看Ubuntu是32位还是64 ...
- linux ubuntu环境下 android jdk sdk eclipse adt 以及手机连接无法识别的解决方法
linux ubuntu环境下 android jdk sdk eclipse adt 以及手机连接无法识别到总结 1.下载jdk-6u26-linux-i586.bin并复制到在目标文件夹(例如/u ...
最新文章
- Linux 系统审计操作行为的 5 种解决方案
- altium designer无法创建工程_前端工程化之开发脚手架及封装自动化构建
- 用pv操作描述如下前驱图_跟我学PMP | PV、AC、EV…挣值管理的基本概念都是啥?...
- vue 调用mutation方法_Vuex白话教程第三讲:Vuex旗下的Mutation
- LINUX mount -t用法
- 把Python函数转换成能在SQL语句中调用的函数
- 如何查看mysql数据库中各个表的大小
- matlab2012安装过程中退出,Matlab 2012安装图解
- vue和bootstrap-switch结合坑
- 大唐移动骨干集体出走
- Delphi ArcEngine 创建梯度专题 Proportional
- 基于.net5.0常用开源组件Xman
- 【 Vue 】暗黑模式切换
- 孙溟㠭先生书画艺术《贵妃》
- 5G NR 网络切片是什么意思
- 和互联网公司服务器有关的一些情况
- 3ds MAX 2014安装指南
- 控制BLDC资料汇总
- android 系统复位(Reset 恢复出厂设置)9.0源码分析
- 微型计算机硬件分为,微型计算机的硬件组成
热门文章
- Java Web项目 慧心人力资源管理系统
- html 图片在一个div中放大缩小效果
- html4可以class,class4:HTML入门.ppt
- 一个好看美观的登录注册界面的实现
- 你还记得小时候怎么吃药的吗?
- loj6244 七选五
- 删除节点removeChild()
- mysql将年分解到月_sql把一段时间分割成周,月,季度,年的时间段
- 【Python】WPS、Excel表格处理(二) xlwt模块(xlsxwriter模块)
- 微粒贷小贴士:了解网络虚假APP诈骗套路,以防上当受骗