【问题标题】:ExoPlayer and HLS StreamingExoPlayer 和 HLS 流媒体
【发布时间】:2015-06-05 22:44:48
【问题描述】:

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

为了解决这个问题,我决定迁移到 ExoPlayer 并使用 HLS 实现。虽然我可以毫无问题地播放 Apple 测试文件(哔哔声),但我似乎无法让我自己的任何流工作。

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

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 的 MP3 创建 HLS 流的正确方法是什么?为了测试,我尝试了许多 ffmpeg 导出并使用 S3 来提供文件,但我没有成功。

可以在此处找到其中一个示例:https://s3.amazonaws.com/gte619n/test_stream/output_test.m3u8

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

【问题讨论】:

    标签: android audio streaming http-live-streaming


    【解决方案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),
    

    它成功了。

    【讨论】:

    • Hey Jacob,原来问题与 HLS 文件的特定格式有关,即文件中的空格。我相信这已在最近的版本中得到修复。感谢您的帮助!
    猜你喜欢
    • 2016-08-30
    • 1970-01-01
    • 2022-08-09
    • 1970-01-01
    • 2013-10-18
    • 2022-10-14
    • 2017-07-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多