FFmpeg 仅在“终端”中工作,但不能通过“屏幕”工作。

FFmpeg 仅在“终端”中工作,但不能通过“屏幕”工作。

我在使用 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

相关内容