【问题标题】:Android Live Video Stream Not PlayingAndroid 直播视频流未播放
【发布时间】:2015-11-21 00:52:16
【问题描述】:

我正在尝试像这样以 rtsp 流式传输实时提要:

                       String uri = "rtsp://54.213.167.253:5544/63a1203d-4e12-438e-86ec-f447fa90cfd7";
                       Uri uri_add = Uri.withAppendedPath(MediaStore.Video.Media.INTERNAL_CONTENT_URI, "1");
                       videoView.setVideoURI(uri_add.parse(uri));
                       mediaController = new MediaController(_context);
                       videoView.setMediaController(mediaController);
                       videoView.requestFocus();
                       videoView.start();

这适用于我测试过的 HTC、Sony 和 LG 设备,但不适用于 Galaxy S6 或任何三星设备。我研究了编码兼容性,h.264 是我的流编码的,它应该适用于我拥有的所有设备。我在这些设备上运行 Android v. 5.0.2 和 5.1.1,软件与问题之间没有关联。也就是说,运行 5.0.2 的 GalaxyS6 不播放视频,而运行 5.0.2 的 HTC 播放视频。我完全不知道我收到的“无法播放视频”消息的原因是什么。

我已经阅读了人们关于流式直播视频的所有文章和帖子,并尝试在我的代码中实现它们,但是我每次都遇到相同的问题。我很确定代码没有问题,否则它在任何设备上都不起作用。任何人有任何想法可能导致这种情况以及为什么?

【问题讨论】:

  • 浏览器问题?您是否在多个浏览器上尝试过相同的操作?

标签: java android mobile video-streaming


【解决方案1】:

这个问题似乎在一些三星设备上很常见。你检查过 Logcat 显示的内容吗?

我在 Galaxy Tab 4 上遇到了同样的问题,我最终使用 Vitamio's 库进行视频流传输。现在已经有一段时间不支持它了,但是很容易使用并且可以进行基本的自定义

【讨论】:

    【解决方案2】:

    使用这个类。这也在三星设备上运行。

    private ProgressDialog progressDialog;
        VideoView videoView;
        private myAsync sync;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_video);
    
            String videourl = "rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov";
            videoView = (VideoView) findViewById(R.id.video_view);
            progressDialog = ProgressDialog.show(CustomizeProgressDialogActivity.this, "",
                    "Buffering video...", true);
            progressDialog.setCancelable(false);
            // progressDialog.dismiss();
            MediaController mediaController = new MediaController(CustomizeProgressDialogActivity.this);
            mediaController.setAnchorView(videoView);
    
            Uri video = Uri.parse(videourl);// insert video url
            videoView.setMediaController(mediaController);
    
            videoView.setVideoURI(video);
            videoView.requestFocus();
    
            sync = new myAsync();
            sync.execute();
            // PlayVideo();
        }
    
    
        private class myAsync extends AsyncTask<Void, Integer, Void> {
    
            int duration = 0;
            int current = 0;
    
            @Override
            protected Void doInBackground(Void... params) {
    
                videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
    
                    public void onPrepared(MediaPlayer mp) {
                        progressDialog.dismiss();
                        videoView.start();
                        duration = videoView.getDuration();
                    }
                });
    
                do {
    
    
                    current = videoView.getCurrentPosition();
                    System.out.println("duration - " + duration + " current- "
                            + current);
    
    
    
                    if (sync.isCancelled())
                        break;
    
                }
    
                while (current != duration || current == 0);
    
                return null;
            }
    
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-02
      相关资源
      最近更新 更多