说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

用VB6的双通道技术获得影碟片断

HTML文档下载 WORD文档下载 PDF文档下载
用VB6的双通道技术获得影碟片断


   现在计算机多媒体技术的发展,使影碟无需借助解压卡就可以在电脑中播放,而且由于vcd2.0标准的普及,影碟已经完成了向数字文件化的过渡,完全可以轻松的将任何vcd拷贝到自己的硬盘上欣赏,而无须辛苦娇嫩的光驱.这也为我们截取任何影碟的片断提供了可能.但是目前普遍采用的压缩成AVI文件的办法不仅体积庞大、画面停滞而且速度非常慢。笔者在总结编写文件分割软件的经验基础上,辟出了一条蹊径,即采用双通道技术直接截取影碟文件片断,从根本上克服了上述弊端。
  (一)编程原理;
  一般来说VCD的实际影音文件放在光盘根目录下“MPEGAV”子目录下,文件名为music001.dat或者依次排序,通过对该文件的截取操作,使用户可以保存任何精彩的影碟片断,据作者测算,每十兆字节大约可以播放一分钟,这样,用户可以使用该软件截取任意时间段内的vcd,不过要使用“超级解霸”5.02以上版本播放。
  由于影音文件体积非常大,普通vcd2.0格式60分钟的影音文件长度在600兆以上,因此采用单通道定义二进制数组的办法不仅可靠性差,而且截取较长片断时势必难以实现.笔者采用了双通道技术,即通过定义较小的固定二进制数组,一个通道用来读取,另一个通道用来写入的方法来实现.这其中涉及了复杂的二进制定位技术。
  (二)编程实例;
  (第一步)启动vb6中文版建立一个标准exe工程,将窗体命名为“form1",单击“工程"菜单项目,选择“部件",在部件对话框的“控件"栏目中选择“MICROSOFT WINDOWS COMMON CONTROLS 6.0",确认在它前面的复选框中有一个黑色的对号,单击“确认",添加对该控件的引用.添加6个标签框,4个文本框(由上直下依次排列),3个按钮,一个进度条命名为ba1,一个公用对话框控件命名为cog1,拖动控件到适当位置,界面设计完成后大致如图1所示。其中, “影音文件名称:"标签对应text1,“影音文件长度:"标签对应text2,“截取起始位置:”标签对应text3,“截取长度:”标签对应text4,“截取后文件保存路径:”标签对应text5.设置Label6的BorderStyle = 1,“浏览(*.dat)”按钮对应Command1 ,“保存为(*.dat)"按钮对应Command2 ,“开始截取"按钮对应Command3 。
  双击窗体添加以下代码:
  Private Sub Command1_Click() 注释:浏览选择文件
  Cog1.FileName = “" 注释:清空过期文件名称
  Cog1.Filter =“vcd影碟文件(*.dat)|*.dat" 注释:只保留影碟文件
  Cog1.ShowOpen 注释:执行打开操作
  If Cog1.FileName <> "" Then 注释:如果放弃就忽略操作
  Text1.Text = Cog1.FileName 注释:得到被截取文件名
  Label6.Caption = CInt(FileLen(Text1.Text) / 2 ^ 20) 注释:将文件长度转化为兆字节
  End If
  End Sub
  Private Sub Command2_Click() 注释:保存为
  If Text1.Text = “" Then 注释:如果未选定影音文件就拒绝操作,显示提示信息
  MsgBox “请首先选择一个被截取的文件!", vbOKOnly + vbExclamation
  Exit Sub 注释:中断操作
  End If
  Cog1.FileName = “"
  Cog1.ShowSave
  If Cog1.FileName <> “" Then
  Text4.Text = Cog1.FileName 注释:保存路径名称
  End If
  End Sub
  Private Sub Command3_Click() 注释:开始截取操作
  Dim err_descr As String
  If Text1.Text = “" Or Text2.Text = “" Or Text3.Text = “" Or Text4.Text = “" Then 注释:再次验证参数正确性
  MsgBox “请依次输入正确的信息,不要有所遗漏!", vbOKOnly + vbExclamation
  Exit Sub 注释:如果参数不完整忽略操作
  End If
  If Not jieQU(Text1.Text, Text2.Text, Text3.Text, Text4.Text) Then 注释:执行截取失败
  MsgBox “红箭提示信息:" & err_descr, vbOKOnly + vbExclamation 注释:返回错误信息
  Else 注释:执行截取成功
  MsgBox“红箭提示信息:文件截取操作已经圆满完成!", vbOKOnly + vbExclamation
  End If
  End Sub
  Private Sub Form_Load()
  Me.Caption = App.Title
  Me.Left = (Screen.Width - Me.Width) / 2
  Me.Top = (Screen.Height - Me.Height) / 2 注释:窗体居中
  End Sub
  Private Sub Form_Unload(Cancel As Integer)
  End 注释:结束工程
  End Sub
  (第二步)添加一个模块,输入以下代码:
  Option Explicit 注释:变量检查
  Type FileSection
  Bytes() As Byte 注释:定义关键数组
  End Type
  Type SectionedFile
  Files() As FileSection 注释:定义辅助数组
  End Type
  Public Function jieQU(Yname As String, Kshi As Long, CHang As Long, Bname As String) As Boolean 注释:定义截取操作函数
  Form1.MousePointer = 11 注释:设置鼠标指针为漏斗型
  jieQU = True 注释:函数成功标志
  Dim mlp As Integer, i As Integer, zhi As Long, fnum As Integer, fnum1 As Integer
  Dim shuZU As Long, myfile As SectionedFile
  shuZU = 2000000 注释:定义内存固定数组,长度为2兆
  Kshi = Kshi * 2 ^ 20
  注释:转换文件指针单位为字节
  CHang = CHang * 2 ^ 20
   注释:转换文件长度单位为字节
  If CHang < shuZU Then
  注释:如果截取长度太小
  MsgBox “截取的文件长度不能小于2兆字节!", vbOKOnly + vbExclamation
  jieQU = False
  注释:返回操作失败标志,退出操作
  Exit Function
  End If
  If CInt(CHang / shuZU) >= CHang / shuZU Then
  mlp = CInt(CHang / shuZU)
  Else
  mlp = CInt(CHang / shuZU) + 1
  End If
  注释:计算需要进行操作的次数
  fnum1 = FreeFile注释:返回第一个空闲文件通道
  Open Bname For Binary As #fnum1 注释:以二进制方式打开影音文件
  ReDim myfile.Files(1) 注释:重新分配内存辅助数组
  With Form1.Ba1
  .Visible = True
  .Value = 0
  .Max = mlp
  .Min = 0 注释:展示进度条,提示操作进度
  For i = 1 To mlp 注释:读取和写入数据
  zhi = Kshi + (-1 + i) * shuZU 注释:计算第一个二进制通道指针
  If i < mlp Then 注释:如果不是最后一次操作
  ReDim myfile.Files(1).Bytes(1 To shuZU) 注释:定义主要内存数组2兆字节
  fnum = FreeFile 注释:打开第二个空闲文件通道
  Open Yname For Binary As #fnum 注释:以二进制方式打开被截取的影音文件
  Seek #fnum, zhi 注释:指针定位
  Get #fnum, , myfile.Files(1).Bytes 注释:获取数据
  Close #fnum
  Else 注释:如果是最后一次操作
  ReDim myfile.Files(1).Bytes(1 To (CHang - (mlp - 1) * shuZU)) 注释:分配主要内存数组大小为最后遗留数据大小
  fnum = FreeFile
  Open Yname For Binary As #fnum
  Seek #fnum, zhi 注释:定位指针
  Get #fnum, , myfile.Files(1).Bytes
  Close #fnum
  End If
  Put #fnum1, , myfile.Files(1).Bytes 注释:以二进制方式写入保存文件
  .Value = i 注释:进度条开始运行
  Next 注释:循环直到操作次数全部执行
  Close #fnum1 注释:关闭文件通道
  .Visible = False 注释:隐藏进度条
   End With
   Form1.MousePointer = 0 注释:还原鼠标指针指针
  End Function
  (第三步)运行调试工程,如图2。
  (第四步)编译。
  怎么样,现在一个精致的非常实用的先进的(不是夸口)vcd截取软件已经制作成功了(如图3),你现在可将那些什么avi压缩工具放进回收站了。心动不如行动,此程序在vb6.0中文企业版/windows98中调试通过,如果你用的是vb5.0那么也不用担心,你只用将第一步中对部件的引用改为“MICROSOFT WINDOWS COMMON CONTROLS 5.0"即可。(河南 新天)
PHP操作SQLite数据库 PHP利用DomDocument创建XML文件 ASP.NET如何加密/解密URL网址 如何使用C#读取csv文件 三步骤实现ASP.NET(C#)项目中添加谷歌(Google Map)地图 使用C# ASP.NET以FTP客户端方式下载文件 ASP.NET如何用C#代码检测手机浏览器 使用C#读取上传的Excel文件 新版本SQL Helper类 C#使用iTextsharp生成PDF 在.NET里用iTextSharp库生成PDF文档 用itextsharp将ASP.NET页面导出到PDF中 什么是JQuery-JQuery API jQuery入门指南-JQuery API jQuery的核心部分-JQuery API $(elements)-JQuery API $(expr, context)-JQuery API $(fn) -JQuery API $(html) -JQuery API $.extend(prop) -JQuery API $.noConflict() -JQuery API each(fn)-JQuery API eq(pos)-JQuery API get(num)-JQuery API get()-JQuery API gt(pos)-JQuery API index(subject)-JQuery API length-JQuery API lt(pos)-JQuery API size()-JQuery API CSS-JQuery API delphi中要想定义一个整个工程文件中可以访问的变量怎样做才好?(说者有分) 本人泡MM精华之作,大家快看!! 25分散尽! 如何使用paradox.net? 类的定义与实现细节是否要放在不同文件 各位:我想当斑竹,位兄弟是否同意?:) 关于shell和key事件 为什么我的问题总是无人回答?给高分100!VC和VB下好用的控件在delphi下不好用!是不是dll的问题? pascal 为什么没有介绍在pIIII下汇编的书? paradox数据库的操作问题 text字段如何转换成image字段?? 东日论坛新开张 关于异常的问题,请各位大哥帮帮忙!(50分) 我有很多数字,如何以固定的间隔和行宽在打印机完整地上输出? 学过C++,想学java,难吗?多久能上手? 如何设置系统的日期,时间? 我的网卡的驱动一直装不上? 在下请问,在游戏中实现人物的移动有哪几种方法? 关于地址栏的显示问题 老大们来看看! 今天高兴,散分,先进者自有大大的好处 对不起网管我没看清楚发错了地方请您帮忙转到java区里吧谢谢你了! my oracle8.1.7 on redhat7.2进不去,请高手指教 关于打印机不能够正常打印问题 关于XP的时间问题? 哪位知道在VC下通过敲击键盘模拟钢琴键发音——通过声卡在音箱中实时发出声音 本人泡MM精华之作,大家快看!! 互联网上控件的安全性问题 SDK的疑惑? gluLookAt()函数的用法 什么是类如何来理解应用它!!!看书看了不是很理解 第一次来csdn 高兴,散分,第一个进入者得! 怎样从ACCESS数据库中读出jpeg,gif,bmp...图片? web的验证如何与数据仓库验证一致?请高手看看 我用JBUILDER作的JPUPUPMEUN show(jpane,getx,gety) 的显示位置老在鼠标下一大截,在JPANE的左上角击鼠标右键出现多余显示 请问如何作封面? 国内有自由软件开发组织吗? 如何永久的挂载非linux分区? 高手请进! 在线急等!明天要交任务了! 关于异常的问题,请各位大哥帮帮忙!(50分) VFP报表问题 help!!! 关于listview控件内实现多个选项(图标)拖动的问题? 如何跟改X-WINDOW服务 如何用API实现向另一个程序的窗体里发送信息 关于listview控件内实现多个选项(图标)拖动的问题? help!! 一个关于临时表的储存过程的问题 java中都有那几大组件呀各有什么用处? 江湖救急!人事工资系统 中心原子价层电子数是什么意思RT 硝酸镁 氢氧化钡 氢氧化镁 氢氧化铜 氢氧化铁 氢氧化亚铁 什么颜色的? 甲酸甲脂与银氨溶液反应方程式 得到电子,化合价升高还是降低? 氢氧化铜和氢氧化铁沉淀分别是啥色 金属块焊接 怎样分离氯化铁溶液,氢氧化铁悬浊液,氢氧化铁胶体三者的混合物 氢氧化镁沉淀是什么颜色有没有这种沉淀吗,是白色的吗?如果不是,那么什么金属与氢氧根或者硝酸根结合后会是白色沉淀呢?这是考试的一道题,我填了氢氧化银,不知道可不可以,他是白色的吗 纸放的时间长了为什么会变黄? 有18克金属铝、完全反应后可制取多少克的氢气27.(5分)节假日里,人们常用色彩斑斓的氢气球点缀喜庆的气氛.填充气球的氢气通常用金属铝和浓氢氧化钠溶液反应制取.(1)某同学对金属铝和浓 金属焊接性能主要取决于金属的什么 白纸放时间长了为什么会变黄? 氯化铁溶液与氢氧化铁胶体分别是什么颜色? 怎样使一张A4纸变旧变黄根据实际需要,我要改一个文件的其中一页.可是新换上的这一页和其它页之间显得太不一样的,其它的是08年的,比较黄,旧,怎样把新换上的这一页也变旧呢? 氨气和二氧化碳反应生成尿素的化学方程式? 反物质爆炸过吗? 如何让新的白纸快速变成旧的发黄的纸?看起来象是很旧的纸就可以. 怎样让纸变黄,看起来很旧 什么是反物质炸弹? 如何在短时间内使纸张发黄变旧 盐酸和纯碱也可以叫做中和反应 反物质炸弹要多久研发出来暗物质是未来的能源吗? 怎样才能让新的纸张变旧变黄 怎么焊接间隙较大的金属 Na2S溶液与什么反应能生成S沉淀种类越全越好请具体列举,请写出可能的全部物质 什么是金属焊接?试卷问答题 但不要太多 四五行就行 .追分 能与盐酸放生中和反应的是A、稀盐酸 B、熟石灰 C、碳酸钙 D、硝酸银溶液 NA2S与什么反应生成S,请写出化学式. 怎么对金属进行焊接? 为什么向苯酚钠溶液中滴入氯化铁,先出现红褐色沉淀后沉淀消失 将5.4g金属铝放入250ml4.0mol/l naoh溶液中,可以收集到氢气体积折算成标准状况是多 现在金属焊接方法有哪几种? 详细解释一下! 6.4gCu与S完全反应,转移电子数是多少? 碳酸根离子和水分子反应生成什么是生成氢氧根离子么?怎么生成氢氧根离子呢 纸为什么会变黄 d为什么转移电子数为0.2Na 将5.4g金属铝放入250ml4.0mol/LNaOH溶液中,若测得反应后溶液的体积仍是250ml,则反应后溶液中NaOH的物质的量浓度是多少? 什么是反物质炸弹啊? 急)下列各反应中转移电子数为2NA的是下列各反应中转移电子数为2NA的是 ()A.22.4L氯气与足量的铜充分反应B.0.2mol 浓硫酸与足量铜反应C.46g金属钠与足量的水反应D.56g铁与足量稀硝酸溶液反应 在新制氯水中加入硝酸溶液,氯水颜色变浅? 什么焊机焊接后是这种效果 就是这四个小点 分布均匀 外观漂亮 由于没分了 所以不能给分了 请谅解 常温下,7.8gNa2O2与足量的水反应,转移的电子数为0.2NA“常温下,7.8gNa2O2与足量的水反应,转移电子数为0.2NA"这句话为何错? 给你一颗核弹和反物质炸弹,你会扔到哪里去? 直流焊机反接与正接及焊接效果到底有何区别?焊接时哪一极产生的热量高?我查了很多资料(网上怎么说的也有).首先工件接负极是反接?焊接时到底是正极产生的热量多还是负极产生的热量 7.8克过氧化钠与水完全反应转移电子数为0.2NA 将4.5克金属铝放入250mL4.0mol/L氢氧化钠溶液中,并将反应生成的氢气收集,问:能收集到氢气体积(标况)为多少?若测得反应后溶液的体积仍为250mL,则反应后溶液中NaOH的物质的量浓度为多少? 甲酸发生银镜反应的产物是二氧化碳还是碳酸铵不是甲醛进行反应,就是单独甲酸进行银镜试验。 铁与氯化铁溶液反应的离子方程式 氯水 氢氧化铁沉淀 碳酸钠溶液谁能在空气中长时间放置且稳定的? 怎样使白纸变黄?怎样使白纸看起来像放了很久,而且黄的很自然,又不破坏到白纸? 有反物质,是否有反能量与能量相抵消 向100mL1.0mol/L硫酸铝溶液中加入2.0mol/LNaOH溶液,得到沉淀中所含铝元素 向100ML1MOL/L硫酸铝溶液中加入2.0MOL/LNAOH溶液,得到沉淀中所含铝元素的质量与溶液中铝元素的质量相等,求所加NAOH溶液的体 如何使白纸变黄有年代感,不能破坏纸 在氯化铁和氯化铜的混合溶液中,加入过量的铁粉,若充分反应后溶液的质量没有变,则混合溶液中正2价铁和正...在氯化铁和氯化铜的混合溶液中,加入过量的铁粉,若充分反应后溶液的质量没有 为什么得到电子化合价降低 失去电子化合价升高?化合价与电子的关系又是什么 向溴化钠溶液中滴加新制氯水,可以观察到的现象是 有关反应的化学方程式为向碘化钠溶液中滴加溴水,可以观察到的现象是 有关反应的化学方程式为继续加入CCl4振荡,可以观察到的现象是 通 怎样让白纸迅速变黄 化合价和最外层电子数有什么关系?得失电子和化合价一样吗? “反物质弹”是不是又称“光子弹”?属于核弹又一类型对吗? 蚁酸和银氨的反应方程式!
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘