2016-02-08 3 views
1

Я использую приведенный ниже код для воспроизведения видео с помощью EXOPlayer, но он не воспроизводится.Воспроизведение видео в EXOPlayer

Видеоролик находится в формате mp4.Where я иду не так? Его показ error-

com.google.android.exoplayer.ExoPlaybackException: java.io.IOException: Failed to instantiate extractor. 

код-

loadvideo("res:/" + R.raw.samplevider); 


private void loadvideo(String path) { 
    player = ExoPlayer.Factory.newInstance(2, 1000, 5000); 
    Uri uri = Uri.parse(path); 
    sampleSource = new FrameworkSampleSource(getActivity().getApplicationContext(), uri, null); 
    // 1. Instantiate the player. 
    // 2. Construct renderers. 
    videoRenderer = new MediaCodecVideoTrackRenderer(getActivity().getApplicationContext(),sampleSource, MediaCodecSelector.DEFAULT, MediaCodec.VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING); 
    audioRenderer = new MediaCodecAudioTrackRenderer(sampleSource,MediaCodecSelector.DEFAULT); 
    // 3. Inject the renderers through prepare. 
    player.prepare(videoRenderer, audioRenderer); 
    // 4. Pass the surface to the video renderer. 
    player.sendMessage(videoRenderer, MediaCodecVideoTrackRenderer.MSG_SET_SURFACE, surfaceView.getHolder().getSurface()); 
    // 5. Start playback. 
    player.setPlayWhenReady(true); 
} 

ответ

0

Попробуйте это:

 private static final int BUFFER_SEGMENT_SIZE = 64 * 1024; 
     private static final int BUFFER_SEGMENT_COUNT = 256; 
     private static final int RENDERER_COUNT = 3; 

     Uri uri = Uri.parse(getAVideoUri()); 

     Allocator allocator = new DefaultAllocator(BUFFER_SEGMENT_SIZE); 

     DataSource dataSource = new DefaultUriDataSource(this, null, getUserAgent(this, "ExoPlayerExample")); 

     ExtractorSampleSource sampleSource = new ExtractorSampleSource(
        uri, dataSource, allocator, BUFFER_SEGMENT_COUNT * BUFFER_SEGMENT_SIZE); 

     MediaCodecVideoTrackRenderer videoRenderer = new MediaCodecVideoTrackRenderer(
        this, sampleSource, MediaCodecSelector.DEFAULT, MediaCodec.VIDEO_SCALING_MODE_SCALE_TO_FIT); 
     MediaCodecAudioTrackRenderer audioRenderer = new MediaCodecAudioTrackRenderer(
        sampleSource, MediaCodecSelector.DEFAULT); 
     player = ExoPlayer.Factory.newInstance(RENDERER_COUNT); 

     player.prepare(videoRenderer, audioRenderer, secondAudioRenderer); 
     player.sendMessage(videoRenderer, MediaCodecVideoTrackRenderer.MSG_SET_SURFACE, surfaceView.getHolder().getSurface()); 
     player.setPlayWhenReady(true); 
+0

Это не работает либо. Проблема связана с кодировкой файлов. –

+0

@LostPuppy Вы получили решение? Пожалуйста, помогите мне получить getDuration() для ExoPlayer и посмотрите http://stackoverflow.com/questions/39777975/not-able-to-get-getduration-for-aac-file-using-exoplayer –

Смежные вопросы