2013-06-11 4 views
5

Я создал видео плеер с помощью MediaCodec и MediaExtractor, но когда я пытаюсь изменить положение средств массовой информации с помощью MediaExtractorseekTo метод это очень медленно (потребовалось 10 секунд, чтобы искать для 1080P видео), а SDK MediaPlayer может искать в настоящее время. Любая идея исправить это?Slow MediaExtractor seekTo

MediaExtractor extractor = new MediaExtractor(); 
extractor.setDataSource(SAMPLE);  
. 
. 
. 
extractor.seekTo(480000000, MediaExtractor.SEEK_TO_CLOSEST_SYNC); 

Update

Theo оригинальный проект here

+0

Привет, это вопрос. Как создать видеоплеер с помощью MediaCodec и MediaExtractor? Как я понимаю, эти классы находятся в/media/jni, вы пересоздали «media-jni»? Если бы вы это сделали, можете ли вы посоветовать мне, как это сделать? Моя текущая проблема - пересоздать «media-jni» (вызванный из MediaPlayer.java), чтобы я мог управлять заголовками (с coookie) в функции setDataSource(). Спасибо, в любом случае. – Nezneika

+1

@hami, MediaCodec и MediaExctractor представлены в Jelly Bean, и они являются общедоступными (http://developer.android.com/reference/android/media/MediaCodec.html) –

+0

Благодарим за информацию. Однако в моей задаче я должен использовать Android-уровень 14 вместо JB, что жалко. – Nezneika

ответ

5

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

Я только что загрузил новый рабочий проект со следующими характеристиками:

  • Правильных искать
  • Правильных СМИ текущего положения
  • Правильного медиа длительность
  • MediaController
  • затруднительное воспроизведения для некоторых видео, что аппаратный декодер (MediaCodec) не может правильно определить свои метки времени кадра.

https://github.com/mafshin/MediaCodecDemo

+0

Вы нашли исправление? – StackOverflowed

+0

@StackOverflowed, на самом деле я переключился с MediaCodec на хорошо известную библиотеку Vitamio (https://github.com/yixia/VitamioBundle). –