VideoView在开始播放多播流时会延迟(只是有时)

时间:2019-05-16 07:14:13

标签: java android android-videoview

我有一个简单的Android应用程序,其中包含用于加载基于Web_Based的应用程序的WebView和用于播放视频(使用HTTP协议)和多播流(使用UDP协议的直播电视)的VideoView。

基于Web的应用程序,视频服务器和直播电视服务器位于本地服务器(Ubuntu 12.04)中,因此我的Android应用程序通过以太网电缆(不是通过Internet)本地连接到它们。

我的Android设备也是具有Android版本6的STB。

Android应用程序被开发为仅通过单击一个按钮就可以播放视频或实况电视,但是问题是,有时,当我打开机顶盒(并立即启动Android应用程序)时,延迟约30秒才能启动直播电视。视频根本没有发生此问题。

直播电视流的示例为udp://239.0.0.1:1234
视频网址示例为http://192.168.200.235/test.mp4

//这是我播放UDP流的主要功能的优点

PlayerActivity.videoView.stopPlayback();
final Uri video = Uri.parse("udp://"+url.replaceAll("\\s+",""));
PlayerActivity.getInstance().runOnUiThread(new Runnable() {
    @Override
    public void run() {
        PlayerActivity.videoView.setVisibility(View.GONE);
        PlayerActivity.videoView.setVisibility(View.VISIBLE);
        PlayerActivity.videoView.setVideoURI(video);
        PlayerActivity.videoView.start();

        PlayerActivity.videoView.setOnErrorListener(new MediaPlayer.OnErrorListener() {
            @Override
            public boolean onError(MediaPlayer mp, int what, int extra) {
                Log.e("ERROR LOG FOR UDP STREAM",":( I don't get any error here !");
                return false;
            }
        });
    }
});

1 个答案:

答案 0 :(得分:0)

尽管Android可以播放UDP流,但并不是为此而构建的。因此,最好将HSL或RTMP协议用于实时流播放以及视频文件。您可以使用HLS。