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

ubuntu上ffmpeg使用framebuffer显示video

这个主题是想验证使用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.lryc.cn/news/163647.html

相关文章:

  • 82 # koa-bodyparser 中间件的使用以及实现
  • 计算一串输出数字的累加和
  • python包导入原理解析
  • MNIST手写数字辨识-cnn网路 (机器学习中的hello world,加油)
  • 论文笔记《3D Gaussian Splatting for Real-Time Radiance Field Rendering》
  • 数据库管理系统,数据库,sql的基本介绍以及它们之间的关系
  • 【Flowable】Springboot使用Flowable(一)
  • 戳泡泡小游戏
  • Redis缓存
  • mysql 插入更新数据
  • 系统架构设计高级技能 · 软件产品线
  • C语言学习系列-->字符函数和字符串函数
  • 尖端AR技术如何在美国革新外科手术实践?
  • 【木板】Python实现-附ChatGPT解析
  • 第一章:绪论
  • C++面试知识点总结
  • 从智能手机到智能机器人:小米品牌的高端化之路
  • 深度学习推荐系统(八)AFM模型及其在Criteo数据集上的应用
  • 【Spring】aop的底层原理
  • 微信小程序开发---基本组件的使用
  • SpringBoot国际化配置组件支持本地配置和数据库配置
  • Shell编程之sort
  • windows docker 容器启动报错:Ports are not available
  • 300. 最长递增子序列
  • DNS(域名解析系统)
  • 解决jsp/html界面跳转servlet出现404错误的方法
  • catface,使用Interface定义Controller,实现基于Http协议的RPC调用
  • Linux:LVS (NAT群集搭建)
  • 音乐格式转换mp3怎么转?跟着步骤操作一遍
  • it监控系统可以电脑吗?有什么效果