按照以下步骤操作在这篇博客文章中将视频流式传输到网络。
但我无法将视频从装有 Logitech 摄像头的 Raspberry Pi 传输到 Linux
我收到此错误:
“无法找到适合的输出格式‘http://本地主机:8090/feed1.ffm‘http://本地主机:8090/feed1.ffm: 无效的论点”
命令:
ffserver -f /etc/ffserver.conf & ffmpeg -s 600x480 -f video4linux2 -i /dev/video0 http://localhost:8090/feed1.ffm
输出:
ffmpeg version N-90077-g56f77b0 Copyright (c) 2000-2018 the FFmpeg developers built with gcc 4.9.2 (Raspbian 4.9.2-10)
配置:
--arch=armel --target-os=linux --enable-gpl --enable-libx264 --enable-nonfree --enable-libtheora --enable-libvorbis
libavutil 56. 7.101 / 56. 7.101
libavcodec 58. 11.101 / 58. 11.101
libavformat 58. 9.100 / 58. 9.100
libavdevice 58. 1.100 / 58. 1.100
libavfilter 7. 12.100 / 7. 12.100
libswscale 5. 0.101 / 5. 0.101
libswresample 3. 0.101 / 3. 0.101
libpostproc 55. 0.100 / 55. 0.100
ffserver version N-87073-g1c56bec Copyright (c) 2000-2017 the FFmpeg developers built with gcc 4.9.2 (Raspbian 4.9.2-10)
配置:
libavutil 55. 74.100 / 55. 74.100
libavcodec 57.103.101 / 57.103.101
libavformat 57. 78.100 / 57. 78.100
libavdevice 57. 7.101 / 57. 7.101
libavfilter 6.100.100 / 6.100.100
libswscale 4. 7.103 / 4. 7.103
libswresample 2. 8.100 / 2. 8.100
/etc/ffserver.conf:1: Port option is deprecated. Use HTTPPort instead.
/etc/ffserver.conf:3: BindAddress option is deprecated. Use HTTPBindAddress instead.
/etc/ffserver.conf:9: NoDaemon option has no effect. You should remove it.
/etc/ffserver.conf:27: Setting default value for video bit rate tolerance = 20000. Use NoDefaults to disable it.
/etc/ffserver.conf:27: Setting default value for video rate control equation = tex^qComp. Use NoDefaults to disable it.
/etc/ffserver.conf:27: Setting default value for video max rate = 30906320. Use NoDefaults to disable it.
/etc/ffserver.conf:27: Setting default value for video buffer size = 160000. Use NoDefaults to disable it.
[video4linux2,v4l2 @ 0x1fe71f0] The V4L2 driver changed the video from 600x480 to 640x480
Input #0, video4linux2,v4l2, from '/dev/video0':
Duration: N/A, start: 16778.275190, bitrate: 147456 kb/s
Stream #0:0: Video: rawvideo (YUY2 / 0x32595559), yuyv422, 640x480, 147456 kb/s, 30 fps, 30 tbr, 1000k tbn, 1000k tbc
[NULL @ 0x1fe8e60] Unable to find a suitable output format for 'http://localhost:8090/feed1.ffm' http://localhost:8090/feed1.ffm: Invalid argument
[4]- Exit 1 ffserver -f /etc/ffserver.conf
答案1
ffserver
已于 2018/01/06 起被移除N-89724-g6b35a83
。因此,您需要编译较旧的版本。
答案2
ffserver
由于缺乏用户和开发人员的兴趣,已于 2018-01-06 从 FFmpeg 中移除。最后一个提交包括ffserver
。2ca65fc
如果您想使用,ffserver
您可以查看此提交并编译:
git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
cd ffmpeg
git checkout 2ca65fc7b74444edd51d5803a2c1e05a801a6023
./configure
make -j4
或者,您可以使用FFmpeg 3.4 发布分支但上述提交是较新的。
查看其中之一FFmpeg 编译指南有关编译的更多信息和说明。
ffserver
在撰写此答案时,macOS 用户可以下载包含以下内容的 FFmpeg 3.4 静态版本:永聚。
答案3
我刚刚确认 ffmpeg 版本 4.1.2 不支持输出参数...
http://X.X.X.X:8080/camera.ffm
...当用于类似...的事情时
ffmpeg -nostdin -f rawvideo -pix_fmt bgr32 -s 768x432 -i /data/media/someFileOfYOurs http://X.X.X.X:8080/camera.ffm
...用于 ffserver。这将导致错误...
Unable to find a suitable output format for 'http://X.X.X.X:8080/camera.ffm'
http://X.X.X.X:8080/camera.ffm: Invalid argument
要将 ffmpeg 与 ffserver 一起使用,您需要使用旧版本的 ffmpeg。
我已经确认 ffmpeg 版本 3.4.2 确实支持上面提到的输出参数并且可以与 ffserver 配合使用
答案4
如果你使用 Docker,这个版本的 Alpine 镜像比较旧,并且会包含包含 ffserver 的正确版本的 ffmpeg
示例 Dockerfile
FROM alpine:3.8
RUN apk add curl bash ffmpeg && \
rm -rf /var/cache/apk/*
COPY ffserver.conf /etc/ffserver.conf
ENTRYPOINT [ "ffserver" ]