首页 > 系统相关 >linux笔记(1):ubuntu环境下,基于SDL2运行lvgl+ffmpeg播放mp4

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

时间:2024-08-12 09:37:53浏览次数:13  
标签:ffmpeg SDL2 -- lv 源码 linux 2.2 lvgl

文章目录
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.源码链接及编译方法

linux-sdl-lvgl-ffmpegmp4

1.ubuntu安装ffmpeg
1.1 源码安装
1.1 克隆ffmpeg源码
git clone https://github.com/FFmpeg/FFmpeg.git
1
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
3
4
5
6
1.2 直接安装依赖包
我由于先安装了源码,再安装依赖包,现在都不知道是不是直接安装依赖包就可以了。
2023年3月12日,在家里的电脑测试了一下不用编译安装源码,只安装依赖包,就可以正常使用SDL2和FFmpeg。

sudo apt install libsdl2-dev libavformat-dev libavcodec-dev libavutil-dev libswscale-dev libswresample-dev
1
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
1
2
3
4
5
6
此时,默认显示配置使用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();
1
2
2.2.3 链接库增加ffmpeg的库目录和库名
在 lv_port_pc_eclipse 目录下,修改Makefile,增加红框的内容:

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

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) {
1
可以推断,视频文件的路径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 目录下,直接编译,运行即可。

标签:ffmpeg,SDL2,--,lv,源码,linux,2.2,lvgl
From: https://www.cnblogs.com/liu-jia-liang/p/18354362

相关文章

  • 二、Linux系统安装和基本使用
    Linux系统安装和基本使用这里我想记录自己在学习中遇到的有趣的、让自己觉得学到了的点。Vim的使用文章中举出的两个gitpower的例子非常有意思,我们来分析一下:宏录制Thefirstexampleistogeneratethefollowingfile:123.....9899100Thisfilecontains100......
  • Nexpose v6.6.264 for Linux & Windows - 漏洞扫描
    Nexposev6.6.264forLinux&Windows-漏洞扫描Rapid7VulnerabilityManagement,releaseAug07,2024请访问原文链接:https://sysin.org/blog/nexpose-6/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org您的本地漏洞扫描程序搜集通过实时覆盖整个网络,随......
  • 【Linux】编辑器vim入门(概念+模式转换+技巧)
    vim编辑器1.1.什么是vim?1.2.下载vim:1.3.......
  • 【Linux】项目自动化构建工具-make/Makefile(入门初使用)
    make/Makefile1.什么是make/makefile?为什么要使用?2.如何使用make/makefile(1)makefile基础框架1.规则2.规则的实现(2)如何与make搭配使用?3.文件的时间戳4.常用语法补充语法一:.PHNOY文件名语法二:$@与$^语法三:makefile里面可以定义变量参考文章:爱编程的大丙......
  • CentOs8的Linux平台详细下载与安装
    目录效果展示下载镜像文件安装CentOs8的Linux操作系统实现效果展示下载镜像文件阿里云官网阿里云-计算,为了无法计算的价值(aliyun.com)https://www.aliyun.com/?spm=a2c6h.13651102.J_4VYgf18xNlTAyFFbOuOQe.d_logo.59461b11bmd2Mt下载好镜像文件,建议放......
  • Linux:@2024-08-11 最新的Openssl-3.3.1 Openssh-9.8p1 Centos7上的编译后二进制 一键
     附件:Portable_Openssl-Openssh9.8p1-bin-el7.v1.4.1.tgz.zip 特点:适用于centos7.x 已经编译为二进制对老版本的关键二进制文件sshd、sftp、scp、openssl进行了备份升级前,自动打开一个端口为2222的老版本的sshd服务,你可以连接那个2222的服务,以防死翘翘。对sshd_confi......
  • Linux设备驱动——模块的构造、运行与设计 与众不同的hello world与点灯
    编写一个Linux下的设备驱动,首先要准备好对应内核版本的内核源码树文件。该系列的全部文章都以嵌入式系统的ARM-Linux的环境进行阐述,并以交叉编译的方式在主机Ubuntu20.04系统上编译和ARM开发板上跑测 (E2000Q、H616、或者IMX6ULL看情况交叉着使用) 关于交叉编译的配置,以往......
  • linux配制nfs
    环境rolehostnameOSNFS服务端nfsserverCentos7NFS客户端OracleLinux01OracleLinux6.8要配制/etc/hosts让两个机器通过hostname能ping通服务端安装服务端yuminstallnfs-utils设置开机自动启动并启动服务systemctlenablerpcbindsystemctlenable......
  • 记一次TCP请求游戏服接口偶发超时问题处理:Linux内核网络参数调优
    记一次TCP请求游戏服接口偶发超时问题处理:Linux内核网络参数调优原创 国文 三七互娱技术团队  2024年07月08日18:00 广东 听全文01问题现象A云主机公网访问B云游戏服的一个接口出现偶发超时的问题。02问题原因经抓包定位到B云游戏服接口未响应请求报文导致,具体......
  • 9 - Linux进程和计划任务管理
    目录一、进程1.程序和进程的关系2.查看进程信息2.1ps命令-查看进程信息2.2top命令-查看进程的动态信息2.3pgrep命令-查找进程信息2.4jobs命令-查看后台进程状态信息3.进程的启动方式4.进程的前后台调度5.中止进程的运行5.1Ctrl+C组合键5.2kill......