Ubuntu20.04安装ffmpeg,并捕获视频流

工控机:幻影峡谷

系统:Ubuntu20.04

摄像头:杰瑞微通环星光USB摄像头记录一下使用ffmpeg拉取视频流的原因:刚开始用的是ubuntu系统自带的 茄子 软件,但是视频流很卡(非常卡,基本上不能用),排查了是不是板卡、播流软件等因素,最终发现是播流软件 茄子 的原因,所以想到用ffmpeg来拉取视频流。测试之后,确实ffmpeg的拉流效果远好于茄子。

以下是使用ffmpeg的拉取的视频:

安装ffmpeg步骤

依次运行以下命令:

bash 复制代码
sudo apt update  
sudo apt install ffmpeg

安装完成后,通过运行ffmpeg -version来验证安装是否成功,并查看FFmpeg的版本信息。

bash 复制代码
ffmpeg -version

上图表明,ffmpeg已经安装。

接入USB摄像头后,使用ffmpeg拉取视频流

查找可用的摄像头设备

在Ubuntu系统中,USB摄像头通常会被识别为/dev/videoX设备,其中X是一个数字。可以使用FFmpeg的-list_formats选项来查看可用的摄像头设备和它们支持的格式:

bash 复制代码
ffmpeg -f v4l2 -list_formats all -i /dev/video0

上图表明已经成功运行了 ffmpeg 命令来列出 /dev/video0 设备上可用的视频格式。从输出中可以看到,Compressed和Raw部分列出了设备支持的视频格式和分辨率:Compressed: mjpeg 表示设备支持Motion-JPEG压缩格式,并且列出了支持的分辨率。Raw: yuyv422表示设备支持原始YUV格式(特别是YUYV 4:2:2)。Compressed: h264表示设备支持H.264压缩格式,也列出了支持的分辨率。

捕获摄像头的视频流

(1)如果想要捕获摄像头的视频流并将其保存为文件,例如保存为MP4格式,使用以下的命令:

bash 复制代码
ffmpeg -f v4l2 -video_size 640x480 -i /dev/video0 -c:v libx264 -preset ultrafast -crf 23 -y output.mp4

这个命令的含义是:

复制代码
-f v4l2:指定输入格式为 Video4Linux2(Linux下USB摄像头常用的格式)。
-video_size 640x480:设置视频捕获的分辨率为 640x480。可以根据需要选择其他分辨率。
-i /dev/video0:指定输入设备为 /dev/video0。
-c:v libx264:指定视频编码器为 libx264,它将视频编码为 H.264 格式。
-preset ultrafast:设置 x264 编码器的预设为 ultrafast,以获得最快的编码速度(但可能牺牲一些压缩效率)。
-crf 23:设置 Constant Rate Factor(CRF)为 23,这是一个控制视频质量的参数。值越小,质量越好,但文件也会越大。
-y:如果输出文件已存在,则覆盖它。
output.mp4:输出文件的名称。

(2)如果想要实时查看摄像头的视频流而不保存为文件,使用 ffplay 命令(它是 FFmpeg 套件的一部分):
ffplay -f v4l2 -video_size 640x480 -i /dev/video0

验证

只是实时查看摄像头的视频流:
如果想要将将 ffplay 命令写入一个 .sh 脚本文件中,以便直接运行该脚本来拉取视频流,按照以下步骤操作:

复制代码
(1)创建一个新的文件,例如 view_video.sh。

(2)在文件中输入以下内容:
bash 复制代码
#!/bin/bash  
ffplay -f v4l2 -video_size 640x480 -i /dev/video0

第一行的 #!/bin/bash 是一个 shebang,它告诉系统该脚本应该使用哪个解释器来执行。在这个例子中,我们使用的是 bash shell。

复制代码
(3)保存并关闭文件。

(4)为了让这个脚本可执行,需要添加执行权限。在终端中,使用 chmod 命令来添加权限:
bash 复制代码
chmod +x view_video.sh

(5)直接运行这个脚本来拉取视频流

bash 复制代码
./view_video.sh
相关推荐
aqi004 小时前
FFmpeg开发笔记(九十八)基于FFmpeg的跨平台图形用户界面LosslessCut
android·ffmpeg·kotlin·音视频·直播·流媒体
罗马苏丹默罕默德6 小时前
Ubuntu下部署.NetCore WebApi的方法
数据库·ubuntu·.netcore
一尘之中6 小时前
在Ubuntu 22.04中高效使用pip:从入门到精通
ubuntu·pip·ai写作
一尘之中7 小时前
Ubuntu 22.04 SSH服务完全配置指南:从基础到安全加固
ubuntu·ssh·ai写作
老兵发新帖7 小时前
ubuntu服务器配置私钥登录
linux·服务器·ubuntu
知识分享小能手7 小时前
Ubuntu入门学习教程,从入门到精通,Ubuntu 22.04 中的大数据 —— 知识点详解 (24)
大数据·学习·ubuntu
oMcLin8 小时前
如何在Ubuntu 22.04 LTS上通过配置ZFS存储池,提升高吞吐量数据库的读写性能与可靠性?
linux·数据库·ubuntu
warton881 天前
ubuntu24 安装 proxsql 实现数据库代理
linux·运维·mysql·ubuntu
会跑的葫芦怪1 天前
cursor 打开wsl Ubuntu项目
linux·运维·ubuntu
ChenYY~1 天前
双系统显卡冲突修复记录
ubuntu·显卡·黑屏·双系统·nvidia驱动