2012-10-06 46 views
1

我創建了一個播放列表如下流M3U8播放列表:在Android 4.0.3

#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文件,以適應帶寬

問題是我收到錯誤,如「無法播放文件」

什麼我做錯了嗎?......

感謝

+0

試試唯一播放'http:// pilatus.d1.comp.nus.edu.sg /〜a0095695/video_repo/1.mp4' – Leandros

+0

是的。 Mp4工作正常,但我需要在Android設備上播放m3u8播放列表。感謝您的幫助,但。 :) –

+0

很簡單,只需打開Android中的文件並將URL解析到播放器即可。 Theres沒有其他解決方案。 – Leandros

回答

1

Android的對M3U8播放列表的支持是有限的。只有較新的設備支持播放列表。有些人提到他們已經使用2.3.x版設備。據我所知,這個功能是在Android 3.0中提供的。

new features documentation

如果你有一個支持的設備與測試,並仍然但是遇到問題,請嘗試使用httplive協議

一個mp4文件應發揮。

+0

感謝您給我的問題:)。 我試圖直接播放mp4文件並且其工作正常。我最近使用ffmpeg創建了傳輸流(.ts)並將其添加到了我的m3u8播放列表中。但是,當我嘗試在Android 4.0.4 Asus Transformer平板電腦上播放時,它不顯示任何流。我的m3u8文件不正確?我甚至嘗試在iPad上玩,但沒有玩。 –

4

這是一個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(); 
     } 
    }); 
1

這是如何在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/[email protected]/master.m3u8"; 
      runOnUiThread(new Runnable() { 
       @Override 
       public void run() { 
        myVideoView.setVideoURI(Uri.parse(urlStream)); 
       } 
      }); 
    } 
} 

我已經看到了很多人的問題打.M3U8,這取決於用於視頻流,並與設備兼容的編解碼器,例如我的一些.m3u8文件中的設備只支持1200 x800和更高的屏幕。