ubuntu上ffmpeg使用framebuffer显示video

news2024/9/25 11:14:24

这个主题是想验证使用fbdev(Linux framebuffer device),将video直接显示到Linux framebuffer上,在FFmpeg中对应的FFOutputFormat 就是ff_fbdev_muxer

const FFOutputFormat ff_fbdev_muxer = {
    .p.name         = "fbdev",
    .p.long_name    = NULL_IF_CONFIG_SMALL("Linux framebuffer"),
    .priv_data_size = sizeof(FBDevContext),
    .p.audio_codec  = AV_CODEC_ID_NONE,
    .p.video_codec  = AV_CODEC_ID_RAWVIDEO,
    .write_header   = fbdev_write_header,
    .write_packet   = fbdev_write_packet,
    .write_trailer  = fbdev_write_trailer,
    .get_device_list = fbdev_get_device_list,
    .p.flags        = AVFMT_NOFILE | AVFMT_VARIABLE_FPS | AVFMT_NOTIMESTAMPS,
    .p.priv_class   = &fbdev_class,
};

先看一下怎么用,命令如下,将输入的视频文件 input.mp4 解码后输出到 Framebuffer 设备 /dev/fb0,命令执行没有问题,但是视频是看不到的,切换到虚拟tty就可以看到。

sudo ffmpeg -v 48 -i input.mp4 -c:v rawvideo -pix_fmt bgra -f fbdev /dev/fb0
  • -i input.mp4: 指定输入文件为 input.mp4
  • -c:v rawvideo: 指定使用原始视频编码器。
  • -pix_fmt bgra: 指定像素格式为 BGRA。
  • -f fbdev: 指定输出格式为 Framebuffer 设备。
  • /dev/fb0: 指定输出到 Framebuffer 设备的 /dev/fb0

再来看一下录制framebuffer内容,下面这个命令使用了 FFmpeg 录制 Linux 系统中的framebuffer (/dev/fb0) 的视频,并将其编码为 H.264 格式的 MP4 文件。

sudo ffmpeg -f fbdev -framerate 10 -i /dev/fb0 -vcodec h264 -f mp4 output.mp4
  • -f fbdev: 指定输入格式为帧缓冲设备。
  • -framerate 10: 指定录制视频的帧率为 10 帧每秒。
  • -i /dev/fb0: 指定输入文件为帧缓冲设备 /dev/fb0
  • -vcodec h264: 指定输出视频的编码格式为 H.264。
  • -f mp4: 指定输出文件格式为 MP4。
  • output.mp4: 指定输出文件名为 output.mp4。

📣 这两个命令组合起来,可以看到第一个命令input.mp4解码写入到/dev/fb0后,通过第二个命令录制的output.mp4文件就是第一个的input.mp4的内容。或者ctrl+alt+f2切换到虚拟tty,直接用第一条命令,就可以看到视频和输出log混合在一起在屏幕上显示了。

在这里插入图片描述

使用fbgrab截图,可以看到这样的效果。如果系统中没有安装 fbgrab 工具,则需要先进行安装。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/985615.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大数据技术之Hadoop:HDFS存储原理篇(五)

目录 一、原理介绍 1.1 Block块 1.2 副本机制 二、fsck命令 2.1 设置默认副本数量 2.2 临时设置文件副本大小 2.3 fsck命令检查文件的副本数 2.4 block块大小的配置 三、NameNode元数据 3.1 NameNode作用 3.2 edits文件 3.3 FSImage文件 3.4 元素据合并控制参数 …

你知道聊天机器人在医疗保健行业发挥了什么作用吗?

在医疗保健行业,时间限制、数据泄露、误诊、治疗延误和人为错误等各种挑战构成了重大问题。然而,人工智能(AI)的快速发展已成为解决这些问题的解决方案。一个特别值得注意的应用是医疗保健中的聊天机器人,它提供了一系…

Linux---应用层获取usb设备描述信息通过endpoint地址数据通讯

文章目录 🌈应用层获取USB设备信息总体思路🌈应用层代码实例🌈实例测试🌈应用层通过endpoint进行数据读写 🌈应用层获取USB设备信息总体思路 应用层可以打开USB设备的节点,读取包括USB设备的配置&#xff…

核心实验12合集_vlan高级配置:基于子网划分vlan超级vlan相同vlan 端口隔离 _ENSP

项目场景一: 核心实验12合集-1_vlan高级配置_ENSP 基于子网划分vlan 1 当检测ip在192.168.10.0/24时候,PC接入交换机时,将其划为vlan10, 且可以和vlan 10 的服务器通信。 2 当检测ip在192.168.20.0/24时候,…

配电室数字电力智慧平台

配电室数字电力智慧平台依托电易云-智慧电力物联网,采用先进的人工智能、物联网、大数据技术,对配电室进行全面监控和管理,实现电力运行的自动化和智能化,有效降低运维成本,提高电力运行安全和可靠性。 该平台可以实时…

CTFHUB ICS(2)

1.modbus 还是通过strings输出文件 发现这次只找到了flag的字符666c61677b就是flag的16进制 通过strings和grep配合输出为10个数量的数据 strings 6.pcap | grep -E "^.{10}$" grep 搜索文本的工具 -E 使用扩展正则表达式 ^ 表示行的开始 . 匹配任意单…

内网渗透之凭据收集的各种方式

凭据收集是什么? 凭据收集是获取用户和系统凭据访问权限的术语。 这是一种查找或窃取存储的凭据的技术,包括网络嗅探,攻击者可以在网络嗅探中捕获传输的凭据。 凭证可以有多种不同的形式,例如: 帐户详细信息&#xf…

用上这个建筑管理技巧,我才知道有多省事!

在过去的几十年里,建筑和施工行业取得了巨大的进步。然而,这个行业也一直在不断面临挑战,如高成本、时间压力、安全隐患和资源浪费。 随着科技的飞速发展,我们进入了一个新的时代,一个改变着建筑和施工方式的时代 - 智…

TSINGSEE青犀视频AI分析/边缘计算/AI算法·安全帽检测功能——多场景高效运用

安全帽检测算法主要是对人员安全和事故预防的需要。在许多工业领域和施工现场,佩戴安全帽是一种重要的安全措施,可以减少头部受伤的风险。然而,由于工地人员数量众多且繁忙,人工监控难以有效覆盖所有区域,因此旭帆科技…

vue-别名路径联想提示的配置

在根路径下,新建 jsconfig.json 文件,即可 在输入 自动联想到src目录。 代码如下: // 别名路径联想提示:输入自动联想 {"compilerOptions":{"baseUrl":"./","paths": {"/*":[…

算法训练day43|动态规划 part05:0-1背包 (LeetCode 1049. 最后一块石头的重量 II、494. 目标和、474.一和零)

文章目录 1049. 最后一块石头的重量 II思路分析代码实现 494. 目标和思路分析动规方法代码实现总结思考 474.一和零思路分析代码实现思考总结 var code "57a5e730-4e5e-43ad-b567-720d69f0371a"1049. 最后一块石头的重量 II 题目链接🔥🔥 有…

泽众TestOne自动化测试平台,挡板测试(Mock测试)上线了!!

什么是挡板测试(Mock测试)? 主要应对与某些不容易构造或者不容易获取的对象以及暂时没有开发完成的对象,设计一个虚拟的对象,配置测试需求的业务数据,完成测试业务。 TestOne是泽众软件自主研发的一体化测…

静态函数(static)-> static 与 const

一.静态函数 静态函数(Static Function)是指在C中使用static关键字声明的函数。它们与普通成员函数和全局函数不同,具有以下特点: 作用域限制:静态函数在类的作用域内,但它们不依赖于类的实例,…

GIF动态表情如何制作?教你一招超简单的gif制作方法

动态gif表情包是如何制作的?gif格式动图作为网络上流行的一种图片格式,可以将多张静态图片变成一张gif动图,能够以生动有趣的方式传递信息。而且制作这种gif动图的方法也非常的简单,只需要使用gif在线制作(https://www…

不就是G2O嘛

从零开始一起学习SLAM | 理解图优化,一步步带你看懂g2o代码 SLAM的后端一般分为两种处理方法,一种是以扩展卡尔曼滤波(EKF)为代表的滤波方法,一种是以图优化为代表的非线性优化方法。不过,目前SLAM研究的主…

Oracle数据库开发者工具

和开发者相关的数据库特性,功能与工具列举如下,但不限于以下。因为Oracle数据库中的许多功能其实都间接的和开发者发生关系,如Oracle高级安全选件中的透明数据加密,数据编辑。Oracle Spatial and Graph(地理空间与图&a…

ansible搭建

一,ansible是一种由Python开发的自动化运维工具,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能 二,特点 * 部署简单 * **默认…

数据结构入门-13-图

文章目录 一、图的概述1.1 图论的作用1.2 图的分类1.2.1 无向图1.2.2 有向图1.2.3 无权图1.2.4 有劝图 1.3 图的基本概念 二、树的基本表示2.1 邻接矩阵2.1.1 邻接矩阵 表示图2.1.2 邻接矩阵的复杂度 2.2 邻接表2.2.1 邻接表的复杂度2.2.2 邻接表By哈希表 三、图的深度优先遍历…

LLM文章阅读:Baichuan 2 干货

如有转载,请注明出处。欢迎关注微信公众号:低调奋进。打算开始写LLM系列文章,主要从数据、训练框架、对齐等方面进行LLM整理。 Baichuan 2: Open Large-scale Language Models 原始文章链接 https://cdn.baichuan-ai.com/paper/Baichuan2-…

Element Plus table formatter函数返回html内容

查看 Element Plus table formatter 支持返回 类型为string 和 VNode对象; 若依全局直接用h函数,无需引用 下面普通基本用法:在Element Plus中,你可以使用自定义的formatter函数来返回VNode对象,从而实现更灵活的自定…