如何录制电台的声音 网络上有很多的网络电台,许多都是 mms://之类的格式,我也很喜欢某个电台的某个节目,我就想在写个程序,在这个节目播放的时候,自动给她录制下来,保存成mp3这样,我下班以后就可以听了。用c#怎么实现,该看哪方面的资料,谢谢各位。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 直接实现很困难,要解析mms流如果装了mplayer 可以用这个命令实现保存mplayer -dumpstream mms://地址或者用录音,内录的形式保存打开音频设备的混音选项用自带录音机或者编程都很容易实现了 这个我做过。不需要你写任何代码、必须有硬件支持。 要买个信号转换盒。 加上 mediaplayserver 客户端就可以了。 使用socket,只要将发送包的结构 改成 mms 或 rstp的结构,发送过去,然后就按通常的做法,receive到 buf里。我只知道RTSP的结构,MMS你可以去GOOGLE或BAIDU上查。这是一个参考地址:http://www.yuanma.org/data/2007/0113/article_2109.htm================================================DESCRIBE rtsp://192.168.20.136:5000/xxx666 RTSP/1.0CSeq: 2token: Accept: application/sdpUser-Agent: VLC media player (LIVE555 Streaming Media v2005.11.10) Windows Media Service 看看这个相关内容或许有帮助 http://zhidao.baidu.com/question/74661123这个应该很有用 1.引入DirectX 的DLL文件的名字空间:using Microsoft.DirectX;using Microsoft.DirectX.DirectSound; 2.建立设备。在我们导入的Microsoft.DirectX.DirectSound空间中,有个Device的类。这个是表示系统中的声音设备。Device dv=new Device(); 3.设置CooperativeLevel。因为windows是多任务的系统,设备不是独占的,所以在使用设备前要为这个设备设置CooperativeLevel。调用Device的SetCooperativeLevel方法:其中,第一个参数是一个Control,第二个参数是个枚举类型。using System;using System.Windows.Forms;using Microsoft.DirectX.DirectSound;using Microsoft.DirectX; namespace DirectSoundManager{ public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) //单击播放录音文件 { // 建立声音设备 Microsoft.DirectX.DirectSound.Device dev = new Microsoft.DirectX.DirectSound.Device(); dev.SetCooperativeLevel(this,Microsoft.DirectX.DirectSound.CooperativeLevel.Normal); // 为声音建立二级缓冲区 try { Microsoft.DirectX.DirectSound.SecondaryBuffer snd = new Microsoft.DirectX.DirectSound.SecondaryBuffer(@"d:\abce.wav", dev); //录音文件的路径 // 播放声音 snd.Play(0, Microsoft.DirectX.DirectSound.BufferPlayFlags.Default); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } SoundRecord sou = new SoundRecord(); private void button2_Click(object sender, EventArgs e) //单击开始录音 { sou.SetFileName(@"d:\abce.wav"); //录音保存的位置 sou.RecStart(); // ---------------- //录音 } private void button3_Click(object sender, EventArgs e) //单击录音结束 { sou.RecStop(); //停止录音 } }} 数据库连接错误,求教! 如何在绘制的几个闭合曲线中填充颜色(GDI+) 初学者问一下Finalize()方法的问题 高手帮忙! C#中访问网络映射驱动 操作access数据库的问题 怎样获得当前日期七天前的日期? C#,DATAGRID保存数据问题。高分求解. winform怎么实现每天按时执行一个方法呢? 急急急急 winform中dataGridView中滚动条是否可以设置宽度 请推荐比较好的PowerDesigner论坛 两个类文件中的函数需要互相调用
mplayer -dumpstream mms://地址或者用录音,内录的形式保存
打开音频设备的混音选项
用自带录音机或者编程都很容易实现了
必须有硬件支持。 要买个信号转换盒。 加上 mediaplayserver 客户端就可以了。
只要将发送包的结构 改成 mms 或 rstp的结构,发送过去,然后就按通常的做法,receive到 buf里。我只知道RTSP的结构,MMS你可以去GOOGLE或BAIDU上查。这是一个参考地址:http://www.yuanma.org/data/2007/0113/article_2109.htm================================================
DESCRIBE rtsp://192.168.20.136:5000/xxx666 RTSP/1.0
CSeq: 2
token:
Accept: application/sdp
User-Agent: VLC media player (LIVE555 Streaming Media v2005.11.10)
using Microsoft.DirectX.DirectSound; 2.建立设备。在我们导入的Microsoft.DirectX.DirectSound空间中,有个Device的类。这个是表示系统中的声音设备。Device dv=new Device(); 3.设置CooperativeLevel。因为windows是多任务的系统,设备不是独占的,所以在使用设备前要为这个设备设置CooperativeLevel。调用Device的SetCooperativeLevel方法:其中,第一个参数是一个Control,第二个参数是个枚举类型。
using System;
using System.Windows.Forms;
using Microsoft.DirectX.DirectSound;
using Microsoft.DirectX; namespace DirectSoundManager
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void button1_Click(object sender, EventArgs e) //单击播放录音文件
{ // 建立声音设备
Microsoft.DirectX.DirectSound.Device dev = new Microsoft.DirectX.DirectSound.Device();
dev.SetCooperativeLevel(this,Microsoft.DirectX.DirectSound.CooperativeLevel.Normal); // 为声音建立二级缓冲区
try
{
Microsoft.DirectX.DirectSound.SecondaryBuffer snd = new Microsoft.DirectX.DirectSound.SecondaryBuffer(@"d:\abce.wav", dev); //录音文件的路径 // 播放声音
snd.Play(0, Microsoft.DirectX.DirectSound.BufferPlayFlags.Default);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
} }
SoundRecord sou = new SoundRecord();
private void button2_Click(object sender, EventArgs e) //单击开始录音
{
sou.SetFileName(@"d:\abce.wav"); //录音保存的位置
sou.RecStart();
// ---------------- //录音
} private void button3_Click(object sender, EventArgs e) //单击录音结束
{
sou.RecStop(); //停止录音
}
}
}