2016-05-13 44 views
1

我是gstreamer的新手。我想实现一个iOS应用通过gstreamer播放hls视频。我使用版本1.6.2。我跟着在互联网上的一些教程,所以我得到了下面的管道:如何在Gstreamer中构建hls视频管道(AES加密或不加密)

souphttpsrc location=some_m3u8_url ! hlsdemux ! tsdemux name=mux mux. ! queue ! h264parse ! avdec_h264 ! autovideosink mux. ! queue ! aacparse ! faad ! autoaudiosink

我发现了一些HLS视频要测试的网址,但奇怪的是,这部分的工作。
有时它会在几秒钟内播放视频,然后停止播放:Error received from element hlsdemux0: Internal data stream error.
有时它不会播放视频,只是显示此视频的第一帧。

我也试过playbindecodebin,但他们没有工作。错误信息,如:
Buffering 4%
Buffering 8%
Error received from element hlsdemux0: GStreamer encountered a general stream error

这种错误使我懊恼星期,我找不到任何帮助。此外,我需要的还是播放加密的视频,但我不知道该功能是否已整合。

希望有人能帮助我或给我一些建议。非常感谢!

PS:开发环境:Xcode 7.3,iOS 9.3.1(ipad)。

+0

你能升级到1.6.4吗?我认为有一些错误修正..你也可以玩缓冲区大小和使用更大的缓冲区,也可以使用'uridecodebin uri = somelocation buffer-size = 10000000 name = u u'更简单的管道。 ! autovideosink u。 autoaudiosink'或类似的东西.. – nayana

+0

@otopolsky感谢您的建议。我更新了,但没有更好的。它缓冲到98%,停在第一帧。不管我如何改变缓冲区大小,我都无法播放它。 – Silver

回答

0

几个月前我找到了解决方案,它的工作完美。所以我张贴它以防万一需要。

souphttpsrc name=src ! hlsdemux ! tsdemux name=u u. ! queue ! h264parse ! avdec_h264 ! autovideosink u. ! queue ! aacparse ! faad ! audioconvert ! audioresample ! autoaudiosink

当然你也可以使用playbin或uridecodebin为那些谁拥有定制的没有多少需求。