如何用dspack传输音频? ( 积分: 100 )

  • 主题发起人 主题发起人 星际天涯
  • 开始时间 开始时间

星际天涯

Unregistered / Unconfirmed
GUEST, unregistred user!
我已经用dapack控件做好了视频传输,但在音频传输上却没有找到所需的资料。希望能给出示例,以做参考!
 
我已经用dapack控件做好了视频传输,但在音频传输上却没有找到所需的资料。希望能给出示例,以做参考!
 
怎么没人回答?是分太少了,还是问题太简单了.
 
http://www.netyi.net/in.asp?id=yanleiyi有好多网络书下载和源程序好网站
 
视频传输代码
ImageServer.Canvas.Lock;
try
hr := Grabber.SampleGrabber.GetConnectedMediaType(MediaType);
if hr <> S_OK then

Exit;
try
if IsEqualGUID(MediaType.majortype, MEDIATYPE_Video) then

begin

BIHeaderPtr := nil;
if IsEqualGUID(MediaType.formattype, FORMAT_VideoInfo) then

if MediaType.cbFormat = SizeOf(TVideoInfoHeader) then

BIHeaderPtr := @(PVideoInfoHeader(MediaType.pbFormat)^.bmiHeader);
if not Assigned(BIHeaderPtr) then

Exit;
BitmapHandle := CreateDIBSection(0, PBitmapInfo(BIHeaderPtr)^, DIB_RGB_COLORS, DIBPtr, 0, 0);
if BitmapHandle <> 0 then

begin

if DIBPtr = nil then

Exit;
if BufferLen > Integer(BIHeaderPtr^.biSizeImage) then

BufferLen := BIHeaderPtr^.biSizeImage;
Move(pBuffer^, DIBPtr^, BufferLen);
ImageServer.Picture.Bitmap.Handle := BitmapHandle;
end;

end;

finally
FreeMediaType(@MediaType);
end;


memStream := TMemoryStream.Create;
jpg := TJpegImage.Create;
jpg.Assign(ImageServer.Picture.Bitmap);
jpg.CompressionQuality := 100;
jpg.JPEGNeeded;
jpg.Compress;
jpg.SaveToStream(memStream);
jpg.Free;

if TCPClient.Connected then

begin

try
TCPClient.WriteInteger(memStream.Size);
TCPClient.WriteBuffer(memStream.Memory^, memStream.Size, True);
except
end;

end;

memStream.Free;
finally
ImageServer.Canvas.Unlock;
end;
 
谁有音频传输代码?大家可以互相交流啊!
我以前的想法是以video的格式传输数据,但转换成流的方式时找不到所对应的方式,所以改成用图片的形式流传送。
可以问问,音频怎么传送?谢谢大家了!
 
为什么这里的问题恢复这么慢?郁闷![:)]
 
jpg := TJpegImage.Create;
jpg.Assign(ImageServer.Picture.Bitmap);
jpg.CompressionQuality := 100;
jpg.JPEGNeeded;
jpg.Compress;
jpg.SaveToStream(memStream);
jpg.Free;

这是什么啊,mepg-1的压缩啊
 
不是,是jpg的压缩,并存成流的形式.
 
上面的代码是视频的传输,没有音频的传输.
你有音频传输的代码吗?
 
TJpegImage就是mepg-1压缩啊!
这样不行吧,要是这样压缩就可以了,那就简单了!
 
TJPEGImage encapsulates a jpeg graphic.
和mpeg-1因该是两种不同的格式.
 
有了解的吗?没有就结了.
 
有帮忙的吗?大家帮帮忙啊!
 
谁有思路,可以再加分。
 
我有qq:364893066
 
//发送
procedure TForm1.ACMWaveIn1Data(data: Pointer;
size: Integer);
var
myStream:TMemoryStream;
begin

myStream:=TMemoryStream.Create;
try
myStream.Write(Data^,size);
if idTCPClient1.Connected then

begin

idTCPClient1.WriteInteger(memStream.size);
idTCPClient1.WriteBuffer(myStream.Memory^, myStream.Size, True);
end;

finally
myStream.Free;
end;

end;

//接收
procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
var mystream:TMemoryStream;
BuffLen: Integer;
begin

BuffLen := AThread.Connection.ReadInteger;
myStream:=TMemoryStream.create;
try
AThread.Connection.ReadStream(myStream,BuffLen);
ACMWaveOut1.PlayBack(myStream,BuffLen);
//播放接收到的数据
finally
myStream.free;
end;

end;
 
接受答案了.
 
to laoli
为什么没有反应?能把你的QQ给我吗?有些问题还想请教一下。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
I
回复
0
查看
719
import
I
后退
顶部