虚拟主机行业最新资讯 虚拟主机评测对比 互联网最新动态 技术学院 站长资讯 在线教程 网站运营
搜索优化 服务器 网络编程 图形图象 站长之家 网页制作 操作系统
冲浪宝典 软件教学 视频通信 办公软件 邮件系统 网络安全 认证考试
您当前位置:站长资讯>-> 站长之家-> 站长心得
用vb6的双通道技术获得影碟片断_visualbasic教程
作者:网友供稿 点击:0
  西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!虚拟主机可在线rar解压,自动数据恢复设置虚拟目录等.虚拟主机免费赠送访问统计,企业邮局.Cn域名注册10元/年,空间150元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金!
文章页数:[1] 
现在计算机多媒体技术的发展,使影碟无需借助解压卡就可以在电脑中播放,而且由于vcd2.0标准的普及,影碟已经完成了向数字文件化的过渡,完全可以轻松的将任何vcd拷贝到自己的硬盘上欣赏,而无须辛苦娇嫩的光驱.这也为我们截取任何影碟的片断提供了可能.但是目前普遍采用的压缩成AVI文件的办法不仅体积庞大、画面停滞而且速度非常慢。笔者在总结编写文件分割软件的经验基础上,辟出了一条蹊径,即采用双通道技术直接截取影碟文件片断,从根本上克服了上述弊端。
  (一)编程原理;
  一般来说VCD的实际影音文件放在光盘根目录下“MPEGAV”子目录下,文件名为music001.dat或者依次排序,通过对该文件的截取操作,使用户可以保存任何精彩的影碟片断,据作者测算,每十兆字节大约可以播放一分钟,这样,用户可以使用该软件截取任意时间段内的vcd,不过要使用“超级解霸”5.02以上版本播放。
  由于影音文件体积非常大,普通vcd2.0格式60分钟的影音文件长度在600兆以上,因此采用单通道定义二进制数组的办法不仅可靠性差,而且截取较长片断时势必难以实现.笔者采用了双通道技术,即通过定义较小的固定二进制数组,一个通道用来读取,另一个通道用来写入的方法来实现.这其中涉及了复杂的二进制定位技术。
  (二)编程实例;
  (第一步)启动vb6中文版建立一个标准exe工程,将窗体命名为“form1",单击“工程"菜单项目,选择“部件",在部件对话框的“控件"栏目中选择“MICROSOFTWINDOWSCOMMONCONTROLS6.0",确认在它前面的复选框中有一个黑色的对号,单击“确认",添加对该控件的引用.添加6个标签框,4个文本框(由上直下依次排列),3个按钮,一个进度条命名为ba1,一个公用对话框控件命名为cog1,拖动控件到适当位置,界面设计完成后大致如图1所示。其中,“影音文件名称:"标签对应text1,“影音文件长度:"标签对应text2,“截取起始位置:”标签对应text3,“截取长度:”标签对应text4,“截取后文件保存路径:”标签对应text5.设置Label6的BorderStyle=1,“浏览(*.dat)”按钮对应Command1,“保存为(*.dat)"按钮对应Command2,“开始截取"按钮对应Command3。
  双击窗体添加以下代码:
  PrivateSubCommand1_Click()注释:浏览选择文件
  Cog1.FileName=“"注释:清空过期文件名称
  Cog1.Filter=“vcd影碟文件(*.dat)|*.dat"注释:只保留影碟文件
  Cog1.ShowOpen注释:执行打开操作
  IfCog1.FileName<>""Then注释:如果放弃就忽略操作
  Text1.Text=Cog1.FileName注释:得到被截取文件名
  Label6.Caption=CInt(FileLen(Text1.Text)/2^20)注释:将文件长度转化为兆字节
  EndIf
  EndSub
  PrivateSubCommand2_Click()注释:保存为
  IfText1.Text=“"Then注释:如果未选定影音文件就拒绝操作,显示提示信息
  MsgBox“请首先选择一个被截取的文件!",vbOKOnly+vbExclamation
  ExitSub注释:中断操作
  EndIf
  Cog1.FileName=“"
  Cog1.ShowSave
  IfCog1.FileName<>“"Then
  Text4.Text=Cog1.FileName注释:保存路径名称
  EndIf
  EndSub
  PrivateSubCommand3_Click()注释:开始截取操作
  Dimerr_descrAsString
  IfText1.Text=“"OrText2.Text=“"OrText3.Text=“"OrText4.Text=“"Then注释:再次验证参数正确性
  MsgBox“请依次输入正确的信息,不要有所遗漏!",vbOKOnly+vbExclamation
  ExitSub注释:如果参数不完整忽略操作
  EndIf
  IfNotjieQU(Text1.Text,Text2.Text,Text3.Text,Text4.Text)Then注释:执行截取失败
  MsgBox“红箭提示信息:"&err_descr,vbOKOnly+vbExclamation注释:返回错误信息
  Else注释:执行截取成功
  MsgBox“红箭提示信息:文件截取操作已经圆满完成!",vbOKOnly+vbExclamation
  EndIf
  EndSub
  PrivateSubForm_Load()
  Me.Caption=App.Title
  Me.Left=(Screen.Width-Me.Width)/2
  Me.Top=(Screen.Height-Me.Height)/2注释:窗体居中
  EndSub
  PrivateSubForm_Unload(CancelAsInteger)
  End注释:结束工程
  EndSub
  (第二步)添加一个模块,输入以下代码:
  OptionExplicit注释:变量检查
  TypeFileSection
  Bytes()AsByte注释:定义关键数组
  EndType
  TypeSectionedFile
  Files()AsFileSection注释:定义辅助数组
  EndType
  PublicFunctionjieQU(YnameAsString,KshiAsLong,CHangAsLong,BnameAsString)AsBoolean注释:定义截取操作函数
  Form1.MousePointer=11注释:设置鼠标指针为漏斗型
  jieQU=True注释:函数成功标志
  DimmlpAsInteger,iAsInteger,zhiAsLong,fnumAsInteger,fnum1AsInteger
  DimshuZUAsLong,myfileAsSectionedFile
  shuZU=2000000注释:定义内存固定数组,长度为2兆
  Kshi=Kshi*2^20
  注释:转换文件指针单位为字节
  CHang=CHang*2^20
  注释:转换文件长度单位为字节
  IfCHang<shuZUThen
  注释:如果截取长度太小
  MsgBox“截取的文件长度不能小于2兆字节!",vbOKOnly+vbExclamation
  jieQU=False
  注释:返回操作失败标志,退出操作
  ExitFunction
  EndIf
  IfCInt(CHang/shuZU)>=CHang/shuZUThen
  mlp=CInt(CHang/shuZU)
  Else
  mlp=CInt(CHang/shuZU)+1
  EndIf
  注释:计算需要进行操作的次数
  fnum1=FreeFile注释:返回第一个空闲文件通道
  OpenBnameForBinaryAs#fnum1注释:以二进制方式打开影音文件
  ReDimmyfile.Files(1)注释:重新分配内存辅助数组
  WithForm1.Ba1
  .Visible=True
  .Value=0
  .Max=mlp
  .Min=0注释:展示进度条,提示操作进度
  Fori=1Tomlp注释:读取和写入数据
  zhi=Kshi+(-1+i)*shuZU注释:计算第一个二进制通道指针
  Ifi<mlpThen注释:如果不是最后一次操作
  ReDimmyfile.Files(1).Bytes(1ToshuZU)注释:定义主要内存数组2兆字节
  fnum=FreeFile注释:打开第二个空闲文件通道
  OpenYnameForBinaryAs#fnum注释:以二进制方式打开被截取的影音文件
  Seek#fnum,zhi注释:指针定位
  Get#fnum,,myfile.Files(1).Bytes注释:获取数据
  Close#fnum
  Else注释:如果是最后一次操作
  ReDimmyfile.Files(1).Bytes(1To(CHang-(mlp-1)*shuZU))注释:分配主要内存数组大小为最后遗留数据大小
  fnum=FreeFile
  OpenYnameForBinaryAs#fnum
  Seek#fnum,zhi注释:定位指针
  Get#fnum,,myfile.Files(1).Bytes
  Close#fnum
  EndIf
  Put#fnum1,,myfile.Files(1).Bytes注释:以二进制方式写入保存文件
  .Value=i注释:进度条开始运行
  Next注释:循环直到操作次数全部执行
  Close#fnum1注释:关闭文件通道
  .Visible=False注释:隐藏进度条
  EndWith
  Form1.MousePointer=0注释:还原鼠标指针指针
  EndFunction
  (第三步)运行调试工程,如图2。
  (第四步)编译。
  怎么样,现在一个精致的非常实用的先进的(不是夸口)vcd截取软件已经制作成功了(如图3),你现在可将那些什么avi压缩工具放进回收站了。心动不如行动,此程序在vb6.0中文企业版/windows98中调试通过,如果你用的是vb5.0那么也不用担心,你只用将第一步中对部件的引用改为“MICROSOFTWINDOWSCOMMONCONTROLS5.0"即可。->


文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
文章页数:[1] 
相关主题
Google

热门文章
·linux内核模块和驱动的编写_shell教程
·数字音乐销售推波助澜 华纳公司利润翻番_it动态
·vb中调用windowsapi的注意事项_visualbasic教程
·vb中的处理问题_visualbasic教程
·vb数据库数据的选项录入及选项增减与编辑_visualbasic教程
·用winsock控件实现文件的下载_visualbasic教程
·visualbasic对象使用二_visualbasic教程
·检测磁盘类型的信息_visualbasic教程
·在vb中显示动画鼠标图标_visualbasic教程
·用vb6的双通道技术获得影碟片断_visualbasic教程

最新文章
·photoshop为照片添加阴暗的雨夜效果_photoshop教程
·用fireworks为照片做精美边框_fireworks教程
·photoshop将废弃不用的照片变成艺术图片_photoshop教程
·photoshop教程:有点复杂的上色教程_photoshop教程
·photoshop巧绘制牛仔布底纹_photoshop教程
·fireworks图片魔术:黑白照片的彩色秘密_fireworks教程
·必不可少:win xp系统输入法技巧大放送_windows xp
·利用剪贴板共享数据_autocad教程
·使用设计中心进行查找_autocad教程
·acad.pgp文件的重新初始化_autocad教程

相关主题



友情链接
CNNIC 西部数码
万网 自助建站
虚拟主机 asp空间
域名注册 域名
域名申请 主页空间
论坛空间 网站空间
国际域名 虚拟空间
空间租用 DDOS防火墙
成都主机托管 四川主机托管
主机租用 服务器租用
网站目录 一班在线
虚拟主机 网址大全
软件下载
自助链接
虚拟主机资讯 特价虚拟主机


版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!

特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
  打印  刷新  关闭
 


联系我们  |  广告服务  |  免责声明  |  友情连接
Copyright ?2005 - 2006 All Rights Reserved
蜀ICP备05000045号