2016-01-18 4 views
0

Я скомпилировал vlc для android с версией 1.8, и я нашел официальное демо со ссылкой: https://bitbucket.org/edwardcw/libvlc-android-sample. Он отлично работает с localVideo. Я стараюсь играть поток HTTP, так что я изменить код ниже:vlc http stream with android

// Create LibVLC 
// TODO: make this more robust, and sync with audio demo 
ArrayList<String> options = new ArrayList<String>(); 
//options.add("--subsdec-encoding <encoding>"); 
options.add("--aout=opensles"); 
options.add("--audio-time-stretch"); // time stretching 
options.add("-vvv"); // verbosity 
libvlc = new LibVLC(options); 
libvlc.setOnHardwareAccelerationError(this); 
holder.setKeepScreenOn(true); 

// Create media player 
mMediaPlayer = new MediaPlayer(libvlc); 
mMediaPlayer.setEventListener(mPlayerListener); 

// Set up video output 
final IVLCVout vout = mMediaPlayer.getVLCVout(); 
vout.setVideoView(mSurface); 
//vout.setSubtitlesView(mSurfaceSubtitles); 
vout.addCallback(this); 
vout.attachViews(); 

//Media m = new Media(libvlc, media); 
Uri uri = Uri.parse(httpAddress); 
    Media m = new Media(libvlc, uri); 
    mMediaPlayer.setMedia(m); 
    mMediaPlayer.play(); 

Это прекрасно работает на самсунг, андроид 4.1.2. Но это крушение с мобильным телефоном mi4. с запуском, у него есть 2 секунды звука без изображения, тогда это крушение, как ANR, но навсегда останется на черном экране. вот LogCat:

core video output: picture is too late to be displayed (missing 953 ms) 
core vout display: Failed to change zoom 
android_window vout display: change source crop/aspect 
core video output: picture is too late to be displayed (missing 1156 ms) 
core vout display: auto hiding mouse cursor 
core audio output: playback too late (66254): up-sampling 
core video output: picture is too late to be displayed (missing 1155 ms) 
core video output: picture is too late to be displayed (missing 1153 ms) 
[OMX.qcom.video.decoder.avc] ERROR(0x80001009) 
Codec reported an error. (omx error 0x80001009, internalError -2147483648) 
mediacodec decoder: Exception in MediaCodec.dequeueOutputBuffer 
mediacodec decoder: dequeue_out failed 
mediacodec decoder: OutThread stopped 
threadid=16: thread exiting, not yet detached (count=0) 
Error with hardware acceleration 

more log info , где я могу найти httpstream демо с VLC выполнил 1.8? Спасибо за помощь

+0

Хорошо, когда я закрываю аппаратное ускорение, он отлично работает. Я использую код media.setHWDecoderEnabled (false, false); – user3193376

ответ

1

Проблема такого рода связана с аппаратным аппаратом на борту, this awesome page компилирует все возможности декодирования на Android.

Класс MediaCodec впервые появился в Android 4.1 (API 16).

В Android 4.3 (API 18) MediaCodec был расширен, чтобы включить способ ввода данных через поверхность (через метод createInputSurface).

Несмотря на то, что Android, представленный MediaCodec в большой степени на 4.3, не все поставщики поддерживают их, необходимо иметь интеллектуальный проигрыватель/декодер для переключения на программное декодирование.

LibVLC делает это разумно, но ему необходимо управлять через LibVLC Options.