网站首页 > 资源文章 正文
实例说明
随着网络的普及,很多网民会选择在线观看影片或者其他的视频节目。由于这些视频文件本身体积很大,而且还不利于网络传播。所以现在各大网络视频网站都选择将视频文件转换成FLV格式,然后放到网站上供网民们点击观看。这样不仅大大减小了视频文件的体积,而且还有利于网络传播,使视频播放更加流畅。很多网民为了观看方便,有时会将FLV视频文件下载到自己的计算机里,这样就需要在本地计算机中提供FLV文件播放器,本实例通过C#与Flash相结合开发出FLV文件播放器,实例运行结果如图:
开发步骤
(1)新建一个Windows应用程序,将其命名为Playflv,默认窗体为Form1。
(2)Form1窗体主要用到的控件及说明如表所示。
Form1窗体主要用到的控件及说明:
控件名称 | 属性设置 | 说 明 |
listView1 | View属性设为Details | 显示播放列表 |
contextMenuStrip1 | 无 | 提供播放器的右键菜单 |
panel1 | 无 | 添加flash播放器 |
panel2 | 无 | 控制显示和隐藏播放列表 |
openFileDialog1 | 无 | 打开FLV文件 |
(3)主要程序代码。
Form1窗体的后台代码中,首先定义程序中要使用的全局变量,代码如下:
string xmlPath = ""; //记录XML文件路径
string [] flv=new string[3]; //记录FLV文件的相关信息
FileInfo fi; // FileInfo对象
string strg;
AxShockwaveFlashObjects.AxShockwaveFlash ax; // AxShockwaveFlash对象用于播放flash
自定义一个ChangeFlv方法,用于修改XML文件中的节点,该节点记录要播放的FLV文件的路径,代码如下:
private void ChangeFlv(string path)
{
//获取XML文件的路径
xmlPath = Application.StartupPath.ToString();
xmlPath = xmlPath.Substring(0, xmlPath.LastIndexOf("\\"));
xmlPath = xmlPath.Substring(0, xmlPath.LastIndexOf("\\"));
xmlPath += @"\FLVPlayer";
xmlPath += @"\list.xml";
XmlDocument doc = new XmlDocument(); //创建XmlDocument实例
doc.Load(xmlPath); //加载XML文件
XmlNode nodePath = doc.SelectSingleNode("flvLists/item"); //打开节点
XmlElement xe = (XmlElement)nodePath;
xe.SetAttribute("title", path); //设置元素的属性
doc.Save(xmlPath); //保存
}
创建一个playFLV方法用于播放FLV文件,在此方法中,首先在C盘创建一个flvVidio文件夹,然后将要播放的FLV文件复制到该文件夹中,由于播放FLV的组件不支持中文路径,所以需要对FLV文件重新命名,最后将更改后的路径赋值给AxShockwaveFlash对象的Movie属性,开始播放FLV文件,代码如下:
private void playFLV(string path) //播放FLV文件的方法
{
FileInfo fi2 = new FileInfo(path); //实例化FileInfo
if (fi2.Exists) //如果文件存在
{
Directory.CreateDirectory("c:\\flvVidio"); //新建文件夹
//随机生成文件名
string newPath="c:\\flvVidio\\"+DateTime.Now.Year+DateTime.Now.Second+".flv";
File.Copy(path, newPath); //将原FLV文件复制到新建的文件夹中
ChangeFlv(newPath); //修改XML文件中的播放地址
this.Text = listView1.SelectedItems[0].SubItems[0].Text; //显示正在播放的文件名称
ax.Dispose(); //释放
AddFlash(); //重新添加播放器
ax.Movie = strg; //设置Movie属性
}
}
在播放列表上单击鼠标右键,在右键菜单中选择“打开文件”命令,弹出选择FLV文件的窗口。选择FLV文件之后,会根据选择的路径获取该文件的名称、路径和大小等信息,然后将这些信息添加到ListView控件中,代码如下:
private void 打开文件ToolStripMenuItem_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK) //选择文件
{
listView1.Items.Clear(); //清空ListView控件
string[] files = openFileDialog1.FileNames; //声明数组存储选择的文件
for (int i = 0; i < files.Length; i++) //遍历数组
{
string flvPath = files[i]; //获取路径
//获取文件名称
string flvName = flvPath.Substring(flvPath.LastIndexOf("\\") + 1, flvPath.Length - flvPath.LastIndexOf("\\") - 1);
fi = new FileInfo(flvPath); //实例化FileInfo
flv[0] = flvName; //文件名称
flv[1] = flvPath; //文件路径
flv[2] = Convert.ToString(fi.Length / 1024) + "KB"; //文件大小
ListViewItem lvi = new ListViewItem(flv); //创建ListViewItem实例
listView1.Items.Add(lvi); //添加到ListView控件中
}
}
}
将FLV文件添加到列表之后,双击列表中某一项即可播放该文件。实现的思路是双击后获取选择项的路径,然后将这个路径作为参数传递给playFLV方法播放该文件,代码如下:
private void listView1_MouseDoubleClick(object sender, MouseEventArgs e)
{
try
{
if (listView1.SelectedItems.Count > 0) //判断是否添加了要播放的文件
{
string path = listView1.SelectedItems[0].SubItems[1].Text; //获取FLV文件的路径
playFLV(path); //调用playFLV方法播放FLV文件
}
}
catch { }
}
说明:在C#中没有提供播放FLV文件的控件,所以只能借助Macromedia Flash 8的FLVPlayback 组件播放FLV文件。C#只对XML文件进行读写,修改XML文件中的FLV文件路径,当通过FLVPlayback 组件制作的FLASH加载时首先读取XML文件中的FLV路径。
猜你喜欢
- 2024-10-04 Win7系统提示无法注册Flash解决教程
- 2024-10-04 铠侠第八代BiCS FLASH,高密度存储的新起点
- 2024-10-04 Karsa回归Flash 8ball1&Recation完成使命
- 2024-10-04 驰为VX8 3G Win8刷安卓系统固件教程发布
- 2024-10-04 (STM32F103)神操作——如何快速读写内部flash?
- 2024-10-04 win8内置的flash坏掉了修复(win10内置flash用不了)
- 2024-10-04 flashtool强刷教程(用flashtool强制刷机教程)
- 2024-10-04 STM32系列—Flash操作更新(stm32 flash操作)
- 2024-10-04 Win8系统电脑浏览器不能加载Flash插件的解决方法
- 2024-10-04 PPT实用工具介绍上篇:1-5(ppt的制作工具)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- 电脑显示器花屏 (79)
- 403 forbidden (65)
- linux怎么查看系统版本 (54)
- 补码运算 (63)
- 缓存服务器 (61)
- 定时重启 (59)
- plsql developer (73)
- 对话框打开时命令无法执行 (61)
- excel数据透视表 (72)
- oracle认证 (56)
- 网页不能复制 (84)
- photoshop外挂滤镜 (58)
- 网页无法复制粘贴 (55)
- vmware workstation 7 1 3 (78)
- jdk 64位下载 (65)
- phpstudy 2013 (66)
- 卡通形象生成 (55)
- psd模板免费下载 (67)
- shift (58)
- localhost打不开 (58)
- 检测代理服务器设置 (55)
- frequency (66)
- indesign教程 (55)
- 运行命令大全 (61)
- ping exe (64)
本文暂时没有评论,来添加一个吧(●'◡'●)