2016-12-13 7 views
0

Я использую этот кусок кода, чтобы играть согл, который находится на облаке с FFmpegMediaPlayer взято отсюда:Android FFmpegMediaPlayer - ошибка MediaPlayer (0, 0)

https://github.com/wseemann/FFmpegMediaPlayer

кодекса :

FFmpegMediaPlayer player = new FFmpegMediaPlayer(); 
try { 
    player.setAudioStreamType(AudioManager.STREAM_MUSIC); 
    player.setDataSource(url); 
    player.prepareAsync(); 
} catch (IOException | ExecutionException | InterruptedException e){ 
     e.printStackTrace(); 
} 

Когда формат URL, как "http://something.com/audio.aac", что код работает отлично.

Но, когда URL-адрес похож на «https://something.com/audio.aac?something_else_here», этот код не работает, и он запускает en Ошибка (0,0).

Перед FFmpegMediaPlayer Я использовал MediaPlayer с точными теми же методами. Иногда иногда возникали такие же проблемы, поэтому я решил переключиться на FFmpegMediaPlayer, даже если это быстрее, но я не обрабатываю эту ошибку.

Кто-нибудь теперь, как с этим бороться?

ответ

1

Может возникнуть несколько причин, по которым возникает эта ошибка, но я покажу, что я сделал в своем случае. Я думал, что проблема связана с конечной строкой ссылки, но похоже, что все в порядке.

Я установил FFmpegMediaPlayer через Gradle в моем проекте:

dependencies { 
    compile 'com.github.wseemann:FFmpegMediaPlayer:1.0.4' 
} 

, но это выглядит, что, когда я звонил

player.setDataSource(url); 
player.prepareAsync(); 

это была проблема с https ссылки.

Итак, я сделал это, чтобы вручную импортировать пакет AAR, который поддерживает HTTPS. Я скачал его в:

https://github.com/wseemann/FFmpegMediaPlayer/releases/download/v1.0.3/prebuilt-aars-with-https.zip

Есть несколько AAR файлов, скомпилированные для различных архитектур, но есть также файл AAR, который включает в себя все архитектуры.

Так что это было решением моей проблемы.

Недостатком является то, что при импорте этого AAR размер вашего приложения увеличится на 4 Мбайт или хотя бы на 20 МБ, если вы захотите включить файл, который скомпилирован для всех архитектур.

В конце концов я пошел на другом подходе, но определенно Android должны принять некоторые заботы о своем MediaPlayer, потому что это дает так много боли для разработчиков.