树莓派采集电脑HDMI视频画面

[toc]

在 Raspberry Pi 4 上同时捕获一个HDMI流

安装 v4l

1
sudo apt install v4l-utils

列出设备

1
v4l2-ctl --list-devices

列表模式

1
ffmpeg -f v4l2 -list_formats all -i /dev/video0

列出 PulseAudio 源

1
ffmpeg -sources pulse

使用 FFplay 显示 HDMI 采集卡的视频 (720p 60fps)

1
ffplay -f v4l2 -input_format mjpeg -video_size 1280x720 -framerate 60 -i /dev/video0

使用 FFplay 显示 HDMI 采集卡的视频 (1080p 30fps)

1
ffplay -f v4l2 -input_format mjpeg -video_size 1920x1080 -framerate 30 -i /dev/video0

使用 FFplay 播放 HDMI 采集卡中的音频

1
ffplay -f pulse -i default

将音频和视频捕获为 AVI 文件(720p 60fps,无需重新编码)

1
ffmpeg -f v4l2 -thread_queue_size 1024 -input_format mjpeg -video_size 1280x720 -framerate 60 -i /dev/video0 -f pulse -thread_queue_size 1024 -i default -codec copy vid_720p_60.avi

将音频和视频捕获为 AVI 文件(1080p 30fps,无需重新编码)

1
ffmpeg -f v4l2 -thread_queue_size 1024 -input_format mjpeg -video_size 1920x1080 -framerate 30 -i /dev/video0 -f pulse -thread_queue_size 1024 -i default -codec copy vid_1080p_30.avi

将avi转换为mp4(硬件编码)

1
ffmpeg -i vid_720p_60.avi -vcodec h264_omx -acodec aac -b:v 9500k -pix_fmt yuv420p vid.mp4

将avi转换为mp4(软件编码)

1
ffmpeg -i vid_720p_60.avi -vcodec libx264 -acodec aac -b:v 9500k -pix_fmt yuv420p vid.mp4

使用硬件解码播放 mp4

1
omxplayer vid.mp4

在 Raspberry Pi 4 上同时捕获两个 HDMI 流

一次记录两个流

1
2
3
4
5
6
7
8
9
ffmpeg \
-f v4l2 -thread_queue_size 1024 -input_format mjpeg -video_size 1920x1080 -framerate 30 -i /dev/video0 \
-f pulse -thread_queue_size 1024 -i alsa_input.usb-MACROSILICON_USB_Video-02.analog-stereo \
-f v4l2 -thread_queue_size 1024 -input_format mjpeg -video_size 1920x1080 -framerate 30 -i /dev/video2 \
-f pulse -thread_queue_size 1024 -i alsa_input.usb-MACROSILICON_USB_Video-02.analog-stereo.2 \
-codec copy -copytb 1 \
-map 0:0 -map 1:0 stream1.avi \
-codec copy -copytb 1 \
-map 2:0 -map 3:0 stream2.avi