当前位置:编程学习 > C#/ASP.NET >>

高分,自己用C#写一个视频播放器,需要具备哪些知识?

刚入职一家多媒体公司,以后可能要自己写一个播放器用,目前尚处于没有头绪的阶段,求教各位高手,自己写一个播放器,需要具备哪些方面的知识?

说明一下,播放器用来播放展示用的视频,不是要写出像暴风影音,qq影音那么牛的。

在以上问题的基础上,
假设我现有1台电脑主机,主机上的显卡有两个VGA(或DVI)接口,接了两台800*600的显示器,
要播放的视频的分辨率是1600*600,播放器在播放同一个文件的情况想,有办法控制让两台显示器分别显示左边的800像素和右边的800像素吗?

高分酬谢各位前辈了! 播放器 分屏 --------------------编程问答-------------------- 需要自己写解码器吗?如果需要的话那难度就不是我的能力能达到的了 --------------------编程问答-------------------- 看你播放啥东西了.如果windows media player可以识别的 拖一个控件就可以播放了.

如果是其他的视频 就不好使了 --------------------编程问答-------------------- 多媒体公司?不能只拖拖控件就交差吧

呵呵 --------------------编程问答--------------------
引用 3 楼 Imaor 的回复:
多媒体公司?不能只拖拖控件就交差吧

呵呵
说的是啊,所以前来求助学习呀 --------------------编程问答--------------------
引用 2 楼 diaodiaop 的回复:
看你播放啥东西了.如果windows media player可以识别的 拖一个控件就可以播放了.

如果是其他的视频 就不好使了
视频都是普通的视频,并无特殊。关键在于播放器的功能需自己定制,不是用一个KMP或终极解码全屏播放就行的。 --------------------编程问答-------------------- 你只需要会插件就可以做了,呵呵。 --------------------编程问答-------------------- 听你的意思,好像把一个屏幕当两个屏幕来用??你想控制屏幕?? --------------------编程问答--------------------
引用 7 楼 wmingcsharp 的回复:
听你的意思,好像把一个屏幕当两个屏幕来用??你想控制屏幕??
额 您说反了,是把两个屏幕当一个屏幕用 --------------------编程问答-------------------- 自己顶一顶啊 --------------------编程问答-------------------- 你只要识字,无论知识高低,都可以做播放器。但是层次肯定不同。如果你非要强调做一个播放器,尽可能少地学习知识,你完全可以花钱雇人帮你按照需求开发一个播放器,但是不要做成可执行文件,而是封装成控件,唯一需要一个属性就是版权信息。这样你只要拖放到主窗体上,设置好你的尊姓大名就搞定了。

这就好比编写多少行代码能成为专家,你抠这个字眼没有任何意义一样。 --------------------编程问答-------------------- 在主机显卡的两个VGA同时输出一个画面,你只要对显卡进行输出设置就可以了。方法是:鼠标右击显示屏在弹出的的菜单中左击显卡,在显卡设置中将两个屏幕设成水平一个屏幕就可以了,前提是你必须将两个屏幕先链接上。至于播放器,你只要会用播放控件就可以写一个简单的播放器了。 --------------------编程问答-------------------- 涉及到视频流的编解码,C#做不出来的,非C++不可了,看看DXVA相关的东西,要不然你就用第三方解码器,mplayer之类的 --------------------编程问答-------------------- 完全自己搞,不用其他的第三方现成的控件(比如:WMP),那你可以参考以下几个:
1. .NET 下声音图像处理相关的 API 函数。
2. DirectSound 开发库。
3. Emgu CV 开发库。
本人略知一二,可能还有其它更好的声音图像处理类库,供参考。 --------------------编程问答--------------------       // 创建一个libvlc实例,它是引用计数的
 2         [DllImport("libvlc", CallingConvention = CallingConvention.StdCall, ExactSpelling = true)]
 3         [SuppressUnmanagedCodeSecurity]
 4         private static extern IntPtr libvlc_new(int argc, IntPtr argv);
 5 
 6         // 释放libvlc实例
 7         [DllImport("libvlc", CallingConvention = CallingConvention.StdCall, ExactSpelling = true)]
 8         [SuppressUnmanagedCodeSecurity]
 9         public static extern void libvlc_release(IntPtr libvlc_instance);
10 
11         [DllImport("libvlc", CallingConvention = CallingConvention.StdCall, ExactSpelling = true)]
12         [SuppressUnmanagedCodeSecurity]
13         public static extern String libvlc_get_version();
14 
15         // 从视频来源(例如Url)构建一个libvlc_meida
16         [DllImport("libvlc", CallingConvention = CallingConvention.StdCall, ExactSpelling = true)]
17         [SuppressUnmanagedCodeSecurity]
18         private static extern IntPtr libvlc_media_new_location(IntPtr libvlc_instance, IntPtr path); --------------------编程问答-------------------- 顶上去啊~~~~ --------------------编程问答--------------------
引用 15 楼 xjw163 的回复:
顶上去啊~~~~

完全不知道你要做什么,怎么顶? --------------------编程问答--------------------
引用 16 楼 yuwenge 的回复:
Quote: 引用 15 楼 xjw163 的回复:

顶上去啊~~~~

完全不知道你要做什么,怎么顶?


假设我现有1台电脑主机,主机上的显卡有两个VGA(或DVI)接口,接了两台800*600的显示器,
要播放的视频的分辨率是1600*600,播放器在播放同一个文件的情况想,有办法控制让两台显示器分别显示左边的800像素和右边的800像素吗?

想做到类似这个效果 --------------------编程问答--------------------
引用 17 楼 xjw163 的回复:
Quote: 引用 16 楼 yuwenge 的回复:

Quote: 引用 15 楼 xjw163 的回复:

顶上去啊~~~~

完全不知道你要做什么,怎么顶?


假设我现有1台电脑主机,主机上的显卡有两个VGA(或DVI)接口,接了两台800*600的显示器,
要播放的视频的分辨率是1600*600,播放器在播放同一个文件的情况想,有办法控制让两台显示器分别显示左边的800像素和右边的800像素吗?

想做到类似这个效果

这得你的显卡硬件以及驱动支持。和播放器半毛钱关系都没有。 --------------------编程问答-------------------- 看上去lz要播放个side by side的视频?不做3d合成,而是彻底分开显示?

无论如何,DirectShow是要去找的方向,要是用C#有个 DirectShow.NET http://directshownet.sourceforge.net/

他包装了Diectshow的api,专门给.net用的

side by side的解码器应该能找到的,但刚才去看了下没发现,我要是找到了再给你贴过来
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,