在Android 4.0.3流媒体播放M3U8(Streaming m3u8 playlist on

2019-08-01 05:10发布

我创建了一个播放列表如下:

#EXTM3U
#EXTINF:3,File - 1
http://pilatus.d1.comp.nus.edu.sg/~a0095695/video_repo/1.mp4
#EXTINF:3,File - 2
http://pilatus.d1.comp.nus.edu.sg/~a0095695/video_repo/2.mp4
#EXTINF:-1,File - 3
http://pilatus.d1.comp.nus.edu.sg/~a0095695/video_repo/3.mp4
#EXT-X-ENDLIST

另外我使用这个代码到Android设备上播放:

MediaController mc = new MediaController(this);
VideoView videoview = (VideoView)findViewById(R.id.myvideoview);        
mc.setMediaPlayer(videoview);
videoview.setMediaController(mc);
videoview.setVideoURI(Uri.parse("http://pilatus.d1.comp.nus.edu.sg/~a0095695/video_repo/playlist.m3u8"));
videoview.requestFocus();
videoview.start();

我想短跑流,所以会造成在它上面的另一套M3U8文件适应带宽

问题是,我收到错误,如“无法播放该文件”

我究竟做错了什么?...

谢谢

Answer 1:

这是一个HLS流媒体,和Android 4.0不具有这种格式的问题。 toyr代码错了,尝试使用:

VideoView videoview = (VideoView)findViewById(R.id.myvideoview);        
videoview.setMediaController(new MediaController(this));
videoview.setVideoURI(Uri.parse("http://pilatus.d1.comp.nus.edu.sg/~a0095695/video_repo/playlist.m3u8"));
videoview.requestFocus();
videoview.setOnPreparedListener(new OnPreparedListener() {
        public void onPrepared(MediaPlayer mp) {
            mp.start();
        }
    });


Answer 2:

Android的对M3U8播放列表的支持是有限的。 只有较新的设备支持播放列表。 有些人提到,他们已经有运气的设备2.3.x. 据我所知,这个功能在Android 3.0的被提供。

看到新功能的文档

如果你有一个支持的设备来测试与和仍然遇到问题,请尝试使用httplive协议

然而,一个mp4文件应发挥。



Answer 3:

这是如何在Android的发挥.M3U8流的例子,但像其他的程序员说,是不是在所有的Android设备完全支持

activity_main.xml中

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <VideoView
        android:id="@+id/myVideoView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />
</LinearLayout>

Main.java

package com.grexample.ooyalalive;

import java.net.URL;
import android.app.Activity;
import android.net.Uri;
import android.os.Bundle;
import android.widget.MediaController;
import android.widget.VideoView;

public class Main extends Activity {

    private String urlStream;
    private VideoView myVideoView;
    private URL url;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main_vv);//***************
            myVideoView = (VideoView)this.findViewById(R.id.myVideoView);
            MediaController mc = new MediaController(this);
            myVideoView.setMediaController(mc);         
            urlStream = "http://jorgesys.net/i/irina_delivery@117489/master.m3u8";
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    myVideoView.setVideoURI(Uri.parse(urlStream)); 
                }
            });
    }
}

我见过很多人有问题打.M3U8,这取决于用于视频流,并与设备兼容的编解码器,例如我的一些.m3u8文件与X800 1200和更高的屏幕的设备只支持。



文章来源: Streaming m3u8 playlist on Android 4.0.3
标签: android http