Exoplayer + Azure Медиа-сервисы + Smooth / HLS / Da sh + AES = Ошибки - PullRequest
0 голосов
/ 07 января 2020

Используя этот пример:

Azure Tears of Steel Video

Я не могу заставить ExoPlayer работать должным образом. Стандартный Android Video Player хорошо воспроизводит версию HLS со звуком, поэтому я знаю, что она работает. (У нас есть тысячи видео в Azure, и я пытаюсь создать хороший Xamarin Android Video Renderer, но пробовал напрямую в Android Studio с тестовым проектом тоже.)

I ' m создайте новый DefaultHttpDataSourceFactory, затем используйте DefaultRequestProperties.Set и добавьте маркер авторизации, который указан на этой странице. (Я использую привязки Xamarin, но у меня те же проблемы в Kotlin)

Затем я создаю ssMediaSource.Factory (httpDataSourceFactory) .createMediaSource (uri); чтобы попытаться использовать плавную потоковую передачу.

Когда я это сделаю, я получу следующий стек:

com.google. android .exoplayer2.upstream.Loader $ UnexpectedLoaderException: Unexpected NullPointerException : Попытка получить длину нулевого массива в com.google. android .exoplayer2.upstream.Loader $ LoadTask.run (Loader. java: 403) в java .util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor. java: 1167) в java .util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor. java: 641) в java .lang.Thread.run (Thread. java: 919) Причина: : java .lang.NullPointerException: Попытка получить длину нулевого массива в com.google. android .exoplayer2.source.smoothstreaming.manifest.SsManifestParser $ ProtectionParser.getProtectionElementKeyId (SsManifestParser. java. 46 at. * 4645). google. android .exoplayer2.source.smoothstreaming.manifest.SsManifestParser $ ProtectionParser.buildTrackEncryptionBoxes (SsManifestParser. java: 454) на странице com.google. android .exoplayer2.source.smoothstreamsMif anifestParser $ ProtectionParser.build (SsManifestParser. java: 445) в com.google. android .exoplayer2.source.smoothstreaming.manifest.SsManifestParser $ ElementParser.parse (SsManifestParser. * 1051.google. java 147): 7 android .exoplayer2.source.smoothstreaming.manifest.SsManifestParser $ ElementParser.parse (SsManifestParser. java: 129) в com.google. android .exoplayer2.source.smoothstreaming.manifest.SsManifestParser.SpManifestParser. 1055 *: 72) на com.google. android .exoplayer2.source.smoothstreaming.manifest.SsManifestParser.parse (SsManifestParser. java: 53) на com.google. android .exoplayer2.upstream.ParsingLoadable.load (ParsingLoadable. java: 158) на com.google. android .exoplayer2.upstream.Loader $ LoadTask.run (Loader. java: 381)

Если я пытаюсь использовать HLS с «(format = m3u8-aapl)» добавляется к URL-адресу документации Microsoft и вместо этого использует HlsMediaSource, видео воспроизводится без звука и с постоянным заиканием.

Если я пытаюсь использовать DA SH с «(format = mpd-» time-csf) "добавлен в URL В соответствии с документацией Microsoft и использованием DashMediaSource я получаю следующее:

Пропуск атома с длиной> 2147483647 (не поддерживается). в com.google. android .exoplayer2.extractor.mp4.FragmentedMp4Extractor.readAtomHeader (FragmentedMp4Extractor. java: 412) в com.google. android .exoplayer2.extractor.mp4.FragmentedMp4Extractor.png *: 310) на com.google. android .exoplayer2.source.chunk.InitializationChunk.load (InitializationChunk. java: 89) на com.google. android .exoplayer2.upstream.Loader $ LoadTask.run ( Загрузчик. java: 381) в java .util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor. java: 1167) в java .util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor. * 1074 641) в java .lang.Thread.run (Тема. java: 919)

Так что у кого-нибудь есть идеи, почему ни один из этих форматов, как утверждает Microsoft, не работает с exoplayer (но не не предоставил ни одного примера, который я смог бы найти.) и Google говорит, что он тоже должен работать путем умозаключений, поскольку они ссылаются на Azure как на источник мультимедиа несколько раз?

...