eguid/easyCV

ubuntu下运行报错

bingwenwuhen opened this issue · 5 comments

我在mac下运行可以正常得到截图,在Ubuntu下报错,mac中ffmpeg版本为
ffmpeg version 4.1.4 Copyright (c) 2000-2019 the FFmpeg developers
ubuntu中版本为:
ffmpeg version 4.2-0york0~18.04 Copyright (c) 2000-2019 the FFmpeg developers

Ubuntu中的报错为:
[rtsp @ 0x7f2be4122d40] method PAUSE failed: 551 Option not supported
[hevc @ 0x7f2be411ea00] missing picture in access unit
[IMGUTILS @ 0x7f2c50530040] Picture size 0x0 is invalid
Assertion desc failed at libswscale/swscale_internal.h:668

请问这是什么原因?

eguid commented

如果只看报错信息“missing picture in access unit”和“ Picture size 0x0 is invalid”的话,应该是rtsp视频源丢帧导致空帧,这两个错误都是发生在解析rtsp中的ps流时发生的错误,希望对你有用

如果只看报错信息“missing picture in access unit”和“ Picture size 0x0 is invalid”的话,应该是rtsp视频源丢帧导致空帧,这两个错误都是发生在解析rtsp中的ps流时发生的错误,希望对你有用

我晚上试了下命令行截取一张图片, 命令为:ffmpeg -i "rtsp://admin:xia123456@192.168.1.64:554/h264/ch1/main/av_stream" -y -f image2 -r 1/1 1 img.jpg
在mac下可以成功截取图片,在Ubuntu下则不行,在Ubuntu下的输出为:
bingwen@bingwen-VirtualBox:$ ffmpeg -i "rtsp://admin:xia123456@192.168.1.64:554/h264/ch1/main/av_stream" -y -f image2 -r 1/1 1 img.jpg
ffmpeg version 4.2-0york0
18.04 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 7 (Ubuntu 7.4.0-1ubuntu118.04.1)
configuration: --prefix=/usr --extra-version='0york0
18.04' --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-nonfree --enable-libfdk-aac --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
libavutil 56. 31.100 / 56. 31.100
libavcodec 58. 54.100 / 58. 54.100
libavformat 58. 29.100 / 58. 29.100
libavdevice 58. 8.100 / 58. 8.100
libavfilter 7. 57.100 / 7. 57.100
libavresample 4. 0. 0 / 4. 0. 0
libswscale 5. 5.100 / 5. 5.100
libswresample 3. 5.100 / 3. 5.100
libpostproc 55. 5.100 / 55. 5.100
[rtsp @ 0x55b084a75a40] UDP timeout, retrying with TCP
[rtsp @ 0x55b084a75a40] method PAUSE failed: 551 Option not supported
[rtsp @ 0x55b084a75a40] Could not find codec parameters for stream 0 (Video: hevc, none): unspecified size
Consider increasing the value for the 'analyzeduration' and 'probesize' options
Input #0, rtsp, from 'rtsp://admin:xia123456@192.168.1.64:554/h264/ch1/main/av_stream':
Metadata:
title : Media Presentation
Duration: N/A, bitrate: N/A
Stream #0:0: Video: hevc, none, 90k tbr, 90k tbn, 90k tbc
Output #0, image2, to '1':
Output file #0 does not contain any stream

确实是说output不包含流,这里是不是我的ffmpeg设置或者配置有问题啊?

应该是找到问题了,应该是摄像头只支持tcp传输,然后ffmpeg默认是udp传输,我命令行强制使用tcp传输就可以得到图片,但是我看您的代码里面怎么添加option,设置"rtsp_transport", "tcp"?,easycv里面和OpenCV的用法还是有些不一样的

解了,GrabberTmplate中在open_input方法中增加option,set "rtsp_transport", "tcp就可以了

eguid commented

感谢提供解决办法,我会在新版本中针对rtsp添加这个参数