python 将MJPEG RTSP流拆分为多个文件- GSTREAMER

2ekbmq32  于 2023-01-01  发布在  Python
关注(0)|答案(1)|浏览(152)

我有一个Xavier AGX开发工具包和x4 AGX,我希望在上面复制这个管道。我正在将RTSP流服务到_my_ip_address:8554/test。我可以在其他计算机和VLC上看到它,没有问题。流本身是MJPEG。我没有使用h264,因为我的相机可以用mjpeg获得更好的质量和更高的fps。
我明确的意图/问题陈述;我想在我的客户端上将gstreamer中的MJPEG RTSP流分割成分段的mp4。间隔长度无关紧要,只是缺少特定的命令。
我可以用ffmpeg在其他电脑上将实时RTSP流分割成块,使用起来很好;

ffmpeg -rtsp_transport tcp -i rtsp://10.42.0.1:8554/test -c copy -f segment -segment_time 600 /home/miles/Documents/line_1_%d.mp4

(how你在栈上格式化代码段吗?)
管道是从xavier端的python/gstreamer启动的,由于某种原因,在我的ubuntu机器上使用python不起作用,我安装了支持gstreamer的opencv,它正在寻找正确的python路径。
我可以导入gi等等,但是我不能让视频在我的ubuntu机器上的opencv中播放。如果有人能帮我解决这个问题,那就太好了,但不是主要问题。我很乐意使用命令行来解决这个问题。但我的想法是首先尝试使用GStreamer在Python中获取流,然后也在Python中进行多文件工作。我在上面花了很多时间,但是没有用。所以,我换成了ffmpeg,它似乎更容易找到解决方案。
导入操作系统操作系统(“ffmpeg -实时传输协议TCP -i实时传输协议:10.42.0.1:8554/test-c复制-f段-段时间600 /home/miles/文档/line_1_%d.mp4”)
看起来我应该可以用gstreamer来做这个....但是我不能理解mjpeg部分。例如,我找到了一个使用splitmuxsink的例子....

gst-launch-1.0 rtspsrc location=rtsp://10.82.131.240:8554/h264ESVideoTest ! rtph264depay ! h264parse ! splitmuxsink location=file%02d.mp4 max-size-time=10000000000

不过这需要h264,而不是mjpeg。
有人知道如何在gstreamer中做到这一点吗?否则我有一个包扎在一起的管道。

看上面,我不知道它是在两个部分。

qeeaahzv

qeeaahzv1#

不幸的是,MP4中的JPEG似乎没有在GStreamer中实现。不过,您可以切换到Matroska。从您的示例调整后的流水线将如下所示:

gst-launch-1.0 rtspsrc location=rtsp://10.82.131.240:8554/h264ESVideoTest ! rtpjpegdepay ! splitmuxsink location=file%02d.mkv muxer=matroskamux max-size-time=10000000000

相关问题