ubuntu上ffmpeg使用framebuffer显示video

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

c 复制代码
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就可以看到。

c 复制代码
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 文件。

c 复制代码
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 工具,则需要先进行安装。

相关推荐
爱好曙光1 分钟前
生产延迟尖刺排查:用 bpftrace 抓系统调用与调度延迟
linux·ebpf·延迟·性能排查·bpftrace
Ruiery29 分钟前
Linux 6.6内核并发与同步(一):原子操作与内存屏障 — 内核同步的硬件底座
linux·运维·服务器·1024程序员节
码完就睡31 分钟前
Linux——IP协议与路由选择
linux·网络·tcp/ip·1024程序员节
H.莓飛31 分钟前
【数据结构】排序_OJ题(二):划分与选择
linux·服务器·c语言·开发语言·数据结构·visual studio
艸肅38 分钟前
Docker 国内镜像源配置
linux·ubuntu·docker·1024程序员节
猿粪已尽39 分钟前
mac 中 iTerm2 使用 rz、sz 上传下载文件详解,附 scp 操作指南
linux·macos·scp·lrzsz
宁波阿成43 分钟前
CentOS 7.5 升级 PHP 至 8.3.36 完整实操记录
linux·centos·php
djjjx.1 小时前
Linux进程篇(七):环境变量的底层溯源、核心获取机制与安全应用
linux·运维·服务器
FriendshipT1 小时前
Vim 完整指南:从入门到高效编辑
linux·人工智能·编辑器·vim·1024程序员节
Zevalin爱灰灰1 小时前
Linux入门第一部分(Ubuntu入门篇) 第二章 浅尝Ubuntu(一)
linux·嵌入式·1024程序员节