Я пишу Videoplayer для Android для потокового видео через HLS. На моем сервере у меня есть m3u8-Playlist и .ts-Segments. Мой код выглядит следующим образом:Android HLS-Streaming не удалось извлечь сегмент
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
vidSurface = (SurfaceView) findViewById(R.id.surfView);
vidHolder = vidSurface.getHolder();
vidHolder.addCallback(this);
}
public void surfaceCreated(SurfaceHolder arg0) {
try {
mediaPlayer = new MediaPlayer();
mediaPlayer.setDisplay(vidHolder);
mediaPlayer.setDataSource(vidAddress);
mediaPlayer.prepareAsync();
mediaPlayer.setOnPreparedListener(this);
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
}
catch(Exception e){
e.printStackTrace();
}
}
Игрок прекрасно работает на примере компании Apple bipbopall.m3u8. Но когда я пытаюсь играть мой плейлист эта ошибка возникает:
E/PlaylistFetcher﹕ failed to fetch .ts segment at url 'http://example.com/USSM.mp4Frag1Num0.ts'
E/LiveSession﹕ XXX Received error -1008 from PlaylistFetcher.
E/MediaPlayer﹕ error (1, -1008)
Я думаю, что есть проблема с AES-128 дешифрования файлов. Разве MediaPlayer расшифровывает файлы самостоятельно и как я могу проверить, было ли дешифрование успешным? (Я использую последнюю версию Android-версии)
'1008' является' ERROR_OUT_OF_RANGE' при попытке получить файл. Как выглядит ваш плейлист? – aergistal
@aergistal '# EXTM3U' ' # EXT-X-MEDIA-ПОСЛЕДОВАТЕЛЬНОСТИ: 0' '# EXT-X-ALLOW-КЭШ: NO' ' # EXT-X-версия: 2' '# EXT- X-KEY: METHOD = AES-128, URI = "/ hls-vod-enc-key/hlscf.key", IV = 0X99b74007b6254e4bd1c6e03631cad15b' '# EXT-X-TARGETDURATION: 8' ' #EXTINF: 8, ' 'USSM20000051_abr-100.mp4Frag1Num0.ts' ' #EXTINF: 8, '' USSM20000051_abr-100.mp4Frag1Num1.ts' '#EXTINF: 8,' ' USSM20000051_abr-100.mp4Frag2Num2.ts' ' #EXTINF : 8, ' ' USSM20000051_abr-100.mp4Frag3Num3.ts' '# EXT-X-ENDLIST' – henchman21
MediaPlayer умеет t o расшифровать файлы. HLS поддерживает 'AES', так как v1 и Android могут использовать v2 на 3.x и v3 на 4.x. Вы можете попробовать тот же поток в приложении VLC для Android (а не в бета-версии) и посмотреть, работает ли он. Вы также можете включить журнал отладки. – aergistal