我正在尝试从m3u8文件中录制流。
这条管道有效:
gst-launch-0.10 -e souphttpsrc location=(mysrc.m3u8) ! queue ! hlsdemux ! queue ! mpegtsparse ! queue ! mpegtsdemux ! queue ! audio/mpeg ! queue ! filesink location=test.ts
(有时)录制音频流
但我无法录制视频,无论我做什么都会崩溃
我尝试过这样的事情:
gst-launch-0.10 souphttpsrc location=(mysrc.m3u8) ! queue ! hlsdemux ! queue ! mpegtsparse ! queue ! mpegtsdemux ! queue ! video/x-264 ! queue ! filesink location=test.ts
但它没有任何作用。
答案 0 :(得分:2)
您正在使用gstreamer 0.10,它已过时且未经过分类,所有用户都应升级到1.x系列。
鉴于此警告,您不清楚是否要保存mpegts流或其中的流。
要保存mpegts流,您可以这样做:
gst-launch-1.0 http://path/to/your/stream.m3u8 ! hlsdemux ! filesink
请注意,如果HLS播放列表包含多个比特率,hlsdemux可能会切换比特率,并且它会失败,因为gst-launch-1.0无法处理此问题。 (这是一个调试和测试工具)。您可以设置固定的连接速度"使它总是使用你想要克服这个问题的相同比特率。
如果您只想获得视频流而且您知道它是H264,请尝试:
gst-launch-1.0 http://path/to/your/stream.m3u8 ! hlsdemux ! tsdemux ! queue ! video/x-h264 ! filesink
将它保存为容器格式以便以后更容易使用可能是个更好的主意,例如:
gst-launch-1.0 http://path/to/your/stream.m3u8 ! hlsdemux ! tsdemux ! queue ! video/x-h264 ! h264parse ! qtmux ! filesink
但是,正如我所说的那样,请转到1.x,HLS在1.x时比在0.10时好得多,它应该可以工作。