如何在 Gstreamer 中构建 hls 视频(AES 加密与否)的管道

How to construct the pipeline for hls videos (AES encrypted or not) in Gstreamer

我是 gstreamer 的新手。我想实现一个 iOS 应用程序来播放 gstreamer 的 hls 视频。我使用的是 1.6.2 版本。我遵循了互联网上的一些教程,所以我得到了以下管道:

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).

我几个月前就找到了解决方案,而且效果很好。所以我 post 以备不时之需。

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

当然没有太多定制需求的可以使用playbin或者uridecodebin