2016-02-13 35 views
4

我使用Vitamio library流式m3u8,但它不起作用。
logcat的:avformat_open_input: Invalid data found when processing input : -1094995529

enter image description here

這裏是我曾嘗試:
使用Vitamio庫流式m3u8

視頻流:

import android.app.Activity; 
import android.content.Intent; 
import android.net.Uri; 
import android.os.Bundle; 
import android.view.View; 
import android.view.Window; 
import android.view.WindowManager; 
import android.widget.LinearLayout; 
import android.widget.ProgressBar; 
import android.widget.TextView; 
import io.vov.vitamio.LibsChecker; 
import io.vov.vitamio.MediaPlayer; 
import io.vov.vitamio.MediaPlayer.OnBufferingUpdateListener; 
import io.vov.vitamio.MediaPlayer.OnInfoListener; 
import io.vov.vitamio.widget.VideoView; 


public class VideoStream extends Activity implements OnInfoListener, OnBufferingUpdateListener { 
    private static final String TAG = "VideoStream"; 
    private String path; 

    private VideoView mVideoView; 
    private ProgressBar pb; 
    private TextView downloadRateView, loadRateView; 
    private Uri uri; 



    @Override 
    public void onCreate(Bundle icicle) { 
     super.onCreate(icicle); 
     if (!LibsChecker.checkVitamioLibs(this)) 
      return; 
     setContentView(R.layout.video_stream); 

     path = "http://video4.earthcam.com/fecnetwork/fridays_5th.flv/playlist.m3u8"; 

     mVideoView = (VideoView) findViewById(R.id.buffer); 
     pb = (ProgressBar) findViewById(R.id.probar); 

     downloadRateView = (TextView) findViewById(R.id.download_rate); 
     loadRateView = (TextView) findViewById(R.id.load_rate); 
     uri = Uri.parse(path); 
     mVideoView.setVideoURI(uri); 
     mVideoView.setMediaController(new MediaController(this)); 
     mVideoView.requestFocus(); 
     mVideoView.setOnInfoListener(this); 
     mVideoView.setOnBufferingUpdateListener(this); 
     mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
      @Override 
      public void onPrepared(MediaPlayer mediaPlayer) { 
       // optional need Vitamio 4.0 
       mediaPlayer.setPlaybackSpeed(1.0f); 
      } 
     }); 
    } 
    @Override 
    public boolean onInfo(MediaPlayer mp, int what, int extra) { 
     switch (what) { 
      case MediaPlayer.MEDIA_INFO_BUFFERING_START: 
       if (mVideoView.isPlaying()) { 
        mVideoView.pause(); 
        pb.setVisibility(View.VISIBLE); 
        downloadRateView.setText(""); 
        loadRateView.setText(""); 
        downloadRateView.setVisibility(View.VISIBLE); 
        loadRateView.setVisibility(View.VISIBLE); 

       } 
       break; 
      case MediaPlayer.MEDIA_INFO_BUFFERING_END: 
       mVideoView.start(); 
       pb.setVisibility(View.GONE); 
       downloadRateView.setVisibility(View.GONE); 
       loadRateView.setVisibility(View.GONE); 
       break; 
      case MediaPlayer.MEDIA_INFO_DOWNLOAD_RATE_CHANGED: 
       downloadRateView.setText("" + extra + "kb/s" + " "); 
       break; 
     } 
     return true; 
    } 

    @Override 
    public void onBufferingUpdate(MediaPlayer mp, int percent) { 
     loadRateView.setText(percent + "%"); 
    } 
} 

video_stream.xml:

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

    <io.vov.vitamio.widget.CenterLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" > 

     <io.vov.vitamio.widget.VideoView 
      android:id="@+id/buffer" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_centerHorizontal="true" 
      android:layout_centerVertical="true" /> 
    </io.vov.vitamio.widget.CenterLayout> 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="true" 
     android:orientation="horizontal" > 

     <ProgressBar 
      android:id="@+id/probar" 
      style="?android:attr/progressBarStyleSmall" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" /> 

     <TextView 
      android:id="@+id/download_rate" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:text="" /> 

     <TextView 
      android:id="@+id/load_rate" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:text="" /> 
    </LinearLayout> 

</RelativeLayout> 

清單:

<uses-permission android:name="android.permission.WAKE_LOCK" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
    <application 
      android:allowBackup="true" 
      android:icon="@drawable/ic_launcher" 
      android:label="@string/app_name"> 
     <activity android:name=".VideoStream" 
       android:configChanges="orientation|screenSize|smallestScreenSize|keyboard|keyboardHidden" 
       android:label="@string/app_name" 
       android:launchMode="singleTop" 
       android:screenOrientation="landscape"> 
      <activity 
       android:name="io.vov.vitamio.activity.InitActivity" 
       android:configChanges="orientation|screenSize|smallestScreenSize|keyboard|keyboardHidden|navigation" 
       android:launchMode="singleTop" 
       android:theme="@android:style/Theme.NoTitleBar" 
       android:windowSoftInputMode="stateAlwaysHidden" /> 

這個問題似乎涉及到Vitamio。我怎樣才能解決這個崩潰?
非常感謝。

回答

2

2天后,我找到了解決方案:)
所以我應該說的第一件事就是我很困惑!

您可能需要使用Vitamio像我did.Now的事情是,如果包括圖書館作爲當地的圖書館項目(文件 - 新建,導入模塊),它應該工作正常,但如果包括它加入的依賴(compile 'me.neavo:vitamio:4.2.2' )在build.gradle中,會發生上述問題。

0

當您使用https://url replce爲http://url,因爲它僅支持 MMS RTSP(RTP,SDP),RTMP HTTP協議有限,圖書館在你的項目中添加的模塊。