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

用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"即可。(河南 新天)
微软妥协Android?向该平台推开源Office 365 SDK 中国云计算大会PPT集萃(一):众多名家分享技术挑战与行业趋势 速度是现在的10000倍,出自物理学家之手的新型电脑 逗你玩?淘宝开放平台从4月1起开始全面收费 出现编程疲劳?千万别纠结 “编程竞赛界王子”教你更好的招聘程序员 SA:三星全球智能电视市场份额达26% Cocos2d-x 3.0分语言包发布 最新进展即将披露 友盟:社会化分享成为APP开发“标准配置” 从“简单”的封面设计剖析Netflix背后的数据哲学 与Linus Torvalds“并列”,虚拟化天才程序员法布里斯贝拉 让超级计算机和数据中心“飞”,Intel推800Gbps神器MXC 【OSTC讲师专访】Debian开发者李道兵:平静地理解开源 红帽推出开源业务流程管理套件:JBoss BPM Suite 6 科学研究证明:程序员快乐才能更好的工作 ChocolateChip-UI:能“逆转”的跨平台应用开发框架 分享12款最佳的Bootstrap设计工具 Apache Flex 4.12发布,支持iOS 7 智能手机应用挑战Web平台,看W3C如何反击? 电信级数据流量与监控系统部署案例分享 TCL联手Mozilla,HTML5智能电视真的要来了! 先睹为快:Unity亚洲开发者大会虚拟游览展示 OSTC&#183;2014 演讲日程出炉,Perl创始人来了! Unity将收购Applifier,并引入Everyplay和GameAds两大平台 《近匠》从Cubieboard到radxa:汤亮的第二次硬件创业 九头蛇与大象之争,Hydra或将取代Hadoop 喜讯:中国安全团队Keen成功在Pwn2Own 2014黑客大赛上攻破64位Mac上的Safari OCP黑客马拉松冠军:24小时头脑风暴背后 新时代应用程序设计及MongoDB的十个深入理解 借助“开源”东风 英特尔打造卓越“软实力” 深圳综合交通设计研究院张鹍鹏:智能交通设备领域已成红海 信息化是发展趋势 如下小程序,怎么也有问题???请教!? 请问.asf用什么播放 有什么办法能把文本文件中的一个空行给删除 求解(非常急)——在VC中开发电子相册需要哪些技术??? 谁听到过bios这样的报警声 谁知道哪里可以下载vtk4.0软件吗? 斑竹:为什么我提问的帖子没了,难道被删了吗?http://expert.csdn.net/Expert/topic/1323/1323618.xml?temp=.942135 请教?题目:用名为min的函数模板计算两个参数的最小值,用一对整形、字符和浮点数测试所编程序! C++builder6 下载 在线等待有关TurboC4.3的安装问题(还有D版VC的安装) 如何通过EJB删除数据库中的一行记录? 请帮忙 远程桌面共享的密码在注册表中的位置???急!!! 推荐软件:WinReplace批量文件内容替换工具 请推荐一个Java Decompiler 怎样用VB 检测EXCEL是否运行出 (菜鸟级100分) 高分求购 数据库中的OLE字段的读取问题。 研考快了,有几到题莫名其妙,求帮助! 求助大虾??????? 帮忙!! 如何获得当前程序的完整路径和文件名? 高分请教:resin2.1.6+sql2000下,jsp提取的字段显示均为乱码 Ftpcommand ? 如何获取最小化按钮消息?PreTranslateMessage(MSG* pMsg)如何处理? 请教高手——图片如何转换成视频? 河北的高程什么时间报名?什么时间考呀? 等待在线 JS文件打开乱码,如何看到其真实内容? 急,在线等待,90获取如何让Collection集合内对象的顺序改变!!! 在那里可以找到浪潮英信服务器 的声卡和显卡的驱动程序? 一个文学性网页,有砖头尽量扔过来。散分!!! 在jsp中连接oracle报错,请高手帮我分析原因(100分) 很丢脸的,兄弟们来帮我一下哦,? 我的困惑 谁知道哪里可以下载vtk4.0吗? 两个关于日期的问题,请大家帮帮手. #include windows.h 的问题 OS 很多近期帖子打不开,WHAT CAN I DO? 求regionMatches的使用实例! VS.net的安装错误问题 TOP托普万岁! 河北的高程什么时间报名?什么时间考2003年呀? 等待在线 java/swing/jtable的强烈问题 在Linux中如何配多个ip地址? 免费给你www.***.net www.***.com 快来每人有分得 大家不帮忙我就死定了!!!(来者有分,解决问题再送200!) java/swing/jtable的强烈问题 我为什么看不到我自己发的问题? 向高手求助!如何查找指定文件? 授权问题! 怎样解决向右展开的菜单(层)被select下拉框遮盖的问题!!!(以前的帖子打不开了) 中国好声音:王宇VS吴木蓝《吻别》中国好声音:王宏迪VS胡梦周《看我7《辣妈正传》孙俪精彩剧照 浙江卫视即奶茶妹妹最新校园生活照曝光 清纯依旧女子整容成范冰冰照片曝光 网友惊呼:《中国好声音》哈林“野兽团队”狂舞 “好声音”今晚改编很颠覆 西北风改编第8届首尔电视剧大赏红毯 吴奇隆帅气哈林队导师考核结果猜想:网友最希望金胡歌白冰曝恋情 白冰心情大好晒美照女星70万购假包 揭秘女星天价包包文章耍大牌丑事曝光 小爸爸:“我杀你吴彦祖反串跳芭蕾“肌肉版”小天鹅笑死好声音哈林组导师考核精彩学员抢先看蘑菇兄弟VS戴荃 大胆改编《妹妹你大《兰陵王》郑儿毛林林华丽写真 告别蛇好声音哈林组导师考核明晚收官 90后好声音梦想导师ELLA太抢戏 庾澄庆新《神雕》演员定妆照曝光 张馨予版李“好声音”在台受追捧 即将亮相台湾中好声音上演旧曲新编 哈林分组选曲改编75名港澳大学生 来渝实践交流深入贯彻中央民族工作会议精神 努力开国足战世预赛海报“不轻视任何对手”渝企首批一带一路 海外承接项目逾20她替女儿报名少年军校当生日礼2015 2016年党政机关会议定点93号汽油今起每升降9分钱我国首个创客小镇落户沙坪坝区渝北彩民中奖6800 反遭老婆一顿骂走向世界,先到川外,精英计划,梦想起南坪中学啦啦操队夺全国冠军重庆首个幼儿园文化节上演 千余幼儿画今年第1期7月11日发营《黎明的炮声》还原“二战”明晚去群艺馆看演出掘金科园路,高新区蝶变内外勾结?【解题】10日至16日去国博中心 请注意行车内环雷家桥立交10日起施工 车辆行经全国所有银行 开通银联卡ATM跨行转
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘