📄 jmf捕获技术(视频) - netwarning的专栏 - csdnblog.htm
字号:
<LI><A
href="http://blog.csdn.net/netwarning/archive/2006/06.aspx">2006年06月(4)</A>
<LI><A
href="http://blog.csdn.net/netwarning/archive/2006/05.aspx">2006年05月(1)</A></LI></UL><SPAN
id=Anthem_RecentComments1_ltlComments__><SPAN id=RecentComments1_ltlComments>
<H3 class=listtitle>最近评论</H3>
<UL class=list>
<LI class=listitem>crystal:<A title=点击查看《回复:断网了》
href="http://blog.csdn.net/netwarning/archive/2007/04/07/1556086.aspx#571489">还不错啊</A>
<LI class=listitem>仙女:<A title=点击查看《回复:我的单位》
href="http://blog.csdn.net/netwarning/archive/2006/10/14/1334814.aspx#571486">好漂亮的地方啊</A>
<LI class=listitem>Solomon Joh:<A title=点击查看《回复:断网了》
href="http://blog.csdn.net/netwarning/archive/2007/04/07/1556086.aspx#566717">看来你也有一阵没更新新了,和我一样。我过来帮你踩一踩人气,记得谢谢我哦。</A>
<LI class=listitem>lilimerci:<A title=点击查看《回复:JMF捕获技术(视频)》
href="http://blog.csdn.net/netwarning/archive/2006/06/07/779142.aspx#557797">您好,我最近在做个JMF项目。<BR>可否交流一下,谢谢。</A>
<LI class=listitem>DSD:<A title=点击查看《回复:JList中添加右键菜单(JPopupMenu)》
href="http://blog.csdn.net/netwarning/archive/2007/03/16/1531711.aspx#556963">顶</A></LI></UL></SPAN></SPAN>
<DIV class=spacer> </DIV></DIV>
<DIV class=centercolumn><SPAN class=PreAndNext
id=viewpost.ascx_PreviousAndNextEntriesUp>
<DIV align=center><A
href="http://blog.csdn.net/netwarning/archive/2006/06/10/784792.aspx">上一篇: 非常周末吴宗宪受辱</A> | <A
href="http://blog.csdn.net/netwarning/archive/2006/06/07/779072.aspx">下一篇: 搭建JMF运行平台(Eclipse)</A></DIV></SPAN><BR>
<SCRIPT>function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}</SCRIPT>
<DIV class=post>
<DIV class=postTitle>
<SCRIPT src="JMF捕获技术(视频) - netwarning的专栏 - CSDNBlog.files/vote.js"></SCRIPT>
<A href="http://blog.csdn.net/netwarning/archive/2006/06/07/779142.aspx"><IMG
height=13 src="JMF捕获技术(视频) - netwarning的专栏 - CSDNBlog.files/authorship.gif"
width=15 border=0> JMF捕获技术(视频)</A>
<SCRIPT src="JMF捕获技术(视频) - netwarning的专栏 - CSDNBlog.files/count.htm"></SCRIPT>
</DIV>
<DIV class=postText>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center"
align=center><SPAN lang=EN-US
style="FONT-SIZE: 18pt; FONT-FAMILY: 黑体">JMF</SPAN><SPAN
style="FONT-SIZE: 18pt; FONT-FAMILY: 黑体">捕获技术(视频)<SPAN
lang=EN-US><O:P></O:P></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><O:P><FONT
face="Times New Roman" size=3></FONT></O:P></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><O:P><FONT
face="Times New Roman" size=3>
想要得到视频信号,首先应该先安装Java Media
Framework2.1.1.e,并进行初始化,获得音频视频驱动.</FONT></O:P></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><O:P><FONT
face="Times New Roman" size=3>
JMF通过MediaLocator(类似URL的一种媒体信息定位)来确定视频,音频或者某个音频文件在计算机中的具体位置.例如视频为vfw:Microsoft
WDM Image Capture(Win32):0,多媒体文件为
file:c:\\music\123.mp3.</FONT></O:P></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><O:P><FONT
face="Times New Roman" size=3>
知道了它的媒体信息的位置后,就可以构造一个播放器(MediaPlayer或有同样功能的Player),播放就可以了.</FONT></O:P></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><O:P><FONT
face="Times New Roman" size=3>
使用MediaPlayer的start方法就可以启动播放器了,隐藏了具体的播放细节.JMF播放器有它的生存周期,分别是Unrealized,Realizing,Realized,Prefetching,Prefetched
Started.通过监听器来由JVM来控制各种状态的转换,通过realize方法使播放器达到Realized状态,一旦达到这个状态,监听器检测到,我们再使用prefetch方法达到Prefetched状态,然后再调用start方法播放,就可以完成播放任何媒体的功能了,简单吧!</FONT></O:P></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN
lang=EN-US><O:P>
</O:P></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><O:P><FONT
face="Times New Roman" size=3></FONT></O:P></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN
style="FONT-SIZE: 15pt; FONT-FAMILY: 黑体">捕获视频代码<SPAN
lang=EN-US><O:P></O:P></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><O:P><FONT
face="Times New Roman" size=3></FONT></O:P></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT
face="Times New Roman" size=3>class CaptureVideo extends Frame implements
ControllerListener {</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><SPAN
style="mso-tab-count: 1"><FONT face="Times New Roman"
size=3> </FONT></SPAN></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT
size=3><FONT face="Times New Roman"><SPAN
style="mso-tab-count: 1"> </SPAN>private
CaptureDeviceInfo infor ;</FONT></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><SPAN
lang=EN-US><FONT face="Times New Roman" size=3>private MediaLocator mediaLocator
;</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT
size=3><FONT face="Times New Roman"><SPAN
style="mso-tab-count: 1"> </SPAN>private
String url = “vfw:Microsoft WDM Image Capture (Win32):<ST1:CHMETCNV unitname="”"
sourcevalue="0" hasspace="False" negative="False" numbertype="1" tcsc="0"
w:st="on">0”</ST1:CHMETCNV>;</FONT></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT
size=3><FONT face="Times New Roman"><SPAN
style="mso-tab-count: 1"> </SPAN>private
Component com;<O:P></O:P></FONT></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT
size=3><FONT face="Times New Roman"><SPAN
style="mso-tab-count: 1"> </SPAN>private
Panel panel ;<O:P></O:P></FONT></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT
size=3><FONT face="Times New Roman"><SPAN
style="mso-tab-count: 1"> </SPAN>MediaPlayer
player;</FONT></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><O:P><FONT
face="Times New Roman" size=3></FONT></O:P></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><O:P><FONT
face="Times New Roman" size=3></FONT></O:P></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><SPAN
lang=EN-US><FONT face="Times New Roman" size=3>public CaptureVideo()
{</FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT
size=3><FONT face="Times New Roman"><SPAN
style="mso-tab-count: 2">
</SPAN>infor =
CaptureDeviceManager.getDevice(url);<O:P></O:P></FONT></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT
size=3><FONT face="Times New Roman"><SPAN
style="mso-tab-count: 2">
</SPAN>mediaLocator = infor.getLocator();</FONT></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT
size=3><FONT face="Times New Roman"><SPAN
style="mso-tab-count: 1">
</SPAN>}</FONT></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><O:P><FONT
face="Times New Roman" size=3></FONT></O:P></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT
size=3><FONT face="Times New Roman"><SPAN
style="mso-tab-count: 1"> </SPAN>public void
paly() {</FONT></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT
size=3><FONT face="Times New Roman"><SPAN
style="mso-tab-count: 2">
</SPAN>try {<O:P></O:P></FONT></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT
size=3><FONT face="Times New Roman"><SPAN
style="mso-tab-count: 3">
</SPAN>player =
Manager.createPlayer(mediaLocator);//利用mediaLocator创建Player<O:P></O:P></FONT></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT
size=3><FONT face="Times New Roman"><SPAN
style="mso-tab-count: 3">
</SPAN>player.addControllerListener(this);<O:P></O:P></FONT></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT
size=3><FONT face="Times New Roman"><SPAN
style="mso-tab-count: 3">
</SPAN>player.realize();</FONT></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT
size=3><FONT face="Times New Roman"><SPAN
style="mso-tab-count: 2">
</SPAN>} catch (NoPlayerException e) {<O:P></O:P></FONT></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT size=3><SPAN
lang=EN-US><FONT face="Times New Roman"><SPAN
style="mso-tab-count: 3">
</SPAN>// TODO </FONT></SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">自动生成</SPAN><SPAN
lang=EN-US><FONT face="Times New Roman"> catch </FONT></SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">块</SPAN><SPAN
lang=EN-US><O:P></O:P></SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT
size=3><FONT face="Times New Roman"><SPAN
style="mso-tab-count: 3">
</SPAN>e.printStackTrace();<O:P></O:P></FONT></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT
size=3><FONT face="Times New Roman"><SPAN
style="mso-tab-count: 2">
</SPAN>} catch (IOException e) {<O:P></O:P></FONT></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT size=3><SPAN
lang=EN-US><FONT face="Times New Roman"><SPAN
style="mso-tab-count: 3">
</SPAN>// TODO </FONT></SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">自动生成</SPAN><SPAN
lang=EN-US><FONT face="Times New Roman"> catch </FONT></SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">块</SPAN><SPAN
lang=EN-US><O:P></O:P></SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT
size=3><FONT face="Times New Roman"><SPAN
style="mso-tab-count: 3">
</SPAN>e.printStackTrace();<O:P></O:P></FONT></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT
size=3><FONT face="Times New Roman"><SPAN
style="mso-tab-count: 2">
</SPAN>}</FONT></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><O:P><FONT
face="Times New Roman" size=3></FONT></O:P></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT
size=3><FONT face="Times New Roman"><SPAN
style="mso-tab-count: 1"> </SPAN>public void
createComponent() {<O:P></O:P></FONT></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><FONT size=3><SPAN
lang=EN-US><FONT face="Times New Roman"><SPAN
style="mso-tab-count: 2">
</SPAN>setTitle("</FONT></SPAN><SPAN
style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">视频信号</SPAN><SPAN
lang=EN-US><FONT face="Times New Roman">");<O:P></O:P></FONT></SPAN></FONT></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT
size=3><FONT face="Times New Roman"><SPAN
style="mso-tab-count: 2">
</SPAN>addWindowListener(new WinClose());<O:P></O:P></FONT></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT
size=3><FONT face="Times New Roman"><SPAN
style="mso-tab-count: 2">
</SPAN>setBounds(100,100,200,200);<O:P></O:P></FONT></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT
size=3><FONT face="Times New Roman"><SPAN
style="mso-tab-count: 2">
</SPAN>panel = new Panel();<O:P></O:P></FONT></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT
size=3><FONT face="Times New Roman"><SPAN
style="mso-tab-count: 2">
</SPAN><O:P></O:P></FONT></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT
size=3><FONT face="Times New Roman"><SPAN
style="mso-tab-count: 2">
</SPAN>if((com = player.getVisualComponent()) != null)
{<O:P></O:P></FONT></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT
size=3><FONT face="Times New Roman"><SPAN
style="mso-tab-count: 3">
</SPAN>panel.add(com);<O:P></O:P></FONT></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT
size=3><FONT face="Times New Roman"><SPAN
style="mso-tab-count: 2">
</SPAN>}<O:P></O:P></FONT></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT
size=3><FONT face="Times New Roman"><SPAN
style="mso-tab-count: 2">
</SPAN>add(panel);<O:P></O:P></FONT></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT
size=3><FONT face="Times New Roman"><SPAN
style="mso-tab-count: 2">
</SPAN>setVisible(true);</FONT></FONT></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><FONT
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -