2012-04-10 5 views
3

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

  1. Play * .mp4 или другой формат HD медиа-файлы (полноэкранный режим 1920х1080)
  2. Добавить привязки событий в апплет (Я буду использовать сенсорный монитор)

Я пытался найти много, но нашел только устаревшие примеры JMF (VLCJ и т. Д.). Итак, я хочу, чтобы вы спросили, с чего начать строить этот апплет. Какие библиотеки я могу включить.

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

Пожалуйста, поделитесь своими идеями, как я могу это сделать. Любые примеры кода были бы замечательными.

+1

* "mp4 или другой формат" * Вы изменить формат видео? ваши клиенты имеют широкую полосу пропускания? Обратите внимание, что в то время как JMF является древним и оставленным, VLCJ не является. В прошлый раз, когда я проверял, было непрактично использовать VLCJ в апплете. * «Я нашел подобный проект .. Но ..» * Что это за проект, который не подходит для вашего прецедента (не ожидайте, что мы будем следовать ссылке и выяснить это)? –

+3

mp4 - это просто контейнер, какой видео/аудио кодек вы ожидаете использовать? H264, VP8? У меня нет ответа на это, но вот мои исследования: http://www.adamish.com/blog/archives/303 – Adam

+0

Эндрю, моя идея заключалась в том, чтобы создать приложение для его локального использования. Основная проблема заключается в том, чтобы сэкономить время для открытия медиафайлов. Извините за эту ссылку. Он показывает, как воспроизводить видео с выбранного медиаплеера, но мне нужно настроить дополнительные параметры для настройки для игрока. «Desktop.getDesktop(). Open (новый файл (« the.mp4 »)); Я ожидаю чего-то подобного в своем событии onClick со специальной опцией для игрока. Адам, я буду использовать H264. – pvaitonis

ответ

2

Сначала вы должны

// создать плеер для воспроизведения медиа, указанные в URL

Player mediaPlayer = Manager.createRealizedPlayer(mediaURL); 

Теперь

mediaPlayer.start(); // start playing the media clip 

Я надеюсь, что это работает!

+0

Хотя я не чувствовал, что это был конкретный или образцовый ответ, это направление, в котором нужно начать. Не могли бы ли вы по-прежнему уделить внимание своим причинам? IMWTK. –

0

VLCJ не устарел, он активно развит и обладает огромной гибкостью и мощью в достижении цели. Я использую его в своем приложении для одновременного отображения нескольких видеопотоков внутри приложения, а также для выполнения таких операций, как текстовые наложения одновременно. Иногда бывает сложно сделать это, но, безусловно, возможно.

Существует ряд базовых (современных) примеров, которые помогут вам начать работу с VLCJ.

3

Я бы порекомендовал vlcj, потому что я уверен, что у него есть все форматы, которые вам могут понадобиться, или have.It не устарел вообще и легко начать с. Если вы хотите отображать видео графически, я не думаю, что вы когда-либо могли найти простые инструкции, как вы упомянули, но если вы организуете все шаги, о которых я расскажу и объясню более подробно, вы увидите, что vlcj - лучший вариант для обработки таких медиа (как мне кажется). Мне также нравится и рекомендую JavaFx, потому что эффектов, которые вы можете сделать с этим, но это слишком сложно для меня, чтобы настроить и закодировать в этом материале.

Итак, давайте начнем. Во-первых, я хотел бы сказать, что я применил vlcj в приложении на основе Swing (в Windows), но это не должно вас огорчить, потому что для непосредственного всплывающего плеера, о котором вы упоминаете, мы могли бы просто сделайте jdialog и поместите видео-поверхность в свою область содержимого.

шаги

1) Таким образом, первое, что должно быть сделано, чтобы загрузить VLC Media Player (нам потребуется 32 битную версию, которая играет в обоих 32- или 64-разрядных вычислительных средах) .Я был ужасный месяц пытается чтобы настроить, почему мое приложение не загрузило нужные библиотеки и обнаружило, что при запуске файла с расширением jar он работает на 32-битном jvm (в eclipse работает на 64-битном jvm, и все в порядке. Поэтому нам нужна 32-битная версия) в то время как у меня были 64-разрядные родные библиотеки для загрузки.В любом случае, если вы загружаете и устанавливаете 32-битный медиаплеер vlc, создайте где-нибудь папку для включения вашего проекта (скажем, «C:/MyProject») внутри MyProject создайте другую папку и вызовите ее, например «Needed» (здесь мы разместим все необходимые библиотеки для vlcj для правильной работы). Теперь из содержимого C: \ Program Files (x86) \ VideoLAN \ VLC скопируйте каталог плагинов и 4 dlls (axvlc.dll, libvlc.dll, libvlccore.dll, npvlc. dll) и вставьте их в свою нужную папку

2) Теперь, если вы работаете в Eclipse IDE или аналогичном, вам нужно будет создать папку в вашем проекте (скажем, «lib») и внутри, чтобы создать другую папку (name it «jars»). В папке jars разместите следующие банки: jna-3.5.1.jar, platform-3.5.1.jar, vlcj-2.2.0.jar. Вы можете найти эти банки из vlcj google project.And then just включите их в свой путь к классам (либо выберите их и щелкните правой кнопкой мыши-> добавить в путь сборки или перейдите к свойствам проекта -> путь сборки Java и добавьте эти 3 баночки). Все для настройки, прежде чем мы начнем кодирование с установки проигрывателя.

3) Вам нужно загрузить vlcj перед тем, как начать использовать его. Я просто использую этот код, чтобы сделать это возможным (я объясню это в ближайшее время, не переживайте).

public void LoadLibrary(){ 
    SwingWorker loadWorker;  


    loadWorker = new SwingWorker(){ 

     @Override 
     protected Object doInBackground() throws Exception { 
      // TODO Auto-generated method stub 

      Thread.sleep(2000); 

      path = new File("").getAbsolutePath().toString(); 
      path = path.replace(".", ""); 
      path = path.replace("\\", "//"); 
      path = path+"//Needed"; 

      if(RuntimeUtil.isWindows()){ 
       NativeLibrary.addSearchPath(
         "libvlc",path 



          ); 
          Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class); 




        } 
      else if(RuntimeUtil.isNix()){ 
        NativeLibrary.addSearchPath(
          "libvlc",path 

          ); 
      } 



      mediaPlayerFactory = new MediaPlayerFactory(); 
      player = mediaPlayerFactory.newEmbeddedMediaPlayer(); 
      CanvasVideoSurface videoSurface = mediaPlayerFactory.newVideoSurface(canvas); 
      player.setVideoSurface(videoSurface); 


      return null; 
     } 

    }; 
    loadWorker.execute(); 

} 

Так что я сделать, это сделать поток для Swing, на основе приложений, потому что вы не можете играть средства массовой информации, если ваши средства массовой информации холст не отображаемый и все в конструкторе полностью построено, когда его код done.That означает, что перед тем, как сделать плеер, мы должны сначала создать задержку (моя - 2 секунды), чтобы наш конструктор прекратил свою работу, а наш JFrame (или jWindow или jDialog и т. д.) стал отображаемым. Далее я вычисляю свой путь, динамически перемещаясь по пути моей запущенной банки (обратите внимание: не из рабочего пространства внутри Eclipse) и введите нужную папку для реализации требуемых родных библиотек. Внутри оператора if я говорю системе, чтобы искать libvlc.dll в определенном пути, который я вычислил, а затем загружаю и, таким образом, шаг вперед, чтобы воспроизвести медиафайлы. Внешняя инструкция if-else на самом деле c reate мой плеер и поместить холст для своего VideoSurface (canvas - это Canvas java.awt Object Я использую WindowsCanvas, потому что я работаю только в Windows, вы можете найти для linux или mac подобный холст (не беспокойтесь об этом!)) Вне Swing -Worker поле (поток), я просто говорю, что поток будет выполняться (важно как инструкция функции вызова).

4) Чтобы воспроизвести файл, я просто использую кнопку где-то в своем приложении, чтобы вызывать событие действия при каждом нажатии, чтобы мы что-то делали внутри него. Я, например, делаю JFileChooser для выбора медиафайла. Вы можете легко найти его, но вот мой код:

final JFileChooser chooser = new JFileChooser(); 

      FileNameExtensionFilter filter0 = new FileNameExtensionFilter(".wav", "wav"); 
      FileNameExtensionFilter filter1 = new FileNameExtensionFilter(".mp3","mp3"); 
      FileNameExtensionFilter filter2 = new FileNameExtensionFilter(".mpg","mpg"); 
      FileNameExtensionFilter filter3 = new FileNameExtensionFilter(".mp4","mp4"); 
      FileNameExtensionFilter filter4 = new FileNameExtensionFilter(".avi","avi"); 
      FileNameExtensionFilter filter5 = new FileNameExtensionFilter(".flv","flv"); 
      FileNameExtensionFilter filter6 = new FileNameExtensionFilter(".wmv","wmv"); 
      FileNameExtensionFilter filter7 = new FileNameExtensionFilter(".3gp", "3gp"); 
      FileNameExtensionFilter filter8 = new FileNameExtensionFilter(".swf", "swf"); 
      FileNameExtensionFilter filter9 = new FileNameExtensionFilter(".mkv", "mkv"); 
      FileNameExtensionFilter filter10 = new FileNameExtensionFilter(".flac", "flac"); 
      FileNameExtensionFilter filter11 = new FileNameExtensionFilter("Music & Videos","wav","mp3","mpg","mp4","avi","flv","wmv","3gp","swf","mkv","flac","VOB"); 
      FileNameExtensionFilter filter12 = new FileNameExtensionFilter("Music","wav","mp3","flac"); 
      FileNameExtensionFilter filter13 = new FileNameExtensionFilter(".VOB", "VOB"); 
      FileNameExtensionFilter filter14 = new FileNameExtensionFilter("Videos","mpg","mp4","avi","flv","wmv","3gp","swf","mkv","VOB"); 


      chooser.setFileFilter(filter14); 
      chooser.setFileFilter(filter2); 
      chooser.setFileFilter(filter3); 
      chooser.setFileFilter(filter4); 
      chooser.setFileFilter(filter5); 
      chooser.setFileFilter(filter6); 
      chooser.setFileFilter(filter13); 
      chooser.setFileFilter(filter7); 
      chooser.setFileFilter(filter8); 
      chooser.setFileFilter(filter9); 
      chooser.setFileFilter(filter12); 
      chooser.setFileFilter(filter0); 
      chooser.setFileFilter(filter1); 
      chooser.setFileFilter(filter10); 
      chooser.setFileFilter(filter11); 



      int returnVal = chooser.showOpenDialog(getParent()); 
      if(returnVal == JFileChooser.APPROVE_OPTION) { 
       System.out.println("You chose to open this file: " + 
       chooser.getSelectedFile().getName()); 
       File myfile1 = chooser.getSelectedFile(); 
       myfilepath1 = chooser.getSelectedFile().getAbsolutePath(); 
} 

     player.startMedia("file:///"+myfilepath1); 
       player.pause();  

Эти файловые фильтры некоторых типов медиа-файлов, которые могут играть vlcj для u.What я действительно открывает диалоговое окно файла, чтобы выбрать файл и если я выберу файл, я держу его путь (полезно для выражения vlcj, где его искать).

5) Теперь, чтобы воспроизвести файл у просто должны набрать следующий код:

player.play(); 

Может быть, в другом случае действия другого Баттона.

6) если вы закончите писать, все, что вам нужно сделать, это экспортировать проект в исполняемый файл jar в папку MyProject, которая была сначала создана и запущена (внимание, дважды щелкнув по нему (не с консоли (иначе это будет быть запущенным с 64-битным jvm, и вы не хотите, чтобы у вас были 32-разрядные аборигены и vlcj не принимали эти конфликты)))

В заключение я должен сказать, что эти шаги сработали для меня. Надеюсь, они помогут вам далее в разработке приложений.

С уважением, PeGiannOS