簡體   English   中英

Android上的UDP視頻流

[英]UDP Video Streaming on Android

我有一個Android項目,我需要構建一個客戶端應用程序來接收UDP或RTP單播視頻流並播放它們。 不幸的是,我似乎無法讓這個工作,並廣泛搜索解決方案!

我正在測試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)

我也設置了Internet權限。

有人有什么建議嗎? 我在任何地方都找不到任何有用的信息。

謝謝。

我不確定Android本身是否支持UDP,因為它沒有在網絡協議中列出

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

許多第三方媒體播放器都基於FFMPEG庫。 您可能希望在項目中使用FFMPEG,盡管這是一項任務。

您也可以使用Vitamio庫通過udp://進行流式傳輸(它在后台使用ffmpeg)。 http://www.vitamio.org/en/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM