0

На самом деле я пытаюсь выяснить duration of video from URl, но он бросает нулевой указатель исключениеКак узнать продолжительность видео без mediaPlayer?

try{ 
    File file = new File("http://84.--.--.--:8--9/"+filename); 
    if (file.toString().endsWith(".jpg")) { 
      //photo 
     } else if (file.toString().endsWith(".mp4")) { 
      //video 
      long mills = MediaPlayer.create(UploadFileService.this, Uri.parse(file.getAbsolutePath().toString())).getDuration();         
      Log.d("duration", "" + mills); 
     }       
    }catch(Exception e) { 
     e.printStackTrace(); 
    }   
} 

ответ

0

Вы облако попробовать использовать класс MediaMetadataRetriever, вам просто нужно установить источник данных к instace его, а затем проверить для информации, которую вы ищете.

+0

Сэра Я использовал этот его: он бросает Java незаконное исключение. вот мой код: \t MediaMetadataRetriever retriever = new MediaMetadataRetriever(); \t \t \t \t \t \t \t \t retriever.setDataSource (UploadFileService.this, Uri.parse (file.toString())); \t \t \t \t \t \t \t \t время Строки = retriever.extractMetadata (MediaMetadataRetriever.METADATA_KEY_DURATION); \t \t \t \t \t \t \t \t длиной timeInmillisec = Long.parseLong (время); –

2
MediaMetadataRetriever retriever = new MediaMetadataRetriever(); 

retriever.setDataSource(intent.getStringExtra("fileName")); 
String time = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION); 
int VideoDuration = Integer.parseInt(time);// This will give time in millesecond 
+0

Got java.lang.IllegalArgumentException on setdataSource –

+0

Вы должны указать имя файла на setDataSource.Что вы даете? –

+0

em дает имя файла как "http: //84.--.--.--: 8--9 /" + filename " –

1

Вы должны попробовать это,
Я надеюсь, что это работает.

MediaMetadataRetriever retriever = new MediaMetadataRetriever(); 
retriever.setDataSource(File.getPath()); // Enter Full File Path Here 
String time = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION); 
long timeInmillisec = Long.parseLong(time); // You will get time in milliseconds 
1

Использование FFmpegMediaMetadataRetriever:

import wseemann.media.FFmpegMediaMetadataRetriever; 

... 

FFmpegMediaMetadataRetriever retriever = new FFmpegMediaMetadataRetriever(); 

retriever.setDataSource("some URL"); 
String time = retriever.extractMetadata(FFmpegMediaMetadataRetriever.METADATA_KEY_DURATION); 
int duration = Integer.parseInt(time); 
retriever.release(); 
+0

спасибо, но он увеличит размер apk (~ 40Mb) – vuhung3990

+0

Вот почему библиотека предоставляет варианты градиентов для каждой архитектуры. Задача решена. –

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