高分,自己用C#写一个视频播放器,需要具备哪些知识?
刚入职一家多媒体公司,以后可能要自己写一个播放器用,目前尚处于没有头绪的阶段,求教各位高手,自己写一个播放器,需要具备哪些方面的知识?说明一下,播放器用来播放展示用的视频,不是要写出像暴风影音,qq影音那么牛的。
在以上问题的基础上,
假设我现有1台电脑主机,主机上的显卡有两个VGA(或DVI)接口,接了两台800*600的显示器,
要播放的视频的分辨率是1600*600,播放器在播放同一个文件的情况想,有办法控制让两台显示器分别显示左边的800像素和右边的800像素吗?
高分酬谢各位前辈了! 播放器 分屏 --------------------编程问答-------------------- 需要自己写解码器吗?如果需要的话那难度就不是我的能力能达到的了 --------------------编程问答-------------------- 看你播放啥东西了.如果windows media player可以识别的 拖一个控件就可以播放了.
如果是其他的视频 就不好使了 --------------------编程问答-------------------- 多媒体公司?不能只拖拖控件就交差吧
呵呵 --------------------编程问答-------------------- 说的是啊,所以前来求助学习呀 --------------------编程问答-------------------- 视频都是普通的视频,并无特殊。关键在于播放器的功能需自己定制,不是用一个KMP或终极解码全屏播放就行的。 --------------------编程问答-------------------- 你只需要会插件就可以做了,呵呵。 --------------------编程问答-------------------- 听你的意思,好像把一个屏幕当两个屏幕来用??你想控制屏幕?? --------------------编程问答-------------------- 额 您说反了,是把两个屏幕当一个屏幕用 --------------------编程问答-------------------- 自己顶一顶啊 --------------------编程问答-------------------- 你只要识字,无论知识高低,都可以做播放器。但是层次肯定不同。如果你非要强调做一个播放器,尽可能少地学习知识,你完全可以花钱雇人帮你按照需求开发一个播放器,但是不要做成可执行文件,而是封装成控件,唯一需要一个属性就是版权信息。这样你只要拖放到主窗体上,设置好你的尊姓大名就搞定了。
这就好比编写多少行代码能成为专家,你抠这个字眼没有任何意义一样。 --------------------编程问答-------------------- 在主机显卡的两个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); --------------------编程问答-------------------- 顶上去啊~~~~ --------------------编程问答--------------------
完全不知道你要做什么,怎么顶? --------------------编程问答--------------------
假设我现有1台电脑主机,主机上的显卡有两个VGA(或DVI)接口,接了两台800*600的显示器,
要播放的视频的分辨率是1600*600,播放器在播放同一个文件的情况想,有办法控制让两台显示器分别显示左边的800像素和右边的800像素吗?
想做到类似这个效果 --------------------编程问答--------------------
顶上去啊~~~~
完全不知道你要做什么,怎么顶?
假设我现有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#