硬件和软件:Raspberry Pi 4,IP摄像机,Raspbian Buster,Gstreamer 1.14.1(来自存储库)。 Raspberry和摄像头位于本地网络上。
我正在尝试通过以下管道运行RTSP视频流:
gst-launch-1.0 rtspsrc location='rtsp://web_camera_ip' ! rtph264depay ! h264parse ! v4l2h264dec ! autovideosink
在一分钟之内,播放停止。
日志:
0:00:00.681624278 1491 0xb4810980 FIXME default gstutils.c:3981:gst_pad_create_stream_id_internal:<fakesrc0:src> Creating random stream-id, consider implementing a deterministic way of creating a stream-id
Progress of execution: (request) Sent PLAY request
0:00:01.155264612 1491 0xb1507fb0 WARN v4l2 gstv4l2object.c:4186:gst_v4l2_object_probe_caps:<v4l2h264dec0:src> Failed to probe pixel aspect ratio with VIDIOC_CROPCAP: An inadmissible argument
0:00:01.166871436 1491 0xb1507fb0 WARN v4l2 gstv4l2object.c:4186:gst_v4l2_object_probe_caps:<v4l2h264dec0:src> Failed to probe pixel aspect ratio with VIDIOC_CROPCAP: An inadmissible argument
0:00:01.170107746 1491 0xb1507fb0 FIXME basesink gstbasesink.c:3145:gst_base_sink_default_event:<autovideosink0-actual-sink-xvimage> stream-start event without group-id. Consider implementing group-id handling in the upstream elements
0:00:01.174576265 1491 0xb1507fb0 WARN v4l2videodec gstv4l2videodec.c:808:gst_v4l2_video_dec_decide_allocation:<v4l2h264dec0> Duration invalid, not setting latency
0:00:01.211967620 1491 0xb48105b0 WARN v4l2bufferpool gstv4l2bufferpool.c:1189:gst_v4l2_buffer_pool_dqbuf:<v4l2h264dec0:pool:src> Driver should never set v4l2_buffer.field to ANY
此行在停止时显示:
0:00:13.102438914 1491 0xb48105b0 WARN v4l2allocator gstv4l2allocator.c:1349:gst_v4l2_allocator_dqbuf:<v4l2h264dec0:pool:src:allocator> V4L2 provided buffer has bytesused 0 which is too small to include data_offset 0
我尝试过的方法(无助于解决问题):
如果将解码器替换为假接收器,则不会出现错误:
gst-launch-1.0 rtspsrc location='rtsp://web_camera_ip' ! rtph264depay ! h264parse ! fakesink
其他信息:
我的相机在图像上方显示时间(小时,分钟,秒)。 播放总是以一定的秒数停止。相机重新启动时,此值会随机更改-17,32,55 ... 更改相机中的时间并不能解决问题。
Raspberry上的VLC播放器可以毫无问题地播放此摄像机中的视频流
Gstreamer播放本地h264文件没有任何问题
Gstreamer可以毫无问题地播放Internet上的RSTP电视频道广播。
我还尝试播放IP摄像机的子流(低分辨率)和智能手机(IP Webcam应用程序)的RTSP流。出现相同的问题。
在Raspberry 3上运行此项目(在SD卡上)时,问题仍然存在。
在具有Raspbian Stretch和来自存储库的Gstreamer 1.10的Raspberry 3上,没有问题。
谢谢您的回答!
答案 0 :(得分:0)
问题出在我的本地网络中。来自任何设备的RTSP流会定期中断一秒钟。使用VLC播放器时,它不可见,因为它会立即重新开始广播。在这种情况下,Gstreamer会中断流并生成错误消息。
我已将IP摄像机通过以太网直接连接到Raspberry,一切正常。 互联网上的广播也很稳定。
答案 1 :(得分:0)
我遇到了同样的问题。幸运的是,它似乎已在gstreamer 1.16.2中修复。我使用以下脚本的变体构建 https://github.com/PietroAvolio/Building-Gstreamer-Raspberry-Pi-With-SRT-Support/blob/master/gstreamer-build.sh
使用1.16.2可以继续运行并且不会挂起。