我在使用 FFmpeg 时遇到了一个奇怪的问题。
我正在尝试将 Raspberry Pi 上的视频流式传输到 NodeJS 服务器。当直接通过 SSH 连接时,此命令效果很好:
ffmpeg -s 320x240 -f video4linux2 -i /dev/video0 -f mpeg1video -vf "vflip,hflip" -b:v 800k -r 30 http://localhost:8082/camera/320/240/
但是,当我尝试在 中运行命令时screen
,它不起作用。我收到以下错误:
[video4linux2,v4l2 @ 0x21642a0] The device does not support the streaming I/O method.
/dev/video0: Function not implemented
我使用同一用户运行了该命令。使用 运行该命令时出现相同错误sudo
。它在服务中也不起作用systemd
。
看起来它不喜欢在非交互式 shell 中运行?但我不知道为什么... 有什么想法吗?
答案1
将评论转换为答案:
环境变量
ffmpeg 依赖于 shell 环境变量LD_PRELOAD
。
为了使 ffmpeg 即使在屏幕内运行时也能正常工作,请使用
export LD_PRELOAD=/usr/lib/uv4l/uv4lext/armv6l/libuv4lext.so