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
相关推荐
OkeyProxy1 小时前
怎麼在Ubuntu上設置全局代理
ubuntu·代理模式·proxy模式·ip代理·海外ip代理
nfgo1 小时前
快速体验Linux发行版:DistroSea详解与操作指南
linux·ubuntu·centos
读书,代码与猫5 小时前
【裸机装机系列】10.kali(ubuntu)-安装nvidia独立显卡步骤
ubuntu·kali·nvidia·linux安装nvidia显卡·ubuntu安装nvidia·裸机安装linux
厨 神10 小时前
vmware中的ubuntu系统扩容分区
linux·运维·ubuntu
鸡鸭扣13 小时前
虚拟机:3、(待更)WSL2安装Ubuntu系统+实现GPU直通
linux·运维·ubuntu
Jouzzy15 小时前
【Android安全】Ubuntu 16.04安装GDB和GEF
android·ubuntu·gdb
superconvert15 小时前
主流流媒体的综合性能大 PK ( smart_rtmpd, srs, zlm, nginx rtmp )
websocket·ffmpeg·webrtc·hevc·rtmp·h264·hls·dash·rtsp·srt·flv
安得权15 小时前
Ubuntu 20.04 部署 NET8 Web - Systemd 的方式 达到外网访问的目的
linux·前端·ubuntu
iHero16 小时前
【Ubuntu】在 Ubuntu 22.04.3 LTS 安装 davfs2 通过 Nextcloud WebDAV 挂载到 Ubuntu 的目录上
linux·ubuntu·nextcloud
清园暖歌16 小时前
Ubuntu 不重装系统增加交换空间大小
linux·运维·ubuntu·交换空间