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
相关推荐
runing_an_min1 小时前
ffmpeg视频滤镜:替换部分帧-freezeframes
ffmpeg·音视频·freezeframes
ruizhenggang1 小时前
ffmpeg本地编译不容易发现的问题 — Error:xxxxx not found!
ffmpeg
runing_an_min3 小时前
ffmpeg视频滤镜:提取缩略图-framestep
ffmpeg·音视频·framestep
梓仁沐白5 小时前
ubuntu+windows双系统切换后蓝牙设备无法连接
windows·ubuntu
韩曙亮16 小时前
【FFmpeg】FFmpeg 内存结构 ③ ( AVPacket 函数简介 | av_packet_ref 函数 | av_packet_clone 函数 )
ffmpeg·音视频·avpacket·av_packet_clone·av_packet_ref·ffmpeg内存结构
写点什么啦16 小时前
[debug]不同的window连接ubuntu的vscode后无法正常加载kernel
linux·vscode·ubuntu·debug
wellnw16 小时前
[ubuntu]编译共享内存读取出现read.c:(.text+0x1a): undefined reference to `shm_open‘问题解决方案
linux·ubuntu
oushaojun220 小时前
ubuntu中使用ffmpeg和nginx推流rtmp视频
nginx·ubuntu·ffmpeg·rtmp
莫固执,朋友21 小时前
网络抓包工具tcpdump 在海思平台上的编译使用
网络·ffmpeg·音视频·tcpdump
lxkj_20241 天前
修改ffmpeg实现https-flv内容加密
网络协议·https·ffmpeg