Firefly开源社区

标题: 关于播放rtsp流的问题 [打印本页]

作者: mayday0208    时间: 2022-4-12 10:55
标题: 关于播放rtsp流的问题
你好,我在3588板子上使用opencv的videocapture打开海康rtsp流,画面为绿屏。
使用gstreamer命令和ffplay命令播放均未成功。打印信息如图、

请问这是什么问题。如何解决

ffplay.jpg (177.37 KB, 下载次数: 802)

ffplay.jpg

gstreamer.jpg (148.59 KB, 下载次数: 813)

gstreamer.jpg

opencv解rtsp.jpg (32.63 KB, 下载次数: 769)

opencv解rtsp.jpg

作者: 板蓝根    时间: 2022-4-12 14:19
gstreamer 请指定其他sink 运行,再autovideosink 验证一下
作者: 板蓝根    时间: 2022-4-12 14:29
如您提供的 log 图,gstreamer 使用了 kmssink,kmssink 默认不指定图层的话默认使用第一个图层,而 rk3588 有4个 esmart 和 4个 cluster 图层,cluster 只支持 afbc 格式,不支持 rgb/yuv,同时 kmssink 不能再 ui 层播放。如果要使用 kmssink 需要指定图层。例如:

gst-launch-1.0 playbin video-sink='kmssink plane-id=105' uri=file:///usr/local/test.mp4




作者: mayday0208    时间: 2022-4-12 14:46
板蓝根 发表于 2022-4-12 14:29
如您提供的 log 图,gstreamer 使用了 kmssink,kmssink 默认不指定图层的话默认使用第一个图层,而 rk3588 ...

加上video-sink参数后确实可以显示画面了。  那请问如何使用opencv直接拉流呢?
作者: 板蓝根    时间: 2022-4-12 14:50
为什么 opencv 会支持 mpp 解码,按道理官方只适配了第三方的 gstreamer、ffmpeg
作者: mayday0208    时间: 2022-4-12 14:56
板蓝根 发表于 2022-4-12 14:50
为什么 opencv 会支持 mpp 解码,按道理官方只适配了第三方的 gstreamer、ffmpeg

我是重新编译的opencv,那软解在板子上也是无法使用的吗
作者: 板蓝根    时间: 2022-4-12 14:58
纯 cpu 软解跟硬件没关系,应该是可以用的,你把你的测试流程发我一下,我验证一下。
作者: mayday0208    时间: 2022-4-12 15:05
板蓝根 发表于 2022-4-12 14:58
纯 cpu 软解跟硬件没关系,应该是可以用的,你把你的测试流程发我一下,我验证一下。
  1. #include<opencv2/opencv.hpp>
  2. #include<iostream>

  3. using namespace std;
  4. using namespace cv;

  5. int main(int argc,char **argv)
  6. {
  7.     VideoCapture capture("rtsp://admin:ai123456@192.168.165.109:554/h264/ch1/sub/av_stream");
  8. //    VideoCapture capture("/home/firefly/222.h264");
  9.     namedWindow("myCamera",CV_WINDOW_AUTOSIZE);
  10.     while(true)
  11.     {
  12.         Mat frame;
  13.         capture>>frame;
  14.         imshow("myCamera",frame);
  15.         waitKey(30);
  16.     }
  17.     return 0;
  18. }
复制代码

opencv官方下载3.4.5的源码,cmake -D CMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local .. ,make,make install进行编译。opencv打开海康相机的测试代码已经贴上。  rtsp地址用vlc测试可以播放
作者: 板蓝根    时间: 2022-4-12 15:39
1.  sudo apt update
2.  sudo apt install libopencv-dev
3.  sudo apt install g++
4. g++ -o test test.c -lopencv_stitching -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_dnn_objdetect -lopencv_dnn_superres -lopencv_dpm -lopencv_highgui -lopencv_face -lopencv_freetype -lopencv_fuzzy -lopencv_hdf -lopencv_hfs -lopencv_img_hash -lopencv_line_descriptor -lopencv_quality -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_shape -lopencv_stereo -lopencv_structured_light -lopencv_phase_unwrapping -lopencv_superres -lopencv_optflow -lopencv_surface_matching -lopencv_tracking -lopencv_datasets -lopencv_text -lopencv_dnn -lopencv_plot -lopencv_ml -lopencv_videostab -lopencv_videoio -lopencv_viz -lopencv_ximgproc -lopencv_video -lopencv_xobjdetect -lopencv_objdetect -lopencv_calib3d -lopencv_imgcodecs -lopencv_features2d -lopencv_flann -lopencv_xphoto -lopencv_photo -lopencv_imgproc -lopencv_core -I/usr/include/opencv4/opencv -I/usr/include/opencv4

5. ./test



我这边测试没有问题,另外我发现这真的好像在调用 mpp。
作者: mayday0208    时间: 2022-4-12 16:00
板蓝根 发表于 2022-4-12 15:39
1.  sudo apt update
2.  sudo apt install libopencv-dev
3.  sudo apt install g++

你说直接命令安装的opencv吗。我试试
作者: mayday0208    时间: 2022-4-12 16:14
板蓝根 发表于 2022-4-12 15:39
1.  sudo apt update
2.  sudo apt install libopencv-dev
3.  sudo apt install g++

你好,我用你的方法测试了下,也是绿屏。
作者: 板蓝根    时间: 2022-4-12 16:46
你是不是设置过某些环境变量,我看了一下 opencv, opencv 可以内部集成 gstreamer, 很有可能是用 gstreamer 播放的,如果是这个问题可能和 gstreamer 是一样的
作者: mayday0208    时间: 2022-4-12 16:53
板蓝根 发表于 2022-4-12 16:46
你是不是设置过某些环境变量,我看了一下 opencv, opencv 可以内部集成 gstreamer, 很有可能是用 gstream ...

我对比了下我们的打印信息,发现rga_api的版本不同,我这里是1.3.会不会跟这个有关。我是在https://www.t-firefly.com/doc/download/161.html这个网页下载的ubuntu固件进行刷机的。   rga的库我用的是rknpu2/examples/3rdparty/rga/RK3588/lib/Linux/aarch64目录下的librga.so。 配置了一个我编译的opencv环境后,其他的环境变量再没动过了
作者: mayday0208    时间: 2022-4-12 16:59
板蓝根 发表于 2022-4-12 16:46
你是不是设置过某些环境变量,我看了一下 opencv, opencv 可以内部集成 gstreamer, 很有可能是用 gstream ...

opencv调用gst的插件这个我知道。需要编译的时候配置参数,我并没有选择gstreamer。所以应该跟gst无关
作者: 板蓝根    时间: 2022-4-12 17:12
但是我看到了 mpp 的打印了呀,rockchip 只对接了 gstreamer 和 ffmpeg,没有对接 opencv 除非是调用了 gst/ffmpeg。我这边刷了固件 apt install 安装 opencv4 默认系统环境变量,是没有问题的
作者: mayday0208    时间: 2022-4-12 17:20
板蓝根 发表于 2022-4-12 17:12
但是我看到了 mpp 的打印了呀,rockchip 只对接了 gstreamer 和 ffmpeg,没有对接 opencv 除非是调用了 gst ...

gst调用的时候代码中也要写接口= =那这个问题好奇怪。 我重新刷机,直接apt安装opencv再试下。 那个rga的版本重要吗,要怎么升到1.7.
作者: mayday0208    时间: 2022-4-13 09:30
板蓝根 发表于 2022-4-12 17:12
但是我看到了 mpp 的打印了呀,rockchip 只对接了 gstreamer 和 ffmpeg,没有对接 opencv 除非是调用了 gst ...

你好。我重新刷机了。直接按照你的步骤apt安装了opencv,其他任何环境都没有更改。 结果还是跟之前一样。请问你的板子是刷的哪个固件?
作者: 板蓝根    时间: 2022-4-13 09:32
验证固件:ITX-3588J_Ubuntu20.04-Gnome-r211_v0.0.1c_220402.img
作者: mayday0208    时间: 2022-4-13 09:55
板蓝根 发表于 2022-4-13 09:32
验证固件:ITX-3588J_Ubuntu20.04-Gnome-r211_v0.0.1c_220402.img

是不一样。。我看这个固件是4月2号上传的。我4月1号下载的= =比你的低一个版本。我正在下载新的固件。希望可以顺利
作者: 街角「咖啡店」    时间: 2022-5-6 11:39
板蓝根 发表于 2022-4-12 15:39
1.  sudo apt update
2.  sudo apt install libopencv-dev
3.  sudo apt install g++

你好请问有尝试使用Opencv+GStreamer进行推流么?
这几天看到了这篇文章感觉应该可行,但是实际运行时候报错,可能是参数配置不正确,请教有什么解决办法么?
参考地址:https://funvision.blogspot.com/2 ... h-gstreamer-on.html
VideoWriter writer;
// Write this string to one line to be sure!!
writer.open("appsrc ! videoconvert ! videoscale ! video/x-raw,width=640,height=480
            ! x264enc speed-preset=veryfast tune=zerolatency bitrate=800 !
             rtspclientsink location=rtsp://localhost:8554/mystream ",
              0, 20, Size(640, 480), true);

感觉"appsrc!-----location"这串配置需要适配。谢谢了
作者: 派大星    时间: 2023-10-10 12:40
mayday0208 发表于 2022-4-13 09:55
是不一样。。我看这个固件是4月2号上传的。我4月1号下载的= =比你的低一个版本。我正在下载新的固件。希 ...

你好 解决了吗~




欢迎光临 Firefly开源社区 (https://dev.t-firefly.com/) Powered by Discuz! X3.1