




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
最近项目要求能对视频和语音进行同步合成,以及对视频进行画面与语音的分离功能,由于没有接触过这类东西,所以想从最基础做起,于是在网上找到sun公司开源的jmf架构,看到网上也有不少小例子,就开始对安装jmf并配置了开发环境,将小例子粘到自己的新建工程下,结果发现不好用,没办法自己也顺手写了一个都发生同样的问题,希望有经验的朋友能够帮助解决一下。 我现在干脆就用网上的一个例子来说明问题,实现的功能是,利用点击拍照按钮能,启动摄像头并将捕捉摄像头的画面将生成图片保存到物理硬盘中,代码如下:Java代码1. packagecom.creatplay;2. importjava.awt.BorderLayout;3. importjava.awt.Color;4. importjava.awt.Component;5. importjava.awt.Dimension;6. importjava.awt.Graphics;7. importjava.awt.Graphics2D;8. importjava.awt.Image;9. importjava.awt.Panel;10. importjava.awt.Rectangle;11. importjava.awt.event.ActionEvent;12. importjava.awt.event.ActionListener;13. importjava.awt.event.WindowAdapter;14. importjava.awt.event.WindowEvent;15. importjava.awt.image.BufferedImage;16. importjava.io.FileNotFoundException;17. importjava.io.FileOutputStream;18. importjava.io.IOException;19. 20. importjavax.media.Buffer;21. importjavax.media.CannotRealizeException;22. importjavax.media.CaptureDeviceInfo;23. importjavax.media.CaptureDeviceManager;24. importjavax.media.Manager;25. importjavax.media.MediaLocator;26. importjavax.media.NoPlayerException;27. importjavax.media.Player;28. importjavax.media.control.FrameGrabbingControl;29. importjavax.media.format.VideoFormat;30. importjavax.media.util.BufferToImage;31. importjavax.swing.JButton;32. importjavax.swing.JFrame;33. importjavax.swing.JPanel;34. 35. importcom.sun.image.codec.jpeg.ImageFormatException;36. importcom.sun.image.codec.jpeg.JPEGCodec;37. importcom.sun.image.codec.jpeg.JPEGEncodeParam;38. importcom.sun.image.codec.jpeg.JPEGImageEncoder;39. 40. 41. publicclassFirstCaptureextendsJPanelimplementsActionListener42. 43. privateCaptureDeviceInfocaptureDeviceInfo=null;44. privateMediaLocatormediaLocator=null;45. privatestaticPlayerplayer=null;46. privateImagePanelimagePanel=null;47. privateJButtoncapture;48. privateBufferbuffer=null;49. privateVideoFormatvideoFormat=null;50. privateBufferToImagebufferToImage=null;51. privateImageimage=null;52. 53. publicFirstCapture()54. 55. 56. 57. setLayout(newBorderLayout();58. setSize(320,550);59. Stringstr=vfw:MicrosoftWDMImageCapture(Win32):0;60. captureDeviceInfo=CaptureDeviceManager.getDevice(str);61. /MediaLocatormediaLocator=captureDeviceInfo.getLocator();62. mediaLocator=newMediaLocator(vfw:/0);63. imagePanel=newImagePanel();64. capture=newJButton(拍照);65. capture.addActionListener(this);66. try67. player=Manager.createRealizedPlayer(mediaLocator);68. player.start();69. Componentcomp;70. Componentcomp1;71. if(comp=player.getVisualComponent()!=null)72. add(comp,BorderLayout.NORTH);73. /if(comp1=player.getControlPanelComponent()!=null)74. /add(comp1,BorderLayout.CENTER);75. catch(NoPlayerExceptione)76. /TODOAuto-generatedcatchblock77. e.printStackTrace();78. catch(CannotRealizeExceptione)79. /TODOAuto-generatedcatchblock80. e.printStackTrace();81. catch(IOExceptione)82. /TODOAuto-generatedcatchblock83. e.printStackTrace();84. 85. add(imagePanel,BorderLayout.SOUTH);86. add(capture,BorderLayout.CENTER);87. 88. 89. Override90. publicvoidprint(Graphicsg)91. /TODOAuto-generatedmethodstub92. super.print(g);93. g.setColor(newColor(255,0,0);94. g.drawLine(0,0,100,100);95. 96. 97. publicstaticvoidmain(Stringargs)98. /TODOAuto-generatedmethodstub99. JFramef=newJFrame(FirstCapture);100. FirstCapturecf=newFirstCapture();101. 102. f.addWindowListener(newWindowAdapter()103. publicvoidwindowClosing(WindowEvente)104. player.close();105. System.exit(0););106. 107. f.add(Center,cf);108. f.pack();109. f.setSize(newDimension(320,550);110. f.setVisible(true);111. 112. 113. publicvoidactionPerformed(ActionEvente)114. /TODOAuto-generatedmethodstub115. FrameGrabbingControlfgc=(FrameGrabbingControl)player.getControl(javax.media.control.FrameGrabbingControl);116. buffer=fgc.grabFrame();117. bufferToImage=newBufferToImage(VideoFormat)buffer.getFormat();118. image=bufferToImage.createImage(buffer);119. imagePanel.setImage(image);120. saveImage(image,D:/test.jpg);121. 122. publicstaticvoidsaveImage(Imageimage,Stringpath)123. 124. BufferedImagebi=newBufferedImage(image.getWidth(null),image.getHeight(null),BufferedImage.TYPE_INT_RGB);125. Graphics2Dg2=bi.createGraphics();126. g2.drawImage(image,null,null);127. FileOutputStreamfos=null;128. try129. fos=newFileOutputStream(path);130. 131. catch(FileNotFoundExceptione)132. /TODOAuto-generatedcatchblock133. e.printStackTrace();134. 135. JPEGImageEncoderje=JPEGCodec.createJPEGEncoder(fos);136. JPEGEncodeParamjp=je.getDefaultJPEGEncodeParam(bi);137. jp.setQuality(0.5f,false);138. je.setJPEGEncodeParam(jp);139. try140. je.encode(bi);141. fos.close();142. catch(ImageFormatExceptione)143. /TODOAuto-generatedcatchblock144. e.printStackTrace();145. catch(IOExceptione)146. /TODOAuto-generatedcatchblock147. e.printStackTrace();148. 149. 150. 151. classImagePanelextendsPanel152. 153. publicImagemyimg=null;154. 155. publicImagePanel()156. 157. setLayout(null);158. setSize(320,240);159. 160. 161. publicvoidsetImage(Imageimg)162. 163. this.myimg=img;164. repaint();165. 166. 167. publicvoidpaint(Graphicsg)168. 169. if(myimg!=null)170. 171. g.drawImage(myimg,0,0,this);172. 173. 174. 175. 176. 177. 加载报出的异常为:javax.media.NoPlayerException: Cannot find a Player for :vfw:/0 at javax.media.Manager.createPlayerForContent(Manager.java:1412) at javax.media.Manager.createPlayer(Manager.java:417) at javax.media.Manager.createRealizedPlayer(Manager.java:553) at com.creatplay.FirstCapture.(FirstCapture.java:67) at com.creatplay.FirstCapture.main(FirstCapture.java:100)继续运行点击“拍照”出现的一场为:Exception in thread AWT-EventQueue-0 java.lang.NullPointerException at com.creatplay.FirstCapture$1.windowClosing(FirstCapture.java:104) at java.awt.WcessWindowEvent(Unknown Source) at javax.swing.JFcessWindowEvent(Unknown Source) at java.awt.Window.p
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025湖北天门市城市社区专职工作人员招聘59人考前自测高频考点模拟试题及完整答案详解
- 2025年临沂市电子科技学校公开招聘教师(35名)考前自测高频考点模拟试题完整答案详解
- 2025江苏连云港市赣榆区事业单位招聘31人考前自测高频考点模拟试题及一套完整答案详解
- 2025黑龙江双鸭山市友谊县招聘就业见习人员考前自测高频考点模拟试题附答案详解(考试直接用)
- 2025春季厦门银行校园招聘模拟试卷完整参考答案详解
- 2025辽宁省检验检测认证中心赴高校现场招聘20人模拟试卷附答案详解
- 2025年滁州市扬子工投集团子公司社会招聘2人模拟试卷及1套完整答案详解
- 2025年食品供应合同范本
- 2025年河北衡水冀州区公开招聘留置保障队伍辅警人员12名模拟试卷有答案详解
- 2025贵州省农业科学院引进急需紧缺人才3人模拟试卷及答案详解(新)
- 二年级语文《坐井观天》说课课件
- DL∕T 741-2019 架空输电线路运行规程
- 数学同步练习册基础模块(上册)参考答案
- DZ∕T 0173-2022 大地电磁测深法技术规程(正式版)
- 锅炉专工试题
- 医疗质量与安全教育培训
- 2024年江苏省生态环境监测专业技术人员大比武竞赛备考试题库(含答案)
- 《手足口病》课件
- 山东省地震安全性评价收费项目及标准
- 复旦大学入学教育考试答案
- 中国马克思主义与当代-第三讲课件
评论
0/150
提交评论