2011-11-29 29 views
6

私は、UDPまたはRTPのユニキャストビデオストリームを受信して​​再生するためのクライアントアプリケーションを構築する必要があるAndroidプロジェクトを持っています。残念ながら、私はこれを動作させるように見えることはできませんし、解決策を広範囲に探しました!AndroidでのUDPビデオストリーミング

私はXoom(Android 3.2)とNexus S(Android 2.3.6)でテストしており、MX Player(サードパーティのメディアプレーヤーアプリ)をクライアントとして使用してもコンテンツを再生できますが、ネイティブメディアプレーヤーにコンテンツを再生させることはできません。私はシンプルなVideoViewとMediaPlayerの両方を使ってみましたが、どちらも同じエラーコードで失敗してしまい、本当に役立つ情報が見つかりません。

ビデオはaacオーディオでエンコードされたH.264です。

また、サーバーは私がアクセスできない(udpまたはrtpを指定する以外の)サードパーティのソリューションですが、私が言ったように、MX Playerを使用するとストリームを再生できます。

public class Main extends Activity { 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    try { 
     MediaPlayer player = new MediaPlayer(); 
     SurfaceView surface = (SurfaceView) findViewById(R.id.video); 

     player.setDisplay(surface.getHolder()); 

     player.setDataSource(this, Uri.parse("udp://192.168.0.78:1234")); 

     player.prepare(); 

     player.setOnPreparedListener(new OnPreparedListener() { 

      @Override 
      public void onPrepared(MediaPlayer mp) { 
       Log.d("SimpleVideoPlayer", "Starting player"); 
       mp.start(); 
      } 
     }); 

     player.setOnErrorListener(new OnErrorListener() { 

      @Override 
      public boolean onError(MediaPlayer mp, int what, int extra) { 
       Log.d("SimpleVideoPlayer", "error with code: " + what); 
       return false; 
      } 
     }); 

    }catch(Exception e) { 
     e.printStackTrace(); 
    } 
} 

私が受けてるエラーは次のとおりです:

11-29 15:44:14.660: D/MediaPlayer(15451): Couldn't open file on client side, trying server side 
11-29 15:44:14.670: E/MediaPlayer(15451): error (1, -2147483648) 
11-29 15:44:14.670: W/System.err(15451): java.io.IOException: Prepare failed.: status=0x1 
11-29 15:44:14.670: W/System.err(15451): at android.media.MediaPlayer.prepare(Native Method) 
11-29 15:44:14.670: W/System.err(15451): at com.android.vidplayer.Main.onCreate(Main.java:26) 
11-29 15:44:14.670: W/System.err(15451): at android.app.Activity.performCreate(Activity.java:4397) 
11-29 15:44:14.670: W/System.err(15451): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048) 
11-29 15:44:14.670: W/System.err(15451): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1804) 
11-29 15:44:14.670: W/System.err(15451): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1856) 
11-29 15:44:14.670: W/System.err(15451): at android.app.ActivityThread.access$500(ActivityThread.java:125) 
11-29 15:44:14.670: W/System.err(15451): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1049) 
11-29 15:44:14.670: W/System.err(15451): at android.os.Handler.dispatchMessage(Handler.java:99) 
11-29 15:44:14.670: W/System.err(15451): at android.os.Looper.loop(Looper.java:132) 
11-29 15:44:14.670: W/System.err(15451): at android.app.ActivityThread.main(ActivityThread.java:4157) 
11-29 15:44:14.670: W/System.err(15451): at java.lang.reflect.Method.invokeNative(Native Method) 
11-29 15:44:14.670: W/System.err(15451): at java.lang.reflect.Method.invoke(Method.java:491) 
11-29 15:44:14.670: W/System.err(15451): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841) 
11-29 15:44:14.670: W/System.err(15451): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599) 
11-29 15:44:14.670: W/System.err(15451): at dalvik.system.NativeStart.main(Native Method) 

私はまた、インターネットのアクセス権を設定している。ここ

は、私のコードのメディアプレーヤー部分です。

誰にも何か提案がありますか?私はどこでも役に立つ情報を見つけることができません。

ありがとうございました。

+0

'player.prepare()'の代わりに 'player.prepareAysnc()'を使ってみましたか?ストリームを再生するときは 'prepareAsync()'を使うべきです。 – Squonk

答えて

3

それはネットワークプロトコルに記載されていないとして、私は多くのサードパーティ製のmediaplayersがFFMPEGライブラリに基づいています

http://developer.android.com/guide/appendix/media-formats.html

AndroidはネイティブにUDPをサポートしていますかわかりません。あなたは自分のプロジェクトでFFMPEGを使いたいかもしれませんが、それはそれ自身の仕事です。

+0

はい、そうです!私はそのページを見ていたが、誰かが自分の解決策を思いついたと思っていた! – theChumpus

+0

@theChumpus、Alex、あなたは魔女ffmpeg libを使いましたか?あなたは事前にコンパイルされたライブラリを使いましたか?ストリームh264ビデオを試しましたか? – Derzu

+0

@Derzu私はhttp://code.google.com/p/dolphin-player/で行っているように、Unixではffmpegをコンパイルしました。 h264 yesを再生します。 –

1

また、Vitamioライブラリを使用してudp://を介してストリームすることもできます(舞台裏でffmpegを使用します)。 http://www.vitamio.org/en/

+0

タブレット(nexus-7)でvitamioをテストしたところ、以前の投稿を削除しました。 – user1767754

+0

あなたは親切にhttps://stackoverflow.com/questions/45521175/vitamio-unable-to-play-udp-streaming-in-androidをチェックできますか? –

+0

私は4年前に行った特定のプロジェクトのPOCコードを探す必要があります。私はそれを所有していないので、私はもちろんこのために行われた実際の仕事を持っていません。約束をしていないが、私は見ていく。 –

関連する問題