全部博文(788)
分类:
2009-03-13 10:34:44
100分奉送:)
我看这个问题非常难,你出1000元RMB看有没有人给答案
-------------------------------------------------------
本回复由大傻的破玩意儿【CSDN's forum Explorer】完成!
大傻的破玩意儿,今天你用了木有 !!
软件功能强大,速度超快!!支持中...
软件下载地址:
说的更具体些:我是自己制作了一个资源内嵌Mp3的程序,现在需要 流方式的 播放程序中资源文件内的这个mp3,可是Tmediaplayer这些组件,都没有像 图片组件那样的“loadFromSream”的调用“流”的方法。所以,现在很犯愁阿:(
可以实现的,我在哪本书上看到过,找到后告诉你,不需要犯愁
还要我觉的你没有必要非用Tmediaplayer这样的组件,播放声音嘛,直接调用API吧,文件又小又精致
改用wav格式,可用系统函数playsound直接播放
“可以实现的,我在哪本书上看到过,找到后告诉你,不需要犯愁”-谢谢Ayx_hys() 啊:)
直接调用API播放声音,具体应该怎么作呢?
用个笨方法吧
建立一个模拟网络,发送流
以下一个例子是模拟网络播放资源中的SWF,你可以试试合不合适
谢谢 bo524(风铃夜思雨) :)
正在下载,今晚研究一下
“改用wav格式,可用系统函数playsound直接播放”-这个,今下午做了个试验,我以前的Mp3 音乐 4.6M,转化为WAV后,这个音乐文件达到可怕的 135M !
当然,这个 135 M的WAV资源内嵌EXE,流播放,是没问题的。但实际应用,这样就不行了。
“模拟网络播放资源中的SWF”-今晚实验过,内嵌的SWF,播放后,还是存储到了客户硬盘的IE缓存文件夹内了。
如何,能让IE缓存不自动保存内嵌的FLASH呢....
我有一个放MP3的DLL
可以流播放
以下是测试写的代码
Procedure TFrmMain.FormCreate(Sender: TObject);
Var
Res: TResourceStream;
Begin
If (HIWORD(BASS_GetVersion) <> BASSVERSION) Then
Begin
MessageBox(0, 'An incorrect version of BASS.DLL was loaded', Nil, MB_ICONERROR);
Halt;
End;
If (Not BASS_Init(-1, 44100, 0, Handle, Nil)) Then
Begin
MessageBox(Handle, '无法初始化设备!', '错误', MB_ICONHAND);
Halt;
End;
Res := TResourceStream.CreateFromID(HInstance, 1, 'MP3');
HS := BASS_StreamCreateFile(true, Res.Memory, 0, Res.Size, BASS_SAMPLE_MONO);
Res.Free;
End;
Procedure TFrmMain.FormDestroy(Sender: TObject);
Begin
BASS_Free;
End;
Procedure TFrmMain.CmdPlayClick(Sender: TObject);
Begin
BASS_ChannelPlay(HS, False);
End;
可否一赐 这个流播放MP3的 dll文件啊 :)
DLL与示例文件例已发到你的信箱了
直接不行,难道还不能先保存出来再播放吗?
十分感谢 laihongbo524(风铃夜思雨) ,已经收到了 :)
文件流还不简单?
用LoadResource获取资源的全局句柄,
用GlobalLock锁定此句柄取得指针,
然后就用TFileStream.Read方法读取数据。
播放。
学习
因为释放出来!试想“要是MP3大的》》你的硬盘”你就得晕!
国外有MP3————WAVE做的。
可以实现但----这也太贱了吧!楼主不是想白得到就好。。。。吧