【问题标题】:HLS (http live streaming) on Android 3.0 and seekingAndroid 3.0 上的 HLS(http 直播)和寻求
【发布时间】:2012-06-16 16:29:44
【问题描述】:

我们有一个提供程序,可以为我们提供用于 HLS 流的 m3u8 文件(最初旨在用于 iOS 应用程序)。

Android 3.0+ 支持 http 直播 (http://developer.android.com/guide/appendix/media-formats.html) - 实际上我们可以在 Android 3.0+ 上使用标准 VideoView 播放这些 m3u8 文件。

编辑:Android 似乎将此视为“实时”视频源,并禁用了寻找或计算视频持续时间的能力。 (而 iOS 让您可以毫无问题地在流中搜索)

有没有办法强制 android 3.0+ 在这些文件中寻找?

这是供其他人测试的示例活动:

import android.app.Activity;
import android.os.Bundle;
import android.widget.MediaController;
import android.widget.VideoView;

public class SandboxActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        VideoView vw = (VideoView) findViewById(R.id.videoView);
      vw.setVideoPath("http://devimages.apple.com/iphone/samples/bipbop/gear4/prog_index.m3u8"); 
        vw.setMediaController(new MediaController(this));
        vw.requestFocus();
        vw.start();
    }
}

和一个示例布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center" android:id="@+id/root">

    <VideoView
        android:id="@+id/videoView"
        android:layout_width="wrap_content"
        android:layout_height="match_parent" />
</RelativeLayout>

这是使用来自 Apple 的示例 HLS 链接。

【问题讨论】:

  • 你最后找到解决这个问题的办法了吗?
  • 我也想在 HLS 直播中实现搜索。你找到解决办法了吗?

标签: android android-3.0-honeycomb http-live-streaming


【解决方案1】:

看看这个(你也提到过)page

上面写着:

  • 协议版本 3(Android 4.0 及更高版本)
  • 协议版本 2 (Android 3.x)

您可以在这里查看draft's for HLS。您可以在页面顶部选择一个版本。

在草案 3 中首次提及搜索(与草案 2 Android 3.x 相比)

价值 日期和时间提供了时间线的信息映射 媒体到适当的挂钟时间,可用作 寻求

的基础

只是为了确定。我没有通读整个草稿。但是,我的猜测是Android在Android 3.0中实现了相当早的草案,他们可能已经部分实现了它,这足以玩,但它还不够寻求。

我不认为你有一个简单的解决方法,除了引入 3rd 方 HLS 客户端(如 vipw 所建议的那样)

【讨论】:

    【解决方案2】:

    对不起,伙计们,你们正试图从石头上取血。 Android 3.0 支持的 HLS 子集非常有限,为了支持在实时流中搜索,您将需要比 Google 提供的更好的 HLS 客户端。

    【讨论】:

      【解决方案3】:

      我不确定,但由于 VideoView 不支持查找您的案例,您可以尝试一些不同的选项,例如:http://wiki.videolan.org/AndroidCompile(易于编译)

      【讨论】:

        【解决方案4】:

        与此有点相关 - 似乎有一个错误会阻止实时 HLS 提要按应有的方式从实时点开始。我想这可能是由于这种寻求限制。 当您在 Android 上启动实时 HLS 提要(没有 EXT-X-ENDLIST 标记)时,核心 HLS 解析组件中存在一个错误,无法在实时点(提要结尾)开始,而是从流的开头开始。

        在 code.google.com 上提交了一个关于此问题的错误 - 您可以在那里“加星”或投票:

        http://code.google.com/p/android/issues/detail?id=37156

        【讨论】:

          【解决方案5】:

          我的猜测是您描述的搜索行为是使用仅 iframe 播放列表 (#EXT-X-I-FRAMES-ONLY) 实现的,这需要至少支持 Pantos 规范第 4 版的客户端。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-02-12
            • 1970-01-01
            • 2015-06-05
            • 2012-10-20
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多