高手请教:如何将Media Player或者RealPlayer及网络上通过声卡发出声音的声音信号录音? ( 积分: 100 )

  • 主题发起人 江上游者
  • 开始时间

江上游者

Unregistered / Unconfirmed
GUEST, unregistred user!
我使用DELPHI中的MediaPlayer控件录制*.WAV文件,录音后,录音文件有长度,但放不出声音,高手指点指点。
 
文件出错了[:D]
 
先创建文件,再录音,录音后文件有长度,长度与时间成正比,但放不出声音,请高手指点指点
 
无法使用Media Player或者RealPlayer及网络上的声音文件通过声卡发出声音的声音信号进行录音,请教高手指点指点。
我使用的程序如下:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls,
Forms, Dialogs,
StdCtrls, MPlayer;
type
TWavHeader =record //定义一个Wav文件头格式
rId: longint;
rLen: longint;
wId: longint;
fId: longint;
fLen: longint;
wFormatTag: word;
nChannels: word;
nSamplesPerSec: longint;
nAvgBytesPerSec: longint;
nBlockAlign: word;
wBitsPerSample: word;
dId: longint;
wSampleLength: longint;
end;


TForm1=class(TForm)
MediaPlayer1: TMediaPlayer;
BtStart: TButton;
BtStop: TButton;
procedure
CreateWav(channels:word;resolution:word;rate:longint;fn:string);//自定义写一个Wav文件头过程
procedure BtStartClick(Sender: TObject);
procedure BtStopClick(Sender: TObject);

private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.CreateWav( channels : word;
{ 1(单声)或者2(立体声) }
resolution : word;
{ 8或者16,代表8位或16位声音 }
rate : longint;
{ 声音频率,如11025,22050,
44100}
fn : string { 对应的文件名称 } );
var
wf: file of TWavHeader;
wh: TWavHeader;
begin

wh.rId := $46464952;
wh.rLen :=36;
wh.wId := $45564157;
wh.fId:= $20746d66;
wh.fLen:=16;
wh.wFormatTag := 1;
wh.nChannels := channels;
wh.nSamplesPerSec := rate;
wh.nAvgBytesPerSec := channels*rate*(resolution div 8);
wh.nBlockAlign := channels*(resolution div 8);
wh.wBitsPerSample := resolution;
wh.dId := $61746164;
wh.wSampleLength := 0;
assignfile(wf,fn);
{打开对应文件 }
rewrite(wf);
{移动指针到文件头}
write(wf,wh);
{写进文件头 }
closefile(wf);
{关闭文件 }
end;


procedure TForm1.BtStartClick(Sender: TObject);
begin

try//在程序当前目录下创建一个Wav文件Temp.wav
CreateWav(1,8,11025, (ExtractFilePath(Application.ExeName)+
'Temp.wav'));
MediaPlayer1.DeviceType := dtAutoSelect;
MediaPlayer1.FileName := (ExtractFilePath(Application.ExeName)+
'Temp.wav');
MediaPlayer1.Open;
MediaPlayer1.StartRecording;
BtStart.Enabled:=false;
BtStop.Enabled:=true;
except
BtStart.Enabled:=True;
BtStop.Enabled:=false;
Application.MessageBox('媒体设备初始化失败!','错误',MB_ICONERROR+MB_OK);
end;

end;


procedure TForm1.BtStopClick(Sender: TObject);
begin

try
MediaPlayer1.Stop;
MediaPlayer1.Save;
MediaPlayer1.Close;

Application.MessageBox('声音录制完毕!','信息',MB_ICONINFORMATION+MB_OK);
BtStart.Enabled:=True;
btStop.Enabled:=false;
except
Application.MessageBox('保存声音文件出错!','错误',MB_ICONERROR+MB_OK);
BtStart.Enabled:=True;
BtStop.Enabled:=false;
end;

end;


end.
 
这里有没有会录音的高手,给指点指点。
 
哎,都沉到这里了,还没人理,我帮你顶一下。
 
我给你顶一下
我没做过相应的
 
MediaPlayer控件录音,默认只能录制麦克风输入的声音。
要录制声卡的其他声音,可以双击声音控制属性,显示录音控制面板后,可能有些设备没有列出,那么单击“选项”“属性”,然后把里面的混音设备前打上勾,然后点击“确定”按钮。
用程序也能控制,无非就写写注册表的事情。简单一点的,执行下面这句,然后让用户手工修改。
winexec('sndvol32.exe /r',sw_show);
 
使用winexec('sndvol32.exe /r',sw_show);,调用出Recording Control中的控件,
在Recording Control中的控件,选择选项的属性的录音与播放的语句怎么写,谢谢高手指教。
 
这个是让用户手工修改的,如果程序修改,你应该研究一下注册表的相关值的设置。
这些设置的修改都是记录在注册表中的。
 
如何写注册表的相关值的设置值的语句,给个例子。
谢谢!
 
应该没人知道。
你可以安装个注册表监视软件,然后操作一番,然后看改动了哪些键
 
注册键值语句如何写到程序中,键值可以漫漫查找
 
写注册表的代码看看这里,通过注册表启用网上邻居,
http://www.delphibbs.com/delphibbs/dispq.asp?LID=3494637
 
如果你想花最少的钱学习流行的计算机技术,本人低价提供
计算机专业高清晰 视 频 教 程,所有教程由业内名家讲解,物超所值,
所有光盘4元/张,特快专递全国三天内到货.
联系方式:手 机:1 3 5 76145612(手机联系佳) Q Q:108410943
E-mail:ncncldjjg@126.com
1、Oracle9iOCP(Oracle认证专家DBA)视频教程(23CD)
2、SQL语言、数据挖掘、SQLServer2000视频教程(6CD)
3、计算机网络原理视频教程(4CD)
4、计算机实用组网技术视频教程(3CD)
5、MCSE(微软认证系统工程师)认证视频教程(11CD)
6、windows2003即学即会视频教程(6CD)
7、J2EE Web程序开发定向班/Java就业班视频教程
(java基础jsp核心技术UML设计)(13CD)
8、J2EE基础高级案例分析视频教程(9CD)
9、马士兵J2SE入门与精通(含坦克大战、BBS实例)视频教程(6CD)
10、java语言深入详解视频教程(12CD)
11、java技术从入门到精通视频教程(21CD)
12、javascript全接触视频教程(13CD)
13、各类网站源程序(9CD)
14、unix原理视频教程(3CD)
15、Linux软件开发工程师(C语言)视频教程(4CD)
16、Linux配置、管理、优化实战工程师视频教程(8CD)
17、Linux内核编程视频教程(11CD)
18、C语言详解视频教程(2CD)
19、VC++6.0(MFC)开发技术术详解视频教程(6CD)
20、ASP.NET中文视频教程(3CD)
21、洪恩C#入门多媒体教程(1CD)
22、XML技术视频教程(2CD)
23、操作系统视频教程(3CD)
24、网络技术基础视频教程(2CD)
25、数据结构视频教程(5CD)
26、清华大学计算机专业多媒体教程(数据结构、汇编、编译原理等)(13CD)
27、大学数学[离散数学线性代数概率与数理统计微积分]视频教程(22CD)
28、LearnKey Asp.Net (老外用英语讲课)(13CD)
29、LearnKey Asp.Net Webservice(老外用英语讲课)(5CD)
30、AppDev Asp.Net2.0 UsingC# (老外用英语讲课)(1CD)
31、APPDev .Net Framework(老外用英语讲课)(2CD)
32、林清安pro/e2001(野火版)视频教程(18CD)
33、深圳大学3D设计视频教程(4CD)
34、3DMAX建模视频教程(老外用英语讲课)(6CD)
35、3DMAX纹理与贴图材质灯光视频教程(老外用英语讲课)(5CD)
36、3DMAX格式500个常用模型库(4CD)
37、lightscape基础入门视频教程(2CD)
38、聚光制造(lightscape3.2入门与精通视频教程)(4CD)
39、coreldraw12中文版入门与精通swf格式视频教程(2CD)
 
问题绕过法解决
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
顶部