Потоковое видео с URL-адреса — веб-сервер, использующий намерение видео, не работает

#android #video-streaming

#Android #потоковое видео

Вопрос:

Я пытаюсь воспроизвести видео с веб-сервера, используя намерения.

Я тестировал на двух устройствах:

  1. Google Pixel (API 29)
  2. Samsung Galaxy S6 (API 24)

На первом видео воспроизводится на встроенном медиаплеере без проблем. На втором устройстве видео не воспроизводится с ошибкой:

 Couldn't open [VIDEO URL]: : java.io.FileNotFoundException: No content provider: [ VIDEO URL]

0-10-25 18:33:24.783 19961-19961/? D/MediaPlayer: setDataSource IOException | SecurityException happend : java.io.FileNotFoundException: No content provider: [VIDEO URL]
  

и чуть позже в logcat:

 2020-10-25 18:33:29.603 19961-19961/? E/VideoDB: setResumePosition - Exception occured:java.lang.IllegalArgumentException: Unknown URI
  

Код, который я использую, это:

     val videoUri = Uri.parse(getVideoUrl(videoId))
    val intent = Intent(Intent.ACTION_VIEW, videoUri)
    intent.setDataAndType(videoUri, "video/mp4")
    startActivity(intent)
  

Почему видео не воспроизводится на устройстве с API 24? Есть ли какие-либо дополнительные настройки, которые я должен выполнить?

Должен ли я загружать видео на устройство, а затем воспроизводить его? Если да, то будут оценены некоторые ссылки / рекомендации по этому поводу.

введите описание изображения здесь

Комментарии:

1. Какое значение, возвращаемое getVideoUrl(videoId) этим, не работает?

2. @CommonsWare Это допустимый URL, http://[server url].[file name].mp4 . Если я открою его в браузере, видео будет воспроизводиться.

3. Попробуйте использовать https URL-адреса, так как функция обмена открытым текстом ( http ) по умолчанию запрещена в более новых версиях Android. Вы можете настроить конфигурацию сетевой безопасности , чтобы разрешить трафик открытого текста, но это не очень хорошо с точки зрения безопасности.

4. Это https , извините

5. Во-первых, мои извинения — конфигурация сетевой безопасности влияет на ваше приложение, и я забыл, что вы запускали другое приложение, и проблема была там. Обратите внимание, что в Android нет единого «встроенного медиаплеера». Приложение, которое отвечает ACTION_VIEW на ваш URL-адрес, зависит от устройства. В этом случае, независимо от того, что запускается на вашем Samsung, ваш URL-адрес по какой-то причине не нравится, и из этого сообщения Logcat не очевидно, почему это было бы недовольно.