搜索
bottom↓
回复: 12

关于 在vc++下windows播放器访问绝对扇区的问题!【恢复】

[复制链接]

出0入0汤圆

发表于 2009-1-19 10:21:56 | 显示全部楼层 |阅读模式
     最近有个项目说的是,U盘上有段影音文件,这段文件在U盘里自始至终是不可以显示的(同时到达防拷贝、修改、删除目的),现在要做个播放器,并播放这段影音文件。大家不知道有什么好办法吗,指点一下!

     我自己想的是,这段文件肯定是放在U盘的固定位置,我们做个播放器,让播放器访问绝对扇区把这些数据读出来并播放。自己也想试下,但对太底层的不了解,只能通过路径文件名的方式让他播放,但这样的话文件就会显示出来,达不到要求!

     大家出出注意吧!

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

 楼主| 发表于 2009-1-19 18:08:36 | 显示全部楼层
噢,你也不是很清楚呀!



有知道的吗?指导一下吧!

出0入0汤圆

发表于 2009-1-19 16:47:11 | 显示全部楼层
XAudioplayer 好像就可以流播放的,不过只能是音频的。

还有,我一般用delphi写桌面程序,vc的我也不清楚,呵呵呵。



本贴被 xielihong 编辑过,最后修改时间:2009-01-19,17:06:22.

出0入0汤圆

 楼主| 发表于 2009-1-19 16:36:43 | 显示全部楼层
    都等睡着了,知道的赶快指点一下呀!



    为了到达如题要求,想通过流式播放的方法播放一段影音文件。我现在在VC++下用WINDOWS播放控件做,不明白具体怎样操作,有例程的给一份参考一下,或者指点一下!



    邮箱,wenqing101310@163.com  

出0入0汤圆

发表于 2009-1-19 15:19:55 | 显示全部楼层
播放什么格式的,

还有,你如何获取U盘的设备名的

出0入0汤圆

 楼主| 发表于 2009-1-19 14:26:36 | 显示全部楼层
     其实,只要不格式化U盘,数据就不会被覆盖。我把FAT表有数据的各个簇,写成被使用就行了。这个倒不怕被覆盖,就怕格式化。



     还有,我想问的是VC++ 下做的播放器怎样播放流式文件。这才是我想问的重点耶!各位有没有VC++源码供我参考一下呀!

  

     这里先谢过了。

出0入0汤圆

发表于 2009-1-19 14:10:59 | 显示全部楼层
应该不难,爱国者的U盘似乎具备这个功能

出0入0汤圆

发表于 2009-1-19 13:52:41 | 显示全部楼层
我不是怕浪费,我是怕你的文件被用户文件给覆盖了。

分区的,我试试

出0入0汤圆

 楼主| 发表于 2009-1-19 13:03:46 | 显示全部楼层
    前面我明白你的意思,把U盘分成两部分,一部分含文件格式,一部分不含文件格式,避免浪费。可是我没这样分过,具体不知道怎怎么做。具体怎么做可以告诉我吗?嘿嘿

    采用流式播放,是个好注意。我不知道windows播放控件是否支持流式播放,这个待会我查下看。在这之前,我是先建立一个含头的临时文件,然后把这个文件在FAT表中的结束位置指向这个文件的开始,希望是边播放边更新临时文件,以为这样就可以循环播放了。谁知道,不行。呵呵

    如果有什么还可以指导我的地方,还望可以多多指导,让我少走点弯路。:-)

出0入0汤圆

发表于 2009-1-19 12:06:23 | 显示全部楼层
如果用户看到U盘99%可用,太浪费了!然后,呵呵,可能就不能在播放了。

我是觉得,就直接读后面的扇区,这扇区是没有文件系统的,就当flash一样来读写就行了,注意在写的时候有个标志保存文件的大小的。

开发的第一步为了减少开发的难度,可以先将绝对扇区中的数据生成一个临时文件,再播放这个临时文件。

因为不少播放库都有流播放功能,第二步就直接播放内存中的数据就行了,当然,应该先从绝对扇区读到内存中。

出0入0汤圆

 楼主| 发表于 2009-1-19 11:38:32 | 显示全部楼层
  楼上,谢了!

  关于第一种方法,U盘里的影音文件最后会由我们来写,这个盘最后就是专用的(如果用户做其它操作的话,就不管了)。对U盘物理扇区的读写方法目前我已经了解,可以完成读写工作。我把影音文件复制到U盘里后,把目录项里改文件名第一个字符改为“E5”后,系统就会认为是删除掉了。关键是在播放器里,怎样让播放器通过访问物理扇区并把数据读取进去并播放。

  关于第二种方法,对文件隐藏,可以绝对隐藏掉吗?如果通过对文件夹的设置还能让文件重现的话,是达不到要求的。

出0入0汤圆

发表于 2009-1-19 11:15:42 | 显示全部楼层
1.假如U盘是你们发行的,可以在将U盘分成两个区,第一个是FAT分区,第二个直接读写

比如2G的U盘,可以分成 1.5G + 0.5G 。

注意你只能操作0.5G的那个分区,具体读写见下面:

http://topic.csdn.net/t/20050523/09/4027631.html

http://www.chinaitpower.com/2006Aug/2006-12-15/222445.html

http://blog.csdn.net/EddieLiugd/archive/2004/12/08/209856.aspx



2.通用U盘的,建议

隐藏+ 压缩 + 加密

压缩可用 zlib

加密可用 aes

本贴被 xielihong 编辑过,最后修改时间:2009-01-19,11:24:32.

出0入0汤圆

 楼主| 发表于 2009-1-19 15:44:17 | 显示全部楼层
    播放什么格式都行,关键就是体现一下流式播放。前面你提到流式播放可以,但我在网上找了一下,似乎没人搞似的,想搞点源码学习一下都找不到。



    至于你说的怎样获取U盘的设备名,也很简单。看下面:

        /**********************************自动获取当前盘符************************************/

        TCHAR   *path   =   new   char[MAX_PATH+1];          

        GetModuleFileName(::GetModuleHandle(NULL),path,MAX_PATH);   

        CString   INIFilePath   =   path;   //   当前的路径名+你的程序名  

        int   index   =   INIFilePath.Find('\\'); //find是从左往右顺序查找第一个“\”,找到后返回位置。 

        //ReverseFind('\\')则为反向查找

        INIFilePath = INIFilePath.Mid(0,index);//剔除程序名,把某个位置上的字符清为0

        /**********************************自动获取当前盘符************************************/



    自己做的播放器是放在这个U盘里的。



    我说楼上,关于流式播放可以给提供点资料吗?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-6-2 02:00

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表