ExoPlayer和HLS流媒体

时间:2015-06-05 22:44:48

标签: android audio streaming hls

我正在编写一个通过网络播放大型MP3文件的Android应用程序。这些文件通常大约一个小时左右,而且在某些情况下,我在流中断流时会遇到一些非常不一致的行为。

为了解决这个问题,我决定转向ExoPlayer并使用HLS实现。虽然我能够毫无问题地播放Apple测试文件(beep boop),但我似乎无法让自己的任何流工作。

每当我尝试访问自己的流时,播放器出错,我得到以下堆栈跟踪:

06-05 18:15:22.898  29566-29566/com.application E/EventLogger﹕ internalError [0.66, loadError]
    java.io.EOFException
            at com.google.android.exoplayer.extractor.DefaultExtractorInput.readFully(DefaultExtractorInput.java:73)
            at com.google.android.exoplayer.extractor.ts.TsExtractor.read(TsExtractor.java:102)
            at com.google.android.exoplayer.hls.HlsExtractorWrapper.read(HlsExtractorWrapper.java:214)
            at com.google.android.exoplayer.hls.TsChunk.load(TsChunk.java:110)
            at com.google.android.exoplayer.upstream.Loader$LoadTask.run(Loader.java:242)

从Android for Android创建HLS流的正确方法是什么?为了测试,我尝试了一些ffmpeg导出并使用S3来提供文件,但是我没有成功。

其中一个样本可以在这里找到:https://s3.amazonaws.com/gte619n/test_stream/output_test.m3u8

感谢您的所有帮助和建议。

1 个答案:

答案 0 :(得分:1)

您的链接在GitHub目前可用的ExoPlayer中正常工作。

怎么做:

1)git clone https://github.com/google/ExoPlayer.git

2)在Android Studio中打开ExoPlayer / demo应用程序

3)编辑ExoPlayer / demo / src / main / java / com / google / android / exoplayer / demo / Samples.java并添加

  public static final Sample[] HLS = new Sample[] {
    new Sample("Stackoverflow",
            "https://s3.amazonaws.com/gte619n/test_stream/output_test.m3u8",
            PlayerActivity.TYPE_HLS),

并且有效。