2012-06-13 97 views
25

我們有一個提供者爲我們提供HLS流的m3u8文件(最初用於iOS應用程序)。Android 3.0上的HLS(http實時流媒體)和正在尋求

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鏈接。

+0

您是否最終找到了解決此問題的解決方案? –

+0

我想在HLS直播中實現。你有沒有找到解決辦法? –

回答

13

看這個(你提到過)page

它說:

  • 協議版本3(Android 4.0及以上)
  • 協議版本2(安卓3.X)

在這裏你可以檢查draft's for HLS。您可以選擇頁面頂部的版本。

首先參照求出現在草案3(比較起草2的Android 3.X)

的值的時間的 和時間提供媒體的時間軸 的信息映射爲適當的掛鐘時間,這可以作爲 的基礎尋求

只是爲了確保。我沒有讀完整個草稿。但是,我的猜測是Android會在Android 3.0中實施相當早期的草案,並且他們可能已經部分實現了它,這足以發揮作用,但這還不夠。

我不認爲你有一個簡單的辦法解決這一點,除了在第三方客戶端HLS鹽漬(通過用vipw的建議)

5

對不起,你試圖從一塊石頭上得到血。 Android 3.0支持HLS的非常有限的子集,並且爲了支持在實時流中查找,您需要比Google提供的更好的HLS客戶端。

0

與此有點相關 - 似乎存在一個錯誤,它會阻止實時HLS饋送在實時點開始,因爲它們應該是。我想這可能是由於這個尋求的限制。 當您在Android上啓動實時HLS饋送(它沒有EXT-X-ENDLIST標記)時,核心HLS解析組件中的錯誤無法在活動點(饋送結束)開始,並且而是從流的開始處開始。

有申請code.google.com上的這個錯誤 - 你可以「明星」或給予好評它有:

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

0

我的猜測是您所描述的求醫行爲使用iframe開始實施只有播放列表(#EXT-XI-FRAMES-ONLY),它需要一個至少支持Pantos規範版本4的客戶端。