我们有一个提供商,为HLS流提供m3u8文件(最初打算用于iOS应用程序)。
Android 3.0+支持http直播(http://developer.android.com/guide/appendix/media-formats.html) - 我们实际上可以使用Android 3.0+上的标准VideoView播放这些m3u8文件。
编辑:Android似乎将此视为“实时”视频Feed,并禁用查找或计算视频时长的功能。 (在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链接。
答案 0 :(得分:13)
看看这个(你也提到了)page
它说:
- 协议版本3(Android 4.0及更高版本)
- 协议版本2(Android 3.x)
在这里,您可以查看draft's for HLS。您可以在页面顶部选择一个版本。
首次参考求得出现在草案3中(与草案2 Android 3.x比较)
价值 日期和时间提供时间线的信息映射 媒体到适当的挂钟时间,可以用作 寻求
的基础
只是为了确保。我没有阅读整篇草稿。但是,我的猜测是Android在Android 3.0中实现了相当早的草案,他们可能部分地实现了它,这足以发挥作用,但这还不够寻求。
我不认为你有一个简单的解决办法,除了在第三方HLS客户端(如vipw所建议的)中使用
答案 1 :(得分:5)
答案 2 :(得分:1)
我不确定,但由于VideoView不支持寻找您的案例,您可以尝试一些不同的选项,例如:http://wiki.videolan.org/AndroidCompile(这很容易编译)
答案 3 :(得分:0)
与此有些相关 - 似乎存在一个错误,阻止实时HLS源在实时点启动,因为他们应该这样做。我想这可能是由于这种寻求限制。 当您在Android上启动实时HLS订阅源(没有EXT-X-ENDLIST标记)时,核心HLS解析组件中的错误无法在实时点(订阅源结束)启动,而是从流的开头开始。
code.google.com上存在一个关于此问题的错误 - 您可以“#star;&#39;或在那里赞成:
答案 4 :(得分:0)
我的猜测是您所描述的搜索行为是使用仅限iframe的播放列表(#EXT-X-I-FRAMES-ONLY)实现的,这需要客户端至少支持Pantos规范的第4版。