Как транслировать живое видео с URL? - PullRequest
1 голос
/ 12 марта 2019

Я хочу встроить эту ссылку в мое приложение для Android.Я пытался сделать это, но видео не загружается.Я также получаю сообщение об ошибке java.io.FileNotFoundException: Нет поставщика контента:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view = inflater.inflate(R.layout.fragment_cctv, container, false);

    try {
        String cctv = "http://121.58.202.110:8080/jpeg?cam=4";
        VideoView videoView = getView().findViewById(R.id.cctvfragment);
        MediaController mediaController = new MediaController(getActivity());
        mediaController.setAnchorView(videoView);
        Uri video = Uri.parse(cctv);
        videoView.setMediaController(null);
        videoView.setVideoURI(video);
        videoView.start();
        videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer mp) {

            }
        });
    } catch (Exception e) {
        // TODO: handle exception
        Log.d("CctvDebug", "ERROR LOADING VIDEO");
    }
    return view;
}

1 Ответ

0 голосов
/ 12 марта 2019

По вопросу, Native Video View очень ограничен, когда дело доходит до более новых URL, которые (* я думаю) больше не обновляются. попробуйте вместо этого использовать видеоплеер Vitamio . Это очень полезно для различных потоковых функций.

<io.vov.vitamio.widget.VideoView
   android:layout_height="fill_parent"
   android:layout_width="fill_parent"
   android:id="@+id/VideoView"/>        

Кроме того, не вызывайте метод start() сразу. Звоните только по вашему OnPreparedListener() обратному вызову.

Vitamio.isInitialized(getApplicationContext());

mVideoView.setVideoPath(path);
mVideoView.setMediaController(new MediaController(this));
mVideoView.requestFocus();

mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
    @Override
    public void onPrepared(MediaPlayer mediaPlayer) {
        // optional need Vitamio 4.0
        mediaPlayer.setPlaybackSpeed(1.0f);
    }
});

Или вы также можете использовать KickFlip . Это очень легко настроить,

Kickflip.initWithApiKey(API_KEY, API_SECRET);
Kickflip.startBroadcastActivity(this, mBroadcastListener);

Edit:

Итак, я пытался работать в потоке со вчерашнего дня. Я не смог отработать это на vitamio (К сожалению). Хотя пытался использовать URL-адрес, который вы дали, и передавал его через приложение vlc. Хотя я не пробовал, вы можете использовать LibVLC . В итоге я использовал webview с некоторыми настройками, чтобы он не выглядел так, как при использовании webview.

webView = findViewById(R.id.wvWebview);

webView.loadUrl("http://121.58.202.110:8080/jpeg?cam=4");
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setUseWideViewPort(true);

sample stream

...