#android #android-fragments #video-streaming #live-streaming
#Android #android-фрагменты #потоковое видео #прямая трансляция
Вопрос:
Я хочу встроить эту ссылку в мое приложение для 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:
Что касается вопроса, просмотр собственного видео очень ограничен, когда речь заходит о более новых 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);
Редактировать:
Итак, я пытался работать над потоком со вчерашнего дня. Я не смог решить это на 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);
Комментарии:
1. Я пробовал использовать vitamio, ошибок нет, однако в приложении не воспроизводится видео?
2. Но представление все же видно?
3. Да, может ли быть так, что URL невозможно встроить?
4. Нет, это все еще возможно. Могу я спросить, почему в вашей ссылке используется jpeg.
5. Мне не принадлежит URL видеопотока, я не знаю, почему он использует jpeg