Pull to refresh

Написание простого видео плеера на Java с использованием JMF API

Буквально сегодня, во время написания дипломной работы, связанной с разработкой интерпретатора для формального языка, столкнулся с задачей написания видео плеера. А поскольку моя дипломная косвенно связанна с обработкой мультимедиа, от видео плеера требовалась максимальная простота, а именно банальное проигрывание видео файлов. С обработкой видео я столкнулся впервые, поэтому я начал гуглить и нагуглил, собственно, JMF(Java Media Framework), которая выглядела вполне подходящей.

Найти библиотеку JMF API можно на сайте Oracle или через *ваш любимый поисковик* (последняя рабочая версия 2.1.1e).
В архиве будет 4 jar файла, которые надо будет добавить к проекту. Я работал в Eclipse, поэтому для того, чтобы добавить их в проект, достаточно кликнуть правой кнопкой по проекту, выбрать Build Path-Configure Build Path-Add External JARs

Код реализации представлен ниже:

package example;

import java.awt.Dimension;
import javax.swing.*;
import javax.media.bean.playerbean.MediaPlayer;

class VideoExample extends JFrame{
MediaPlayer player;//наш плеер

public VideoExample(String path){
super("Простой видео плеер");

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setSize(new Dimension(640,480));//устанавливаем размер окна

player = new MediaPlayer();
//path - путь к файлу
player.setMediaLocation("file:///" + path);
player.setPlaybackLoop(false);//Повтор видео
player.prefetch ();//предварительная обработка плеера (без неё плеер не появится)
//добавляем на фрейм
add(player);
//player.start (); - сразу запустить плеер

setVisible(true);
}

public static void main(String []args){
VideoExample ve = new VideoExample("D:\\1.mpeg");
}
}


Вот тут и появилась проблема. Оказывается, хоть в документации к JMF и объявлена поддержка таких распространенных форматов, как avi и mpeg, на деле же это далеко не так. Видео либо не запускается вовсе, либо слышна только звуковая дорожка. Гугл показал, что с данной проблемой сталкивалось немало

пользователей(а сколько ещё сталкнётся?), вот только из кучи ссылок ответ нашелся лишь в одной.
Для решения данной проблемы к проекту необходимо добавить библиотеку jffmpeg-1.1.0.jar, который содержит кодеки для видео(и аудио, кстати) форматов.

Скачать её можно с официального сайта, который также легко находится поисковиком.

После добавления данной библиотеки видео тут же заработало.

image

Надеюсь, если статью пропустят, она поможет тем, кто столкнётся с подобной проблемой в будущем. Да и рабочий пример будет весьма полезен для начинающих программистов. На решение данной проблемы я потратил непростительное количество часов работы, давайте экономить время:)
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.