在 Raspberry Pi 4 上进行一些测试,因此我尝试使用尽可能少的资源。
我有一个连接到 Pi 的 USB 端口的网络摄像头,它支持将视频流作为压缩的 H264 流发送:
ffmpeg -f v4l2 -list_formats all -i /dev/video1
[video4linux2,v4l2 @ 0x204e1c0] Compressed: mjpeg : Motion-JPEG : 640x360 1280x720 1920x1080
[video4linux2,v4l2 @ 0x204e1c0] Raw : yuyv422 : YUYV 4:2:2 : 640x360 1280x720 1920x1080
[video4linux2,v4l2 @ 0x204e1c0] Compressed: h264 : H.264 : 640x360 1280x720 1920x1080
当我尝试将流发送到 RTMP 端点(nginx-rtmp
)时,我使用以下选项来发送它:
ffmpeg -f video4linux2 -input_format h264 -i /dev/video0 -c:v libx264 -an -f flv rtmp://localhost:1935/desk/stream
但是,与删除相比,我没有看到编码中 CPU 的利用率有任何改善-input_format
,这让我相信它仍在重新编码。
答案1
输出文件中的视频流是否编码完全取决于-codec
该流的选项值。只有该值copy
才会跳过重新编码;任何其他值或完全没有该选项都会强制重新编码,而不管源编解码器是什么。
所以-c:v libx264
改为-c:v copy
。
(-c
是 的缩写-codec
)