Не удалось реализовать медиаплеер - PullRequest
0 голосов
/ 01 января 2011

Я использую этот код для запуска файла AVI с использованием JMF но ошибка появляется как "Не удалось реализовать медиаплеер"

и как открыть все видео в формате jmf

import javax.media.*;
import javax.media.format.*;
import java.io.*;
import java.util.*;
public class Test{
public static void main(String a[]) throws Exception{
    CaptureDeviceInfo di = null;
    Player p = null;
    Vector deviceList = CaptureDeviceManager.getDeviceList(new AudioFormat("linear", 44100, 16, 2));

    if (deviceList.size() > 0){
            di = (CaptureDeviceInfo)deviceList.firstElement();
            System.out.println((di.getLocator()).toExternalForm());
    }else{
            System.out.println("Exiting");
            System.exit(-1);
    }

    try{
            p = Manager.createPlayer(di.getLocator());
    }catch (IOException e){
            System.out.println(e);
    }catch (NoPlayerException e) {
        System.out.println(e);
    }
    System.out.println("Playing Started");
    p.start();
}
}

Ответы [ 3 ]

0 голосов
/ 31 мая 2013

Если вы правильно установили JMF и можете использовать JMStudio для просмотра и захвата видео, тогда все в порядке.

Пожалуйста, проверьте фрагмент кода CaptureDeviceManager.Что является основой для поиска и какой файл AVI вы хотите воспроизвести?

Попробуйте этот фрагмент кода ...

public static void main(String[] args) throws Exception {
    File f = new File("C:\\test.avi"); //Substitute the name of the file
    Player p = Manager.createRealizedPlayer(f.toURI().toURL());
    Component c = p.getVisualComponent();
    Frame frame = new Frame("JMF AVI Player");
    frame.setState(Frame.MAXIMIZED_BOTH);
    frame.add(c);
    frame.pack();
    p.start();
    frame.setVisible(true);
}
0 голосов
/ 18 апреля 2014

После загрузки файла JAR jmf-2_1_1e-alljava извлеките файлы, как если бы вы делали любую папку zip в зависимости от вашей операционной системы.Откройте ваш проект в используемом редакторе, щелкните правой кнопкой мыши и выберите путь сборки, выберите библиотеки, выберите «Добавить JAR / Файлы», перейдите к месту, в котором вы сохранили файл jmf, дважды щелкните файл, выберите «lib».Там вы увидите то, что выглядит как куча банок, нажмите на одну из них, чтобы открыть ее, она появится на большой панели перед вашими глазами, вы должны сделать это для каждой банки, вы слышали меня, каждый икаждый из них, Когда вы закончите, нажмите ОК, и "Бам", Вы должны быть хорошими, весело провести время! ..

0 голосов
/ 12 января 2011

Я предполагаю, что это как-то связано с вашей установкой JMF. Вы используете Windows? Если это так, я переработал ваш код. Дать ему шанс. Он сообщит вам, находятся ли dll, необходимые для воспроизведения видео, в правильных местах.


/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package javaapplication13;

/**
 *
 * @author dvargo
 */
import javax.media.*;
import javax.media.format.*;
import java.io.*;
import java.util.*;

public class Test {

    final static String windowsDllFolder = "C:\\WINDOWS\\system32\\";

    final static String[] windowsDllList = new String[]{
        "jmacm.dll",
        "jmam.dll",
        "jmcvid.dll",
        "jmdaud.dll",
        "jmdaudc.dll",
        "jmddraw.dll",
        "jmfjawt.dll",
        "jmg723.dll",
        "jmgdi.dll",
        "jmgsm.dll",
        "jmh261.dll",
        "jmh263enc.dll",
        "jmjpeg.dll",
        "jmmci.dll",
        "jmmpa.dll",
        "jmmpegv.dll",
        "jmutil.dll",
        "jmvcm.dll",
        "jmvfw.dll",
        "jmvh263.dll",
        "jsound.dll"};

     /**
     * Verifies that all the dll's that JMF needs are in their correct spot
     * @return True if all dlls are in their correct spot, false otherwise
     */
    public static boolean detectDlls()
    {
        boolean retVal = true;
        String currFile;
        for(String currDll : windowsDllList)
        {
            currFile = windowsDllFolder + currDll;
            if(! new File(currFile).exists())
            {

                retVal = false;
            }
        }
        return retVal;
    }

    public static void main(String a[]) throws Exception {

        boolean JMFsetUp = detectDlls();
        if(JMFsetUp == false)
        {
            System.err.println("Missing DLLS");
        }
        else
        {
            System.out.println("JMF Should be working");
        }


        CaptureDeviceInfo di = null;
        Player p = null;
        Vector deviceList = CaptureDeviceManager.getDeviceList(new AudioFormat("linear", 44100, 16, 2));

        if (deviceList.size() > 0) {
            di = (CaptureDeviceInfo) deviceList.firstElement();
            System.out.println((di.getLocator()).toExternalForm());
        } else {
            System.out.println("Exiting");
            System.exit(-1);
        }

        try {
            p = Manager.createPlayer(di.getLocator());
        } catch (IOException e) {
            System.out.println(e);
        } catch (NoPlayerException e) {
            System.out.println(e);
        }
        System.out.println("Playing Started");
        p.start();
    }
}


...