2013-11-13 5 views
0

Чтобы удаленно воспроизводить мультимедийный файл, я использовал UDP-дейтаграмму. Я отправляю пакет 40 кб клиентам, но для синхронизации всех клиентов мне нужно найти продолжительность каждого пакета, чтобы, если пакет потерян, я могу приостановить проигрыватель на стороне клиента с помощью SocketTimeOutExcpetion. Чтобы вычислить длительность каждого пакета я использовал следующие уравненияВычислить битрейт медиафайла с помощью VLCJ

 duration of packet= (duration of whole file)/SizeOfPacket 

где

 duration of file = (length of file)/bitrate *8 

В настоящее время я вычисления битрейт используя mediainfo пакет в убунту.

Как получить битрейт аудио- или видеофайлов с использованием VLCJ API?

+0

kb = кило-бит, kB = килобайт. Какой из них вы имели в виду? –

ответ

0

Прежде всего, необходимо разобрать или играть в СМИ, играя СМИ менее предпочтителен, конечно, но в зависимости от носителя может быть необходимо - если парсер работает для СМИ:

mediaPlayer.parseMedia(); 

Метод синтаксического анализа синхронный.

Если синтаксический разбор не работает, то, к сожалению, вам нужно будет воспроизвести носитель до того, как информация станет доступной.

В зависимости от используемого кодека мультимедиа информация о дорожке может быть доступна сразу или асинхронно через некоторое время - так что вам может потребоваться прослушивание событий медиаплеера или даже некоторое время сна (неприятно, но иногда это необходимо).

Далее вы получите информацию о треке:

List<TrackInfo> audioTrackInfo = mediaPlayer.getTrackInfo(TrackType.AUDIO); 
List<TrackInfo> videoTrackInfo = mediaPlayer.getTrackInfo(TrackType.VIDEO); 

Вы можете перебирать возвращаемый список.

for (TrackInfo trackInfo : audioTrackInfo) { 
    int bitRate = trackInfo.bitRate(); 
    // ... 
} 

for (TrackInfo trackInfo : videoTrackInfo) { 
    int bitRate = trackInfo.bitRate(); 
    // ... 
} 

Добавленная сложность заключается в том, что mediaPlayer.parse() почти наверняка не работают и даже могут повиснуть, если вы играете в сети потоков.

+0

Привет. Я пытаюсь получить fps и битрейт воспроизводимого потока. Я попробовал mediaPlayer.getTrackInfo (TrackType.VIDEO); но он возвращает null. Также mediaPlayer.getRate() и mediaPlayer.getFps() возвращает 1.0 и 0.0. Есть что-то, что мне не хватает? –

+0

(Невозможно использовать их с потоками rtsp?) –