Exoplayer, неизвестный источник, Android Java ⇐ JAVA
-
Гость
Exoplayer, неизвестный источник, Android Java
Я интегрировал код из этого репозитория в свое приложение: https://github.com/kardelencanoglu/ExoPlayerRTSP И я могу видеть компиляцию и проигрыватель в своем приложении для Android в эмуляторе.
На моем локальном компьютере я таким образом генерирую поток rtsp, который можно восстановить из VLC:
/Applications/VLC.app/Contents/MacOS/VLC -I dummy blabla.mp4 --sout '#rtp{sdp=rtsp://0.0.0.0:8082/live}' --no- sout-all --sout-keep
в моем приложении build.gradle:
реализация 'com.google.android.exoplayer:exoplayer:2.19.1' Включено:
импортировать com.google.android.exoplayer2.MediaItem; импортировать com.google.android.exoplayer2.SimpleExoPlayer; импортировать com.google.android.exoplayer2.source.MediaSource; импортировать com.google.android.exoplayer2.source.ProgressiveMediaSource; импортировать com.google.android.exoplayer2.ui.PlayerView; импортировать com.google.android.exoplayer2.upstream.DefaultDataSourceFactory;
В моей основной деятельности я:
частный проигрыватель SimpleExoPlayer; частный PlayerView playerView; ....
playerView = findViewById(R.id.player_view);
попробуй { // Переопределение rtspStreamUrl в целях тестирования rtspStreamUrl = "rtsp://10.0.2.2:8082/live"; Uri videoUri = Uri.parse(rtspStreamUrl); игрок = новый SimpleExoPlayer.Builder(this).build(); playerView.setPlayer(игрок); MediaSource mediaSource = новый ProgressiveMediaSource.Factory(новый DefaultDataSourceFactory(this, "exoplayer-codelab")).createMediaSource(MediaItem.fromUri(videoUri)); player.prepare(mediaSource); player.setPlayWhenReady(истина); playerView.bringToFront(); } поймать (Исключение е) { Log.e("Невозможно запустить EXO player",""); } Я получаю следующую ошибку в logcat:
Ошибка воспроизведения c*om.google.android.exoplayer2.ExoPlaybackException: ошибка источника в com.google.android.exoplayer2.ExoPlayerImplInternal.handleIoException (ExoPlayerImplInternal.java:684) на com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:656) в android.os.Handler.dispatchMessage(Handler.java:102) в android.os.Looper.loopOnce(Looper.java:205) в android.os.Looper.loop(Looper.java:294) в android.os.HandlerThread.run(HandlerThread.java:67) Вызвано: com.google.android.exoplayer2.upstream.HttpDataSource$HttpDataSourceException: java.net.MalformedURLException: неизвестный протокол: rtsp по адресу com.google.android.exoplayer2.upstream.DefaultHttpDataSource.open(DefaultHttpDataSource.java:388) по адресу com.google.android.exoplayer2.upstream.DefaultDataSource.open(DefaultDataSource.java:269) на com.google.android.exoplayer2.upstream.StatsDataSource.open(StatsDataSource.java:90) по адресу com.google.android.exoplayer2.source.ProgressiveMediaPeriod$ExtractingLoadable.load(ProgressiveMediaPeriod.java:1013) по адресу com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:420) в java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) в java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644) в java.lang.Thread.run(Thread.java:1012) Вызвано: java.net.MalformedURLException: неизвестный протокол: rtsp по адресу java.net.URL.(URL.java:608) по адресу java.net.URL.(URL.java:498) по адресу java.net.URL.(URL.java:447) в com.google.android.exoplayer2.upstream.DefaultHttpDataSource.makeConnection(DefaultHttpDataSource.java:530) по адресу com.google.android.exoplayer2.upstream.DefaultHttpDataSource.open(DefaultHttpDataSource.java:382) по адресу com.google.android.exoplayer2.upstream.DefaultDataSource.open(DefaultDataSource.java:269) на com.google.android.exoplayer2.upstream.StatsDataSource.open(StatsDataSource.java:90) по адресу com.google.android.exoplayer2.source.ProgressiveMediaPeriod$ExtractingLoadable.load(ProgressiveMediaPeriod.java:1013) по адресу com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:420) в java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) в java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644) на java.lang.Thread.run(Thread.java:1012) *
Будем признательны за любую идею, заранее спасибо!
Я пытался получить поток в VLC, все работает нормально, но не в эмуляторе.
РЕДАКТИРОВАТЬ: проблема изменится, если я это сделаю:
import com.google.android.exoplayer2.source.rtsp.RtspMediaSource; и вместо Progressive я использую:
MediaSource mediaSource = новый RtspMediaSource.Factory().createMediaSource(MediaItem.fromUri(rtspStreamUrl)); тогда я получаю: Ошибка воспроизведения com.google.android.exoplayer2.ExoPlaybackException: Ошибка источника в com.google.android.exoplayer2.ExoPlayerImplInternal.handleIoException (ExoPlayerImplInternal.java:684) на com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:660) в android.os.Handler.dispatchMessage(Handler.java:102) в android.os.Looper.loopOnce(Looper.java:205) в android.os.Looper.loop(Looper.java:294) в android.os.HandlerThread.run(HandlerThread.java:67) Вызвано: com.google.android.exoplayer2.source.rtsp.RtspMediaSource$RtspPlaybackException: SETUP 461
Я интегрировал код из этого репозитория в свое приложение: https://github.com/kardelencanoglu/ExoPlayerRTSP И я могу видеть компиляцию и проигрыватель в своем приложении для Android в эмуляторе.
На моем локальном компьютере я таким образом генерирую поток rtsp, который можно восстановить из VLC:
/Applications/VLC.app/Contents/MacOS/VLC -I dummy blabla.mp4 --sout '#rtp{sdp=rtsp://0.0.0.0:8082/live}' --no- sout-all --sout-keep
в моем приложении build.gradle:
реализация 'com.google.android.exoplayer:exoplayer:2.19.1' Включено:
импортировать com.google.android.exoplayer2.MediaItem; импортировать com.google.android.exoplayer2.SimpleExoPlayer; импортировать com.google.android.exoplayer2.source.MediaSource; импортировать com.google.android.exoplayer2.source.ProgressiveMediaSource; импортировать com.google.android.exoplayer2.ui.PlayerView; импортировать com.google.android.exoplayer2.upstream.DefaultDataSourceFactory;
В моей основной деятельности я:
частный проигрыватель SimpleExoPlayer; частный PlayerView playerView; ....
playerView = findViewById(R.id.player_view);
попробуй { // Переопределение rtspStreamUrl в целях тестирования rtspStreamUrl = "rtsp://10.0.2.2:8082/live"; Uri videoUri = Uri.parse(rtspStreamUrl); игрок = новый SimpleExoPlayer.Builder(this).build(); playerView.setPlayer(игрок); MediaSource mediaSource = новый ProgressiveMediaSource.Factory(новый DefaultDataSourceFactory(this, "exoplayer-codelab")).createMediaSource(MediaItem.fromUri(videoUri)); player.prepare(mediaSource); player.setPlayWhenReady(истина); playerView.bringToFront(); } поймать (Исключение е) { Log.e("Невозможно запустить EXO player",""); } Я получаю следующую ошибку в logcat:
Ошибка воспроизведения c*om.google.android.exoplayer2.ExoPlaybackException: ошибка источника в com.google.android.exoplayer2.ExoPlayerImplInternal.handleIoException (ExoPlayerImplInternal.java:684) на com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:656) в android.os.Handler.dispatchMessage(Handler.java:102) в android.os.Looper.loopOnce(Looper.java:205) в android.os.Looper.loop(Looper.java:294) в android.os.HandlerThread.run(HandlerThread.java:67) Вызвано: com.google.android.exoplayer2.upstream.HttpDataSource$HttpDataSourceException: java.net.MalformedURLException: неизвестный протокол: rtsp по адресу com.google.android.exoplayer2.upstream.DefaultHttpDataSource.open(DefaultHttpDataSource.java:388) по адресу com.google.android.exoplayer2.upstream.DefaultDataSource.open(DefaultDataSource.java:269) на com.google.android.exoplayer2.upstream.StatsDataSource.open(StatsDataSource.java:90) по адресу com.google.android.exoplayer2.source.ProgressiveMediaPeriod$ExtractingLoadable.load(ProgressiveMediaPeriod.java:1013) по адресу com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:420) в java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) в java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644) в java.lang.Thread.run(Thread.java:1012) Вызвано: java.net.MalformedURLException: неизвестный протокол: rtsp по адресу java.net.URL.(URL.java:608) по адресу java.net.URL.(URL.java:498) по адресу java.net.URL.(URL.java:447) в com.google.android.exoplayer2.upstream.DefaultHttpDataSource.makeConnection(DefaultHttpDataSource.java:530) по адресу com.google.android.exoplayer2.upstream.DefaultHttpDataSource.open(DefaultHttpDataSource.java:382) по адресу com.google.android.exoplayer2.upstream.DefaultDataSource.open(DefaultDataSource.java:269) на com.google.android.exoplayer2.upstream.StatsDataSource.open(StatsDataSource.java:90) по адресу com.google.android.exoplayer2.source.ProgressiveMediaPeriod$ExtractingLoadable.load(ProgressiveMediaPeriod.java:1013) по адресу com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:420) в java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) в java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644) на java.lang.Thread.run(Thread.java:1012) *
Будем признательны за любую идею, заранее спасибо!
Я пытался получить поток в VLC, все работает нормально, но не в эмуляторе.
РЕДАКТИРОВАТЬ: проблема изменится, если я это сделаю:
import com.google.android.exoplayer2.source.rtsp.RtspMediaSource; и вместо Progressive я использую:
MediaSource mediaSource = новый RtspMediaSource.Factory().createMediaSource(MediaItem.fromUri(rtspStreamUrl)); тогда я получаю: Ошибка воспроизведения com.google.android.exoplayer2.ExoPlaybackException: Ошибка источника в com.google.android.exoplayer2.ExoPlayerImplInternal.handleIoException (ExoPlayerImplInternal.java:684) на com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:660) в android.os.Handler.dispatchMessage(Handler.java:102) в android.os.Looper.loopOnce(Looper.java:205) в android.os.Looper.loop(Looper.java:294) в android.os.HandlerThread.run(HandlerThread.java:67) Вызвано: com.google.android.exoplayer2.source.rtsp.RtspMediaSource$RtspPlaybackException: SETUP 461
Мобильная версия