我在家里使用AMCREST安全摄像头。我的目标是使用rtsp://我的环境是Raspberry pi,将连接到我的NVR的IP摄像机的一个实时馈送到Webportal。
我能够成功启动ffserver,但是当我尝试传递输入视频并将其流式传输到video.ffm时,转换失败。
我在命令中尝试了各种参数组合,但是下面的参数似乎非常接近,仅出现一个错误(av_interleaved_write_frame():对等连接重置)
$ffmpeg -thread_queue_size 800 -i "rtsp://home:Home1234@192.168.1.32:554/cam/realmonitor?channel=4&subtype=0" -f lavfi -i aevalsrc=0 http://127.0.0.1:8090/video.ffm
******* ffmpeg服务器配置文件内容:etc / livestream.conf
#Default port
HTTPPort 8090
HTTPBindAddress 0.0.0.0
MaxHTTPConnections 2000
MaxClients 1000
MaxBandwidth 100000
CustomLog -
#############################################################
<Feed video.ffm>
File /tmp/video.ffm # this creates a temp video.ffm file where streams are read/write
FileMaxSize 0.5G
ACL allow localhost
ACL allow 127.0.0.1
ACL allow 192.168.0.0 192.168.255.255
</Feed>
<Stream stream>
# streaming for webm file
# run : ffserver -f /etc/ffserver.conf
# run : ffmpeg -i videoname.mp4 http://localhost:8090/video.ffm
# error : encoder setup failed
Feed video.ffm
Format webm
# Audio settings
AudioCodec vorbis
AudioBitRate 64 # Audio bitrate
# Video settings
VideoCodec libvpx
VideoSize 720x486 # Video resolution
VideoFrameRate 30 # Video FPS
AVOptionVideo flags +global_header # Parameters passed to encoder
AVOptionVideo cpu-used 0
AVOptionVideo qmin 10 # lower the better, min 0
AVOptionVideo qmax 42 # higher outputs bad quality, max 63
AVOptionVideo quality good
AVOptionAudio flags +global_header
PreRoll 15
StartSendOnKey
VideoBitRate 400 # Video bitrate
</Stream>
###########################################################################
# Audio only
# run ffmpeg -i audio.mp3 http://localhost:8090/audio.ffm
# run http://localhost:8090/audio in vlc or browser
<Feed audio.ffm>
File /tmp/audio.ffm
FileMaxSize 1G
ACL allow localhost
ACL allow 127.0.0.1
ACL allow 192.168.0.0 192.168.255.255
</Feed>
<Stream audio>
Feed audio.ffm
Format mp2 #audio format
AudioCodec libmp3lame #audio codec
AudioBitRate 64 #audio bitrate
AudioChannels 1 #audio channel, 1 for mono and 2 for stereo
AudioSampleRate 44100
NoVideo #discard video
</Stream>
####################################################################
#view status of ffserver
<Stream stat.html>
Format status
ACL allow localhost
ACL allow 192.168.0.0 192.168.255.255
</Stream>
# Redirect index.html to the appropriate site
<Redirect index.html>
URL http://www.ffmpeg.org/
</Redirect>
*****在单独的控制台上成功运行的ffmpeg服务器的输出***
$ ffserver -f /etc/livestream.conf
ffserver版本3.2.14-1〜deb9u1 + rpt1版权所有(c)2000-2019 FFmpeg开发人员 使用gcc 6.3.0(Raspbian 6.3.0-18 + rpi1 + deb9u1)内置20170516 配置:--prefix = / usr --extra-version ='1〜deb9u1 + rpt1'--toolchain = hardened --libdir = / usr / lib / arm-linux-gnueabihf --incdir = / usr / include / arm -linux-gnueabihf --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b- -enable-libcaca --enable-libcdio --enable-libebur128 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame- -enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh- -enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzmq --enable-libzvbi- -enable-omx --enable-omx-rpi --enable-mmal --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libiec61883 --arch = armhf --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared libavutil 55. 34.101 / 55. 34.101 libavcodec 57. 64.101 / 57. 64.101 libavformat 57. 56.101 / 57. 56.101 libavdevice 57. 1.100 / 57. 1.100 libavfilter 6. 65.100 / 6. 65.100 libavresample 3. 1. 0 / 3. 1. 0 libswscale 4. 2.100 / 4. 2.100 libswresample 2. 3.100 / 2. 3.100 libpostproc 54. 1.100 / 54. 1.100 /etc/livestream.conf:45:设置音频采样率的默认值=22050。使用NoDefaults禁用它。 /etc/livestream.conf:45:设置音频通道数的默认值=1。使用NoDefaults禁用它。 /etc/livestream.conf:45:设置视频比特率容限的默认值=100000。使用NoDefaults禁用它。 /etc/livestream.conf:45:设置视频速率控制方程式的默认值= tex ^ qComp。使用NoDefaults将其禁用。 /etc/livestream.conf:45:设置视频最大速率的默认值=13749264。使用NoDefaults禁用它。 /etc/livestream.conf:45:设置视频缓冲区大小的默认值=800000。使用NoDefaults禁用它。 2019年6月21日星期五19:43:59 FFserver启动。
第二个控制台
$$ffmpeg -thread_queue_size 800 -i "rtsp://home:Home1234@192.168.1.32:554/cam/realmonitor?channel=4&subtype=0" -f lavfi -i aevalsrc=0 http://127.0.0.1:8090/video.ffm
*************************输出**********
Input #0, rtsp, from 'rtsp://home:Home1234@192.168.1.32:554/cam/realmonitor?channel=4&subtype=0':
Metadata:
title : Media Server
Duration: N/A, start: 0.290000, bitrate: N/A
Stream #0:0: Video: h264 (High), yuvj420p(pc, bt709, progressive), 2304x1296 [SAR 1:1 DAR 16:9], 20 fps, 250 tbr, 90k tbn, 40 tbc
Input #1, lavfi, from 'aevalsrc=0':
Duration: N/A, start: 0.000000, bitrate: 2822 kb/s
Stream #1:0: Audio: pcm_f64le, 44100 Hz, mono, dbl, 2822 kb/s
[swscaler @ 0x256dd80] deprecated pixel format used, make sure you did set range correctly
[libvpx @ 0x2564190] v1.6.1
Output #0, ffm, to 'http://127.0.0.1:8090/video.ffm':
Metadata:
title : Media Server
creation_time : now
encoder : Lavf57.56.101
Stream #0:0: Audio: vorbis (libvorbis), 22050 Hz, mono, fltp, 64 kb/s
Metadata:
encoder : Lavc57.64.101 libvorbis
Stream #0:1: Video: vp8 (libvpx), yuv420p, 720x486 [SAR 6:5 DAR 16:9], q=10-42, 400 kb/s, 20 fps, 1000k tbn, 30 tbc
Metadata:
encoder : Lavc57.64.101 libvpx
Side data:
cpb: bitrate max/min/avg: 0/0/0 buffer size: 800000 vbv_delay: -1
Stream mapping:
Stream #1:0 -> #0:0 (pcm_f64le (native) -> vorbis (libvorbis))
Stream #0:0 -> #0:1 (h264 (native) -> vp8 (libvpx))
Press [q] to stop, [?] for help
frame= 2 fps=1.2 q=0.0 size= 8kB time=00:00:00.03 bitrate=1966.0kbits/s dup=1 drop=0 speed=0.0av_interleaved_write_frame(): Connection reset by peer
Error writing trailer of http://127.0.0.1:8090/video.ffm: Connection reset by peer frame= 2 fps=1.1 q=0.0 Lsize= 40kB time=00:00:00.03 bitrate=9830.2kbits/s dup=1 drop=0 speed=0.0189x
video:29kB audio:0kB subtitle:0kB other streams:0kB global headers:4kB muxing overhead: 36.183796%
Conversion failed
我的期望是ffmpeg将开始将数据写入位于/ tmp目录中的video.ffm,以便我可以通过输入以下链接从浏览器或vlc媒体播放器读取数据 http://localhost:8090/stream
****** 2小时后更新******
我对命令参数做了些微更改,我的输出也进行了更改。在/ tmp文件夹中生成的临时视频文件看起来没有被video.ffm占用(我的分析可能是错误的)
ffmpeg -thread_queue_size 1200 -i "rtsp://home:Home1234@192.168.1.32:554/cam/realmonitor?channel=4&subtype=0" -f lavfi -i aevalsrc=0 -override_ffserver http://127.0.0.1:8090/video.ffm
*****************输出****
Past duration 0.660332 too large 376kB time=00:00:01.03 bitrate=2978.9kbits/s dup=3 drop=5 speed=0.171x
Past duration 0.637352 too large 840kB time=00:00:03.72 bitrate=1847.5kbits/s dup=14 drop=5 speed=0.213x
Past duration 0.678307 too large
Past duration 0.713280 too large 1180kB time=00:00:05.52 bitrate=1749.0kbits/s dup=21 drop=5 speed=0.218x
Past duration 0.901085 too large 1372kB time=00:00:06.72 bitrate=1670.4kbits/s dup=26 drop=5 speed=0.22x
Past duration 0.948051 too large 2456kB time=00:00:12.97 bitrate=1551.1kbits/s dup=51 drop=5 speed=0.226x
[rtsp @ 0x1fd7670] Thread message queue blocking; consider raising the thread_queue_size option (current value: 1200)
Past duration 0.713280 too large 3336kB time=00:00:17.64 bitrate=1549.0kbits/s dup=70 drop=5 speed=0.228x
[rtsp @ 0x1fd7670] max delay reached. need to consume packetbitrate=1537.0kbits/s dup=76 drop=5 speed=0.229x
[rtsp @ 0x1fd7670] RTP: missed 30 packets
[rtsp @ 0x1fd7670] max delay reached. need to consume packetbitrate=1533.3kbits/s dup=78 drop=5 speed=0.228x
[rtsp @ 0x1fd7670] RTP: missed 134 packets
[rtsp @ 0x1fd7670] max delay reached. need to consume packetbitrate=1539.5kbits/s dup=82 drop=5 speed=0.229x
[rtsp @ 0x1fd7670] RTP: missed 111 packets
[rtsp @ 0x1fd7670] max delay reached. need to consume packetbitrate=1526.3kbits/s dup=84 drop=5 speed=0.229x
[rtsp @ 0x1fd7670] RTP: missed 19 packets
[rtsp @ 0x1fd7670] max delay reached. need to consume packetbitrate=1521.7kbits/s dup=92 drop=5 speed=0.23x
[rtsp @ 0x1fd7670] RTP: missed 626 packets
Past duration 0.651329 too large 4408kB time=00:00:23.64 bitrate=1527.0kbits/s dup=94 drop=5 speed=0.23x
[rtsp @ 0x1fd7670] max delay reached. need to consume packetbitrate=1516.7kbits/s dup=94 drop=5 speed=0.23x
[rtsp @ 0x1fd7670] RTP: missed 134 packets
[rtsp @ 0x1fd7670] max delay reached. need to consume packetbitrate=1521.3kbits/s dup=98 drop=5 speed=0.231x
[rtsp @ 0x1fd7670] RTP: missed 123 packets
Past duration 0.633354 too large 4608kB time=00:00:24.98 bitrate=1511.0kbits/s dup=99 drop=5 speed=0.23x
[rtsp @ 0x1fd7670] max delay reached. need to consume packetbitrate=1523.4kbits/s dup=99 drop=5 speed=0.231x