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

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

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

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

高分酬谢各位前辈了!
...全文
912 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
卧_槽 2013-11-26
  • 打赏
  • 举报
回复
引用 15 楼 xjw163 的回复:
顶上去啊~~~~
完全不知道你要做什么,怎么顶?
xjw163 2013-11-26
  • 打赏
  • 举报
回复
顶上去啊~~~~
yktd26 2013-11-26
  • 打赏
  • 举报
回复
看上去lz要播放个side by side的视频?不做3d合成,而是彻底分开显示? 无论如何,DirectShow是要去找的方向,要是用C#有个 DirectShow.NET http://directshownet.sourceforge.net/ 他包装了Diectshow的api,专门给.net用的 side by side的解码器应该能找到的,但刚才去看了下没发现,我要是找到了再给你贴过来
卧_槽 2013-11-26
  • 打赏
  • 举报
回复
引用 17 楼 xjw163 的回复:
[quote=引用 16 楼 yuwenge 的回复:] [quote=引用 15 楼 xjw163 的回复:] 顶上去啊~~~~
完全不知道你要做什么,怎么顶?[/quote] 假设我现有1台电脑主机,主机上的显卡有两个VGA(或DVI)接口,接了两台800*600的显示器, 要播放的视频的分辨率是1600*600,播放器在播放同一个文件的情况想,有办法控制让两台显示器分别显示左边的800像素和右边的800像素吗? 想做到类似这个效果[/quote] 这得你的显卡硬件以及驱动支持。和播放器半毛钱关系都没有。
xjw163 2013-11-26
  • 打赏
  • 举报
回复
引用 16 楼 yuwenge 的回复:
[quote=引用 15 楼 xjw163 的回复:] 顶上去啊~~~~
完全不知道你要做什么,怎么顶?[/quote] 假设我现有1台电脑主机,主机上的显卡有两个VGA(或DVI)接口,接了两台800*600的显示器, 要播放的视频的分辨率是1600*600,播放器在播放同一个文件的情况想,有办法控制让两台显示器分别显示左边的800像素和右边的800像素吗? 想做到类似这个效果
threenewbee 2013-11-19
  • 打赏
  • 举报
回复
你只要识字,无论知识高低,都可以做播放器。但是层次肯定不同。如果你非要强调做一个播放器,尽可能少地学习知识,你完全可以花钱雇人帮你按照需求开发一个播放器,但是不要做成可执行文件,而是封装成控件,唯一需要一个属性就是版权信息。这样你只要拖放到主窗体上,设置好你的尊姓大名就搞定了。 这就好比编写多少行代码能成为专家,你抠这个字眼没有任何意义一样。
xjw163 2013-11-19
  • 打赏
  • 举报
回复
自己顶一顶啊
youzelin 2013-11-19
  • 打赏
  • 举报
回复
完全自己搞,不用其他的第三方现成的控件(比如:WMP),那你可以参考以下几个: 1. .NET 下声音图像处理相关的 API 函数。 2. DirectSound 开发库。 3. Emgu CV 开发库。 本人略知一二,可能还有其它更好的声音图像处理类库,供参考。
小托尼 2013-11-19
  • 打赏
  • 举报
回复
涉及到视频流的编解码,C#做不出来的,非C++不可了,看看DXVA相关的东西,要不然你就用第三方解码器,mplayer之类的
kxyzjm62 2013-11-19
  • 打赏
  • 举报
回复
在主机显卡的两个VGA同时输出一个画面,你只要对显卡进行输出设置就可以了。方法是:鼠标右击显示屏在弹出的的菜单中左击显卡,在显卡设置中将两个屏幕设成水平一个屏幕就可以了,前提是你必须将两个屏幕先链接上。至于播放器,你只要会用播放控件就可以写一个简单的播放器了。
江湖评谈 2013-11-19
  • 打赏
  • 举报
回复
// 创建一个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);
xjw163 2013-11-18
  • 打赏
  • 举报
回复
引用 7 楼 wmingcsharp 的回复:
听你的意思,好像把一个屏幕当两个屏幕来用??你想控制屏幕??
额 您说反了,是把两个屏幕当一个屏幕用
mingcsharp 2013-11-18
  • 打赏
  • 举报
回复
听你的意思,好像把一个屏幕当两个屏幕来用??你想控制屏幕??
u011781558 2013-11-18
  • 打赏
  • 举报
回复
你只需要会插件就可以做了,呵呵。
xjw163 2013-11-18
  • 打赏
  • 举报
回复
引用 2 楼 diaodiaop 的回复:
看你播放啥东西了.如果windows media player可以识别的 拖一个控件就可以播放了. 如果是其他的视频 就不好使了
视频都是普通的视频,并无特殊。关键在于播放器的功能需自己定制,不是用一个KMP或终极解码全屏播放就行的。
xjw163 2013-11-18
  • 打赏
  • 举报
回复
引用 3 楼 Imaor 的回复:
多媒体公司?不能只拖拖控件就交差吧 呵呵
说的是啊,所以前来求助学习呀
IEEE_China 2013-11-18
  • 打赏
  • 举报
回复
多媒体公司?不能只拖拖控件就交差吧 呵呵
by_封爱 版主 2013-11-18
  • 打赏
  • 举报
回复
看你播放啥东西了.如果windows media player可以识别的 拖一个控件就可以播放了. 如果是其他的视频 就不好使了
xjw163 2013-11-18
  • 打赏
  • 举报
回复
需要自己写解码器吗?如果需要的话那难度就不是我的能力能达到的了

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧