我是gstreamer的新手。我想通过gstreamer实现一个iOS应用程序来播放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视频URL进行测试,但奇怪的是,它部分起作用了
有时它会在几秒钟内播放视频,然后停止并给出:Error received from element hlsdemux0: Internal data stream error.
有时它不播放视频,只是显示视频的第一帧。
我也试过playbin
和decodebin
,但它们都不起作用。错误消息如下:Buffering 4%
Buffering 8%
Error received from element hlsdemux0: GStreamer encountered a general stream error
这种错误让我沮丧了好几个星期,找不到任何帮助。此外,我还需要播放加密视频,但我不知道这个功能是否集成。
希望有人能帮我或者给我一些建议。非常感谢!
PS:开发环境:Xcode 7.3,iOS 9.3.1(ipad)。
我几个月前就找到了解决方案,而且效果很好。所以我把它贴出来以备不时之需。
souphttpsrc name=src ! hlsdemux ! tsdemux name=u u. ! queue ! h264parse ! avdec_h264 ! autovideosink u. ! queue ! aacparse ! faad ! audioconvert ! audioresample ! autoaudiosink
当然,对于那些没有太多定制需求的人,你可以使用playbin或uridecodebin。