25

我们有一个提供程序,它为我们提供了用于 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 链接。

4

5 回答 5

13

看看这个(你也提到过)页面

它说:

  • 协议版本 3(Android 4.0 及以上)
  • 协议版本 2 (Android 3.x)

在这里您可以查看HLS 的草稿。您可以在页面顶部选择一个版本。

在草案 3 中首次提到了寻求(与草案 2 Android 3.x 相比)

日期和时间的值提供了媒体时间线到适当挂钟时间的信息映射,可用作搜索的基础

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

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

于 2012-12-10T23:10:35.350 回答
5

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

于 2012-12-04T16:01:50.203 回答
1

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

于 2012-12-11T09:34:32.603 回答
0

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

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

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

于 2013-02-07T19:14:32.760 回答
0

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

于 2013-09-04T18:20:48.397 回答