java 线程错误_java错误:线程“ main”中的异常java.lang.NullPointerException

这是代码:

import java.awt.*;

import java.util.*;

import javax.media.*;

import javax.media.protocol.*;

import javax.media.control.*;

import javax.media.format.*;

public class jmfcam05v

{

DataSource dataSource;

PushBufferStream pbs;

Vector camImgSize = new Vector();

Vector camCapDevice = new Vector();

Vector camCapFormat = new Vector();

int camFPS;

int camImgSel;

Processor processor = null;

DataSink datasink = null;

public static void main(String[] args)

{

jmfcam05v jmfcam = new jmfcam05v();

}

public jmfcam05v()

{

fetchDeviceFormats();

camFPS = 30; // framerate

fetchDeviceDataSource();

createPBDSource();

createProcessor(dataSource);

startCapture();

try{Thread.sleep(20000);}catch(Exception e){} // 20 seconds

stopCapture();

}

boolean fetchDeviceFormats()

{

Vector deviceList = CaptureDeviceManager.getDeviceList(new VideoFormat(null));

CaptureDeviceInfo CapDevice = null;

Format CapFormat = null;

String type = "N/A";

CaptureDeviceInfo deviceInfo=null;boolean VideoFormatMatch=false;

for(int i=0;i

{

// search for video device

deviceInfo = (CaptureDeviceInfo)deviceList.elementAt(i);

if(deviceInfo.getName().indexOf("vfw:")<0)continue;

Format deviceFormat[] = deviceInfo.getFormats();

for (int f=0;f

{

if(deviceFormat[f] instanceof RGBFormat)type="RGB";

if(deviceFormat[f] instanceof YUVFormat)type="YUV";

if(deviceFormat[f] instanceof JPEGFormat)type="JPG";

Dimension size = ((VideoFormat)deviceFormat[f]).getSize();

camImgSize.addElement(type+" "+size.width+"x"+size.height);

CapDevice = deviceInfo;

camCapDevice.addElement(CapDevice);

//System.out.println("Video device = " + deviceInfo.getName());

CapFormat = (VideoFormat)deviceFormat[f];

camCapFormat.addElement(CapFormat);

//System.out.println("Video format = " + deviceFormat[f].toString());

VideoFormatMatch=true; // at least one

}

}

if(VideoFormatMatch==false)

{

if(deviceInfo!=null)System.out.println(deviceInfo);

System.out.println("Video Format not found");

return false;

}

return true;

}

void fetchDeviceDataSource()

{

CaptureDeviceInfo CapDevice =

(CaptureDeviceInfo)camCapDevice.elementAt(camImgSel);

System.out.println("Video device = " + CapDevice.getName());

Format CapFormat = (Format)camCapFormat.elementAt(camImgSel);

System.out.println("Video format = " + CapFormat.toString());

MediaLocator loc = CapDevice.getLocator();

try

{

dataSource = Manager.createDataSource(loc);

}

catch(Exception e){}

try

{

FormatControl formCont=((CaptureDevice)dataSource).getFormatControls()[0];

VideoFormat formatVideoNew = new

VideoFormat(null,null,-1,null,(float)camFPS);

formCont.setFormat(CapFormat.intersects(formatVideoNew));

}

catch(Exception e){}

}

void createPBDSource()

{

try

{

pbs=((PushBufferDataSource)dataSource).getStreams()[0];

}

catch(Exception e){}

}

public void createProcessor(DataSource datasource)

{

FileTypeDescriptor ftd = new FileTypeDescriptor(FileTypeDescriptor.MSVIDEO);

Format[] formats = new Format[] {new VideoFormat(VideoFormat.INDEO50)};

ProcessorModel pm = new ProcessorModel(datasource, formats, ftd);

try

{

processor = Manager.createRealizedProcessor(pm);

}

catch(Exception me)

{

System.out.println(me);

// Make sure the capture devices are released

datasource.disconnect();

return;

}

}

private void startCapture()

{

// Get the processor's output, create a DataSink and connect the two.

DataSource outputDS = processor.getDataOutput();

try

{

MediaLocator ml = new MediaLocator("file:capture.mpg");

datasink = Manager.createDataSink(outputDS, ml);

datasink.open();

datasink.start();

}catch (Exception e)

{

System.out.println(e);

}

processor.start();

System.out.println("Started saving...");

}

private void pauseCapture()

{

processor.stop();

}

private void resumeCapture()

{

processor.start();

}

private void stopCapture()

{

// Stop the capture and the file writer (DataSink)

processor.stop();

processor.close();

datasink.close();

processor = null;

System.out.println("Done saving.");

}

}

错误:

跑:

视频设备= vfw:Microsoft WDM图像捕获(Win32):0

视频格式= YUV视频格式:大小= java.awt.Dimension [width = 640,height = 480] MaxDataLength = 614400 DataType = class [B yuvType = 32 StrideY = 1280 StrideUV = 1280 OffsetY = 0 OffsetU = 1 OffsetV = 3

javax.media.CannotRealizeException:无法提供所有请求的轨道

线程“主”中的异常java.lang.NullPointerException

在jmfcam05v.startCapture(jmfcam05v.java:202)

在jmfcam05v。(jmfcam05v.java:82)

在jmfcam05v.main(jmfcam05v.java:64)

请帮助我解决此错误。我正在使用Windows Vista OS。

谁能建议我如何以.3gp格式存储文件?请帮助

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值