当前位置: 首页 > 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

相关文章:

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

文章目录1.ubuntu安装ffmpeg1.1 源码安装1.1 克隆ffmpeg源码1.2 配置编译条件&#xff0c;编译&#xff0c;安装1.2 直接安装依赖包2.下载lvgl源码2.1 测试原始代码2.2 运行lv_example_ffmpeg_2()例程2.2.1 配置 LV_USE_FFMPEG 为 12.2.2 lv_example_ffmpeg_2()替换lv_demo_wid…...

JavaScript专题之类型判断(下)

参考原文&#xff1a;JavaScript专题之类型判断(下) 前言 在上篇《JavaScript专题之类型判断(上)》中&#xff0c;我们抄袭 jQuery 写了一个 type 函数&#xff0c;可以检测出常见的数据类型&#xff0c;然而在开发中还有更加复杂的判断&#xff0c;比如 plainObject、空对象…...

【VC 7/8】vCenter Server 基于文件的备份和还原Ⅲ—— 使用 SMB 协议备份 VC(VAMI 中文)

目录2.2 使用 SMB 协议备份 VC&#xff08;VAMI 中文&#xff09;&#xff08;1&#xff09;登录 vCenter Server 管理界面&#xff08;2&#xff09;进入备份页面&#xff08;3&#xff09;配置 Backup Schedule&#xff08;4&#xff09;开始备份&#xff08;5&#xff09;备…...

linux - 内核编译

一. 编译的实质基于头文件和c文件--->产生对象文件(.o)将所有的对象文件链接起来&#xff0c;产生可执行文件。内核的编译系统组成Makefile分布在内核源代码中的Makefile&#xff0c; 定义内核的编译规则&#xff0c;配合Kconfig使用。Kconfig配置文件&#xff0c;给用户提供…...

Spring——配置文件实现IOC和DI入门案例

现在先如图创建如下的Maven项目&#xff0c;在业务层和数据层分别写上对应的接口和实现类 在BookServiceImpl中创建一个BookDaoImpl对象&#xff0c;并调用里面的save()方法。 在测试类里面new一个bookservice的实现类&#xff0c;调用save()方法 输出如下图所示 要使用IOC容…...

机器学习100天(四十一):041 对偶支持向量机-公式推导

《机器学习100天》完整目录:目录 机器学习 100 天,今天讲的是:对偶支持向量机-公式推导! 本节主要延续上一节的内容,推导线性支持向量机的对偶形式。本节内容包含的数学理论和推导很多,我尽量简化其中的数学部分,只做感性的介绍,便于大家在理解的同时不受数学复杂公式…...

C语言下的signal()函数

signal()简介 signal() 函数是 C 语言中用于处理系统信号的函数。它在 signal.h 头文件中进行声明。信号用作进程间通信&#xff0c;报告异常行为&#xff0c;例如除零&#xff0c;或用户的一些按键组合&#xff0c;例如同时按下 Ctrl 与 C 键&#xff0c;产生信号 SIGINT。 …...

google独立站和与企业官网的区别是什么?

google独立站和与企业官网的区别是什么&#xff1f; 答案是&#xff1a;独立站通过谷歌SEO优化可以更好的获取自然排名的流量。 随着互联网的不断发展&#xff0c;企业越来越重视自身网站的建设和优化&#xff0c;而在企业网站建设中&#xff0c;很多人会犯一个常见的错误&am…...

Vue3---语法初探

目录 hello world 实现简易计时显示 反转字符串 显示隐藏 了解循环 了解双向绑定实现简易记事 设置鼠标悬停的文本 组件概念初探&#xff0c;进行组件代码拆分 hello world 最原始形态&#xff0c;找到 id 为 root 的标签&#xff0c;将 Vue 实例的模板放入标签之内 …...

esp8266WiFi模块通过MQTT连接华为云

esp8266WiFi模块通过MQTT连接华为云总结&#xff1a;一、 MQTT透传AT固件烧录二、 串口调试2.1 设置模块为STA模式2.2 连接WiFi2.3 设置MQTT的登陆用户名与密码2.4 设置MQTT的ClientID2.5 设置MQTT接入地址2.6 订阅设备属性上报的主题2.7 上传数据2.8 平台下发命令2.9 华为云物…...

苹果新卫星专利公布,苹果Find My功能知多少

根据美国商标和专利局&#xff08;USPTO&#xff09;公示的清单&#xff0c;苹果公司获得了一项新的卫星专利&#xff0c;可在非地面网络&#xff08;Non-Terrestrial Networks&#xff0c;NTN&#xff09;中定位用户设备&#xff08;iDevice、MacBook 等&#xff09;。 在专利…...

[ICLR‘22] DAB-DETR: Dynamic Anchor Boxes Are Better Queries for DETR

paper: https://arxiv.org/pdf/2201.12329.pdfcode: GitHub - IDEA-Research/DAB-DETR: [ICLR 2022] DAB-DETR: Dynamic Anchor Boxes are Better Queries for DETR将位置相关性计算显式的引入到decoder中&#xff0c;通过box坐标(x, y, w, h) 影响Q和K的相关性计算。特征图要有…...

双周赛99(贪心、数学、区间合并计算、换根DP)

文章目录双周赛99[6312. 最小和分割](https://leetcode.cn/problems/split-with-minimum-sum/)贪心[6311. 统计染色格子数](https://leetcode.cn/problems/count-total-number-of-colored-cells/)找规律[6313. 统计将重叠区间合并成组的方案数](https://leetcode.cn/problems/c…...

OpenText Exceed TurboX(ETX) 客户案例——弗吉尼亚理工大学

弗吉尼亚理工大学简化了高性能计算的使用。OpenText Exceed TurboX 提供高性能图形远程应用程序访问&#xff0c;提高工作效率 挑战 图形界面响应缓慢&#xff0c;影响用户使用&#xff1b; 对复制应用程序输出文件进行本地分析时&#xff0c;影响带宽和速度&#xff1b; 使用…...

【Python】torch.norm()用法解析

【Python】torch.norm()用法解析 文章目录【Python】torch.norm()用法解析1. 介绍1.1 p-范数1.2 Frobenius 范数1.3 核范数2. API3. 示例1. 介绍 torch.norm()是对输入的tensor求对应的范数。tensor的范数有以下三种&#xff1a; 1.1 p-范数 1.2 Frobenius 范数 即&#xff…...

C++核心编程<内存分区模型>(1)

C核心编程<内存分区模型>1.内存分区模型1.1内存分区模型概述1.2内存分区的意义1.3程序允许前1.3.1代码区1.3.2全局区1.3.2.1全局区的演示1.4程序运行后1.4.1栈区1.4.1.1栈区演示1.4.2堆区1.4.2.1堆区演示1.5new操作符1.5.1new操作的概述1.内存分区模型 1.1内存分区模型概…...

电路基础(1)电路模型和电路定律

电路中的电压、电流之间具有两种约束&#xff0c;一种是由电路元件决定的元件约束&#xff1b;另一种是元件间连接而引入的几何约束&#xff08;就是拓扑约束&#xff09;&#xff0c;后者由基尔霍夫定律来表达。基尔霍夫定律是集总参数电路的基本定律。 1.电路和电路模型电源又…...

pytest 基础

pytest安装 安装 pip install -U pytest 验证安装 pytest --version 约束&#xff1a; 所有的测试文件名都需要满足test_ *.py格式或* _test.py格式。 测试文件中的测试类以Test_开头&#xff0c;并且不能带有 init 方法。 测试类中可以包含一个或多个test_开头的函数。 步骤…...

软测入门(七)python操作数据文件(Json、yaml、csv、excel、xml)

python操作文件 txt文件 read() : 读取所有readline() : 读取一行readlines() : 读取所有&#xff0c;且以行为单位&#xff0c;放入list列表中 file open(r"F:\abc.txt", "r", encoding"utf-8") # 以utf-8格式读取文件 # 读取所有 # print…...

【小程序】django学习笔记1

网页能用&#xff0c;不知道小程序能不能用。应该能吧。。。。。创建django程序文件包&#xff0c;xxx处是给该文件夹起个名django-admin startproject xxx一个project是由很多个app&#xff08;小应用&#xff09;组成的在文件夹目录下创建一个app&#xff0c;xxx处给该app起个…...

CMake构建类型避坑指南:为什么你的Release模式没有优化?CMAKE_BUILD_TYPE常见问题排查

CMake构建类型避坑指南&#xff1a;为什么你的Release模式没有优化&#xff1f; 在C项目开发中&#xff0c;构建类型的选择直接影响最终生成的可执行文件性能。许多开发者在使用CMake时都遇到过这样的困惑&#xff1a;明明设置了CMAKE_BUILD_TYPERelease&#xff0c;但生成的代…...

舰艇推进电机供电流程优化方案

舰艇推进电机供电流程优化方案 第一章 绪论 1.1 背景与意义 现代舰艇(如驱逐舰、潜艇、全电推进船舶)广泛采用综合电力系统。传统的供电流程中,推进电机作为最大的非线性负载,其负载突变(如急加速、倒车、波浪冲击导致的螺旋桨甩尾)会通过直流母线回馈至发电机组,导致…...

M2LOrder模型在STM32项目中的潜在应用:边缘设备情绪反馈

M2LOrder模型在STM32项目中的潜在应用&#xff1a;边缘设备情绪反馈 最近在捣鼓一个基于STM32的智能硬件项目&#xff0c;想给它加点“人情味”。比如&#xff0c;当用户对它说话时&#xff0c;它能感知到用户的情绪是开心还是沮丧&#xff0c;并给出更贴切的反馈。这听起来很…...

一套万能的异步处理方案!(珍藏版)

前言 良好的系统设计必须要做到开闭原则&#xff0c;随着业务的不断迭代更新&#xff0c;核心代码也会被不断改动&#xff0c;出错的概率也会大大增加。但是大部分增加的功能都是在扩展原有的功能&#xff0c;既要保证性能又要保证质量&#xff0c;我们往往都会使用异步线程池…...

Ollama+Qwen2.5-VL搭建教程:打造你的智能视觉分析工具

OllamaQwen2.5-VL搭建教程&#xff1a;打造你的智能视觉分析工具 1. 引言&#xff1a;为什么选择Qwen2.5-VL 在当今AI技术快速发展的时代&#xff0c;视觉-语言多模态模型正成为解决复杂问题的关键工具。Qwen2.5-VL-7B-Instruct作为通义千问系列的最新成员&#xff0c;在视觉…...

告别混乱!用PyQt5模块化设计打造你的工业上位机(附完整源码与两种传值方式详解)

工业级PyQt5模块化开发实战&#xff1a;从架构设计到数据交互的完整指南 在工业自动化与测控领域&#xff0c;上位机软件往往需要集成数据采集、实时监控、设备控制等复杂功能。传统开发方式容易导致代码臃肿、维护困难——按钮事件与业务逻辑纠缠不清&#xff0c;数据流向如迷…...

VxLAN网络如何“破圈”?聊聊Type5路由在云网融合中的真实应用场景

VxLAN Type5路由&#xff1a;云网融合时代的智能连接引擎 在数字化转型浪潮中&#xff0c;企业网络架构正经历着从传统三层架构向云原生网络的跃迁。VxLAN作为新一代网络虚拟化技术的代表&#xff0c;其Type5路由功能正在成为打通云网边界的关键推手。想象一下这样的场景&#…...

OBS Advanced Timer:全场景直播计时神器,让你的直播节奏掌控自如

OBS Advanced Timer&#xff1a;全场景直播计时神器&#xff0c;让你的直播节奏掌控自如 【免费下载链接】obs-advanced-timer 项目地址: https://gitcode.com/gh_mirrors/ob/obs-advanced-timer 作为主播&#xff0c;你是否曾因手动计时失误导致直播环节超时&#xff…...

海康MVS软件从下载到实时预览:MV-CA013-21UC工业相机5分钟极速上手教程

海康MVS软件从下载到实时预览&#xff1a;MV-CA013-21UC工业相机5分钟极速上手教程 工业视觉系统正成为智能制造的核心组件&#xff0c;而海康威视MV-CA013-21UC工业相机凭借其高帧率、低噪声和稳定性能&#xff0c;在自动化检测、机器人引导等领域广受欢迎。本文将带您从零开…...

Pixel Aurora Engine快速部署:阿里云ECS轻量服务器一键安装脚本

Pixel Aurora Engine快速部署&#xff1a;阿里云ECS轻量服务器一键安装脚本 1. 像素极光引擎简介 Pixel Aurora&#xff08;像素极光&#xff09;是一款基于AI扩散模型的高端绘图工作站&#xff0c;采用独特的复古像素游戏风格界面设计。这款创意引擎能够将文字描述转化为极具…...