我需要对 tcp 套接字副本做一个真实的设备,例如:
cat /dev/video0 | /bin/nc 127.0.0.1 8000 -w 1
这个非常基本的命令行适用于我的情况。我想做同样的事情,但使用 ffmpeg 进程。目的是标准化流处理过程,在这种情况下,从设备到网络的基本原始副本,以及从任何源到网络的高级转码,始终使用相同的 ffmpeg 过程。
我在 ffmpeg 之前使用 v4l2-ctl 来进行很多我想保留的配置。
我试过了 :
ffmpeg -loglevel debug -i /dev/video0 -f rawvideo tcp://127.0.0.1:8000
ffmpeg -loglevel debug -f v4l2 -i /dev/video0 -f rawvideo tcp://127.0.0.1:8000
这里的问题 ffmpeg 杀死了我的 v4l2 配置,我不想在我的代码中设置两次(v4l2-ctl 接口 + ffmpeg 接口)。
我也试过:
ffmpeg -loglevel debug -f rawvideo -i /dev/video0 tcp://127.0.0.1:8000
ffmpeg -loglevel debug -f rawvideo -i /dev/video0 -f rawvideo tcp://127.0.0.1:8000
我总是得到这个 stderr + exit :
[IMGUTILS @ 0x7ec1d5f0] Picture size 0x0 is invalid
[AVIOContext @ 0x1e8bb40] Statistics: 26 bytes read, 0 seeks
/dev/video0: Invalid argument
我也试过
-c:v copy
上述所有组合的参数均未成功:(
如何使用 ffmpeg 将原始二进制副本(如使用 NetCat 的“cat”或“dd”)从设备到套接字(不杀死 v4l2 配置)?
帕斯卡