Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Datasink exception при попытки записи видео в файл


Автор: Jubei 31.10.2006, 14:52
Разбираюсь с JMF и решил написать простенькую програмку, которая берет из веб камеры видео поток и записывает в файл.
Код


        Vector devices =CaptureDeviceManager.getDeviceList(new VideoFormat(VideoFormat.YUV));    
        CaptureDeviceInfo  di = (CaptureDeviceInfo) devices.elementAt(0);
        MediaLocator mi = di.getLocator();

        
        DataSource mainsource = Manager.createDataSource(mi);
        
        
        proc = Manager.createProcessor(mainsource);
        StateHelper stathelp = new StateHelper(proc);
        stathelp.configure(10000);
        
        VideoFormat vfmt = new VideoFormat(VideoFormat.CINEPAK);
        proc.getTrackControls()[0].setFormat(vfmt);
        proc.getTrackControls()[0].setEnabled(true);
        proc.setContentDescriptor(new FileTypeDescriptor(FileTypeDescriptor.QUICKTIME));
        Control control = proc.getControl("javax.media.control.FrameRateControl");
        if ( control != null && 
                 control instanceof javax.media.control.FrameRateControl )
                  ((javax.media.control.FrameRateControl)control).setFrameRate(15.0f);
        
        stathelp.realize(10000);
        
        MediaLocator dest = new MediaLocator("file://newfile.mov"); 
        DataSource data = proc.getDataOutput(); 
        DataSink datasink = Manager.createDataSink(data,dest);
        proc.start();

        
        datasink.start();
        datasink.open();
        
        proc.close();
        datasink.stop();
        datasink.close();


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

Код

javax.media.NoDataSinkException: Cannot find a DataSink for: com.sun.media.multiplexer.BasicMux$BasicMuxDataSource@82764b
    at javax.media.Manager.createDataSink(Manager.java:1894)
    at VideoStreamReader.main(VideoStreamReader.java:66)

где 66 строчка это DataSink datasink = Manager.createDataSink(data,dest);
может у кто уже встречался с такой ситуацией ? Спасибо за помощь ! (а я пока пойду снова читать документацию по JMF а то может чего важное упустил по незнаю smile)

Автор: Jubei 31.10.2006, 16:01
Вот что значит эффект присутствия на форуме smile через некоторое время нашел ту глупость из-за которой вываливалась ошибка!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)