直接理解为:C#修改网页的参数。
由于项目的需要,要实现在C#窗体的Treeview操作下能够控制窗体中webbrowser读取的HTML静态网页中的VLC视频播放器的播放列表。简单理解就是Treeview控制静态网页中的VLC的视频播放列表。通俗理解就是,后天能够控制前台页面的VLC的视频播放列表。
以下是案例,仅供参考:
第一步:建立如上图所示的Treeview:该图是一个Treeview的展开图,其中“叶子结点A”和“叶子结点B”是我们要实现控制视频播放列表的操作。
第二步:在窗体中放置一个webbrowser控件,并且读取本地静态网页, 注意:为了能够操作网页中的javascript,要在添加:
//导入HTML文件,使javascript可视化
[System.Runtime.InteropServices.ComVisibleAttribute(true)]
添加静态网页代码如下(为了打开窗体就能显示一个播放界面才添加的,否则没必要添加):
//网页对象
System.IO.FileInfo file =newSystem.IO.FileInfo("RealTimeVideo.html");
//WebBrowser控件显示的网页文件路径
this.webBrowser1.Url=newUri(file.FullName);
//将当前类设置为可由脚本访问
this.webBrowser1.ObjectForScripting=this;
以上这段代码要添加到Form_Load()方法中。
第三步:添加一个控制播放的方法,这里我用的方法名是SetRealTimeVideo()。
publicstaticvoidSetRealTimeVideo()
{
//说明:为了测试,可以将其设为全局变量,来传递视频播放流rtsp。
stringvideoSrc = "rtsp://218.204.223.237:554/live/1/67A7572844E51A64/f68g2mj7wjua3la7.sdp";
//将html写成字符串修改
Stream myStream =newFileStream("RealTimeVideo11.html",FileMode.Open);
Stream myStream1 =newFileStream("RealTimevideo12.html",FileMode.Open);
Encoding encode = System.Text.Encoding.GetEncoding("GB2312");
StreamReader myStreamReader =newStreamReader(myStream, encode);
StreamReader myStreamReader1 =newStreamReader(myStream1, encode);
stringstrhtml1 = myStreamReader.ReadToEnd();
stringstrhtml2 = myStreamReader1.ReadToEnd();
//写入RealTimevideo12.html中
strhtml2 = strhtml1;
//将RealTimevideo12.html网页中视频播放路径的value的值value="aaaa"替换掉
stringstroutput = strhtml2.Replace("aaaa", videoSrc);
//HtmlPage.Document.GetElementById("vlcSrc").SetAttribute("value","aaaa");
//myStream.Seek(0,SeekOrigin.Begin);
myStream1.Seek(0, SeekOrigin.Begin);
myStream1.SetLength(0);
//StreamWritersw = new StreamWriter(myStream, encode);
StreamWriter sw1 =newStreamWriter(myStream1, encode);
//sw.Write(stroutput);
sw1.Write(stroutput);
//sw.Flush();
sw1.Flush();
//sw.Close();
sw1.Close();
myStream.Close();
myStream1.Close();
System.IO.FileInfo file =newSystem.IO.FileInfo("RealTimeVideo12.html");
//WebBrowser控件显示的网页文件路径
myweb.Url = new Uri(file.FullName);
//将当前类设置为可由脚本访问
myweb.ObjectForScripting = myweb;
第二种修改方法:修改DOM元素属性也可以实现的
//System.Windows.Browser.HtmlDocumentdocument = HtmlPage.Document;
//System.Windows.Browser.HtmlElementdom = document.GetElementById("vlcSrc");
//dom.SetAttribute("value",video);
}
实现的思路:其实思路很简单,1)将RealTimeVideo11.html 作为原来的视频播放器,但不显示。读取这个html文件形成字符串strhtml1;
2)然后打开一个空白的静态网页RealTimeVideo12.html将,也要读取成字符串strhtml2;
3)将strhtml1的字符串赋值给strhtml2的字符串;strhtml2= strhtml1;
4)然后将strhtml2中的视频播放地址修改为当前Treeview选择的视频流,即通过下面代码实现:
string stroutput = strhtml2.Replace("aaaa", videoSrc);
5)最后加载RealTimeVideo12.html,显示视频播放。其实,真正显示的是RealTimeVideo12.html ,其内容来自于RealTimeVideo11.html。
第四步:将SetRealTimeVideo()添加到Treeview下的执行方法中,即可实现Treeview对视频播放列表的控制。
其中,RealTimeVideo.html和 RealTimeVideo1.html 视频文件下载路径:http://download.csdn.net/detail/qq_30507287/9586828