我按照本指南操作时出现(两个交替出现的)错误通过 Raspberry Pi 进行流式传输. 除了 V4L2 之外,还有其他抓取器可以使用吗ffmpeg
?
或者还有其他我可以尝试的流媒体设置吗?我尝试了“运动”,但它非常不稳定,在 160x120 下无法获得超过几 fps 的速度。
我也尝试了 VLC,但出现了错误。(与 ALSA 有关 - 我猜是因为 RPi 或网络摄像头都没有麦克风或其他音频输入)。
(是的,网络摄像头确实可以与 RPi 配合使用,我已经设法使用它来查看它guvcview
。)
谢谢!
编辑1据我所知,几乎所有东西(例如 VLC、运动等)都使用 V4L2,因此看起来没有其他选择。
编辑2:下面是我使用过的一个配置及其结果。这是第三个问题。我无法在运行 ffmpeg/server 时复制其他两个错误消息。我已经运行了top
,其他进程几乎没有占用 CPU。令人担忧的是,网络摄像头似乎总是以 30fps 强制原始捕获。在某些配置下,系统可以应对,但输出 FPS 较低(如运动),而其他时候它会抛出一个或另一个错误。
命令:
ffserver -f ~/ffserver3.conf & ffmpeg -v verbose -r 1 -s 320x240 -f video4linux2 -i /dev/video0 http://localhost:8080/webcam.ffm
ffserver3.conf:
Port 8080
BindAddress 0.0.0.0
MaxClients 10
MaxBandwidth 50000
NoDaemon
<Feed webcam.ffm>
file /tmp/webcam.ffm
FileMaxSize 10M
</Feed>
<Stream webcam.mjpeg>
Feed webcam.ffm
Format mjpeg
VideoSize 320x240
VideoFrameRate 1
VideoBitRate 50000
VideoQMin 1
VideoQMax 10
</Stream>
<Stream stat.html>
Format status
</Stream>
结果:
ffmpeg version N-51221-gdda04a5 Copyright (c) 2000-2013 the FFmpeg developers
built on Mar 23 2013 02:21:23 with gcc 4.6 (Debian 4.6.3-12+rpi1)
configuration:
libavutil 52. 22.101 / 52. 22.101
libavcodec 55. 1.100 / 55. 1.100
libavformat 55. 0.100 / 55. 0.100
libavdevice 55. 0.100 / 55. 0.100
libavfilter 3. 48.100 / 3. 48.100
libswscale 2. 2.100 / 2. 2.100
libswresample 0. 17.102 / 0. 17.102
[video4linux2,v4l2 @ 0x256c4b0] fd:3 capabilities:4000001
[video4linux2,v4l2 @ 0x256c4b0] The driver changed the time per frame from 1/1 to 1/30
ffserver version N-51221-gdda04a5 Copyright (c) 2000-2013 the FFmpeg developers
built on Mar 23 2013 02:21:23 with gcc 4.6 (Debian 4.6.3-12+rpi1)
configuration:
libavutil 52. 22.101 / 52. 22.101
libavcodec 55. 1.100 / 55. 1.100
libavformat 55. 0.100 / 55. 0.100
libavdevice 55. 0.100 / 55. 0.100
libavfilter 3. 48.100 / 3. 48.100
libswscale 2. 2.100 / 2. 2.100
libswresample 0. 17.102 / 0. 17.102
[video4linux2,v4l2 @ 0x256c4b0] ioctl(VIDIOC_DQBUF): Input/output error
[video4linux2,v4l2 @ 0x256c4b0] Estimating duration from bitrate, this may be inaccurate
Input #0, video4linux2,v4l2, from '/dev/video0':
Duration: N/A, bitrate: 36864 kb/s
Stream #0:0: Video: rawvideo (YUY2 / 0x32595559), yuyv422, 320x240, 36864 kb/s, 30 fps, 30 tbr, 1000k tbn, 1000k tbc
[http @ 0x256d3c0] HTTP error 503 Server too busy
http://localhost:8080/webcam.ffm: Input/output error
答案1
V4L2 测试台(qv4l2 包)可以帮助了解网络摄像头参数。例如,它列出了可能的分辨率/帧速率组合。
Vivi 虚拟驱动程序(sudo modprobe vivi)可以帮助确定问题出在驱动程序还是 ffmpeg。它创建 /dev/videoX,显示一个文本卡(文本模式),其中提到了当前参数。