Android 3.0和seeking上的HLS(http实时流媒体)

Android 3.0和seeking上的HLS(http实时流媒体),android,android-3.0-honeycomb,http-live-streaming,Android,Android 3.0 Honeycomb,Http Live Streaming,我们有一个提供商为我们提供HLS流的m3u8文件(最初用于iOS应用程序) Android 3.0+支持http实时流媒体(http://developer.android.com/guide/appendix/media-formats.html)-事实上,我们可以使用Android 3.0+上的标准VideoView播放这些m3u8文件 编辑:Android似乎将此视为“实时”视频馈送,并禁用搜索或计算视频持续时间的功能。(作为iOS,您可以在流中毫无疑问地搜索) 有没有办法强迫androi

我们有一个提供商为我们提供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>


这是使用苹果的HLS链接示例。

抱歉,伙计们,你们试图从石头中获取血液。Android 3.0支持非常有限的HLS子集,要支持在实时流中搜索,您需要一个比Google提供的更好的HLS客户端。

看看这个(您也提到过)

它说:

  • 协议版本3(Android 4.0及以上版本)
  • 协议版本2(Android 3.x)
在这里你可以查一下。您可以在页面顶部选择一个版本

对seeking的首次引用出现在草案3中(与草案2 Android 3.x相比)

价值 日期和时间的映射提供了时间线的信息映射 将介质传输至适当的挂钟时间,该时间可用作 寻找的基础

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


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

我不确定,但由于VideoView不支持查找你的案例,你可以尝试一些不同的选项,如:(这很容易编译)

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

code.google.com上有一个关于这一点的bug——你可以在那里“明星”或投票:


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

您最终找到了解决此问题的方法吗?我也想在HLS live stream中实现搜索。你找到解决办法了吗?