using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
using System.IO;
using System.Threading; namespace Win
{
public partial class Form1 : Form
{
public static string url="";
public Form1()
{
InitializeComponent();
}
static FileSystemWatcher watcher = new FileSystemWatcher();
/// <summary>       
/// 初始化监听       
/// </summary>       
/// <param name="StrWarcherPath">需要监听的目录</param>       
/// <param name="FilterType">需要监听的文件类型(筛选器字符串)</param>       
/// <param name="IsEnableRaising">是否启用监听</param>       
/// <param name="IsInclude">是否监听子目录</param>        
private static void WatcherStrat(string StrWarcherPath, string FilterType, bool IsEnableRaising, bool IsInclude)
{
//初始化监听           
watcher.BeginInit();
//设置监听文件类型           
watcher.Filter = FilterType;
//设置是否监听子目录           
watcher.IncludeSubdirectories = IsInclude;
//设置是否启用监听?           
watcher.EnableRaisingEvents = IsEnableRaising;
//设置需要监听的更改类型(如:文件或者文件夹的属性,文件或者文件夹的创建时间;NotifyFilters枚举的内容)          
watcher.NotifyFilter = NotifyFilters.Attributes | NotifyFilters.CreationTime | NotifyFilters.DirectoryName | NotifyFilters.FileName | NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.Security | NotifyFilters.Size;
//设置监听的路径           
watcher.Path = StrWarcherPath;
//注册创建文件或目录时的监听事件           
watcher.Created += new FileSystemEventHandler(watch_created);
//注册当指定目录的文件或者目录发生改变的时候的监听事件  
watcher.Changed += new FileSystemEventHandler(watch_changed);
//注册当删除目录的文件或者目录的时候的监听事件           
watcher.Deleted += new FileSystemEventHandler(watch_deleted);
//当指定目录的文件或者目录发生重命名的时候的监听事件           
watcher.Renamed += new RenamedEventHandler(watch_renamed);
//结束初始化           
watcher.EndInit();
} /// <summary>       
/// 创建文件或者目录时的监听事件      
/// </summary>      
/// <param name="sender"></param>       
/// <param name="e"></param>       
private static void watch_created(object sender, FileSystemEventArgs e)
{
//事件内容
string fileName = e.FullPath;
string targetFileName = "";
WavConvertAmr.ConvertToMP3 toamr = new WavConvertAmr.ConvertToMP3();
try
{
if (!System.IO.Path.GetExtension(fileName).Equals(".mp3", StringComparison.CurrentCultureIgnoreCase))
{
targetFileName = e.FullPath.Substring(, e.FullPath.LastIndexOf(".")) + ".mp3";
toamr.ConvertToAmr(System.Windows.Forms.Application.StartupPath, fileName, targetFileName);
}
//转换采样率
targetFileName = e.FullPath.Substring(, e.FullPath.LastIndexOf(".")) + ".wav";
toamr.ConvertToAmr(System.Windows.Forms.Application.StartupPath, fileName, targetFileName);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
/// <summary>       
/// 当指定目录的文件或者目录发生改变的时候的监听事件      
/// </summary>       
/// <param name="sender"></param>       
/// <param name="e"></param>       
private static void watch_changed(object sender, FileSystemEventArgs e)
{
//事件内容    
//MessageBox.Show("发生改变");
}
/// <summary>       
/// 当删除目录的文件或者目录的时候的监听事件       
/// </summary>       
/// <param name="sender"></param>             
/// <param name="e"></param>      
private static void watch_deleted(object sender, FileSystemEventArgs e)
{
//事件内容
}
/// <summary>       
/// 当指定目录的文件或者目录发生重命名的时候的事件      
/// </summary>      
/// <param name="sender"></param>       
/// <param name="e"></param>       
private static void watch_renamed(object sender, RenamedEventArgs e)
{
//事件内容      
}
/// <summary>       
/// 启动或者停止监听       
/// </summary>       
/// <param name="IsEnableRaising">True:启用监听,False:关闭监听</param>       
private void WatchStartOrSopt(bool IsEnableRaising)
{
watcher.EnableRaisingEvents = IsEnableRaising;
} private void button2_Click(object sender, EventArgs e)
{
Record re = new Record();
re.Show();
}
private void button1_Click_1(object sender, EventArgs e)
{
//url = System.AppDomain.CurrentDomain.BaseDirectory.Replace("WavConvertAmr\\Win\\bin\\Debug\\", "") + textBox1.Text;
try
{
url = System.AppDomain.CurrentDomain.BaseDirectory.Replace("Debug\\", "") + textBox1.Text;
WatcherStrat(url, "*", true, false);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
this.panel1.Visible = true;
MessageBox.Show("启动成功!");
} private void button2_Click_1(object sender, EventArgs e)
{
OpenFileDialog open = new OpenFileDialog();
if (open.ShowDialog() == DialogResult.OK)
{
string fileName = open.FileName;
string targetFileName = open.FileName.Substring(, open.FileName.LastIndexOf(".")) + ".wav";
WavConvertAmr.ConvertToMP3 toamr = new WavConvertAmr.ConvertToMP3();
toamr.ConvertToAmr(System.Windows.Forms.Application.StartupPath, fileName, targetFileName);
MessageBox.Show("转换成功"); }
} private void panel1_Paint(object sender, PaintEventArgs e)
{ }
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO; namespace WavConvertAmr
{
public class ConvertToMP3
{ /// <summary>
/// 将Wav音频转成Amr手机音频
/// </summary>
/// <param name="applicationPath">ffmeg.exe文件路径</param>
/// <param name="fileName">WAV文件的路径(带文件名)</param>
/// <param name="targetFilName">生成目前amr文件路径(带文件名)</param>
public void ConvertToAmr(string applicationPath, string fileName, string targetFilName)
{
//string c = applicationPath + @"\ffmpeg.exe -y -i " + fileName + " -ar 8000 -ab 128 -ac 1 " + targetFilName;
string c = "\"" + applicationPath + @"\ffmpeg.exe" + "\"" + " -i " + "\"" + fileName + "\"" + " -ar 8000 -y " + "\"" + targetFilName + "\"";
Cmd(c);
} /// <summary>
/// 执行Cmd命令
/// </summary>
private void Cmd(string c)
{
try
{
System.Diagnostics.Process process = new System.Diagnostics.Process();
process.StartInfo.FileName = "cmd.exe";
process.StartInfo.UseShellExecute = false;
process.StartInfo.CreateNoWindow = true;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardInput = true;
process.Start(); process.StandardInput.WriteLine(c);
process.StandardInput.AutoFlush = true;
process.StandardInput.WriteLine("exit");
StreamReader reader = process.StandardOutput;//截取输出流
//process.WaitForExit();
}
catch
{ }
}
}
}

ffmpeg 转成MP3采样率8000的更多相关文章

  1. linux下使用ffmpeg将amr转成mp3

    说明:AMR格式是智能手机上的常用音频文件格式,比MP3格式的压缩比大.同样时长的AMR文件大概是MP3的十分之一,所以在移动互联项目中应用比较广泛.但目前AMR格式在个人电脑上应用较少,所以目前大部 ...

  2. .net amr格式文件转换成mp3格式文件的方法

    前言:winform端对于音频文件的格式多有限制,大多数不支持amr格式的文件的播放.但是,手机端传过来的音频文件大多数是amr格式的文件,所以,要想在winform客户端支持音频文件的播放,可以通过 ...

  3. iOS: lame框架将PCM录音转成MP3格式

    lame框架将PCM录音转成MP3格式 1.lame下载地址:https://github.com/rbrito/lame,它是一个不可执行的文件,需要借助build-lame.sh脚本将其编译成.a ...

  4. iOS 通过(lame)将录制音频转换成Mp3

    版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请注明出处,保留原帖地址及作者署名. Url:http://blog.csdn.net/ysy441088327/article/detail ...

  5. 使用jave2将音频wav转换成mp3格式

    最近需要用到语音合成功能,网上查阅了一番,发现可以使用腾讯云的语音合成API来完成这个功能,但是腾讯云的api返回的是wav格式的音频文件,这个格式的文件有些不通用,因此需要转换成mp3格式的文件.  ...

  6. python脚本实现音频m4a格式转成MP3格式

    群里看到有人询问:谁会用python将微信音频文件后缀m4a格式转成mp3格式,毫不犹豫回了句:我会.然后就私下聊起来了 解决方法介绍如下: 工具:windows系统,python2.7,转换库ffm ...

  7. MP4文件批量转码成MP3

    需求背景:最近为了学python爬虫,在论坛里找了不少视频教程,非常棒.但有时看视频不方便,就想着能否把视频批量转码成音频,这样在乘坐地铁公交的时候也能学习了. 解决路径:有了需求,我首先在论坛里搜了 ...

  8. 使用jave2实现将wav格式的音频转换成mp3格式

    最近需要用到语音合成功能,网上查阅了一番,发现可以使用腾讯云的语音合成API来完成这个功能,但是腾讯云的api返回的是wav格式的音频文件,这个格式的文件有些不通用,因此需要转换成mp3格式的文件. ...

  9. 如何将AAC音频转换成MP3格式

    我们应该怎样将AAC音频转换成MP3格式呢?AAC是一种专为声音数据设计的文件压缩格式,相对于MP3音频来说更加高效,性价比跟高.但是因为MP3音频格式的通用性,我们还是时常需要将AAC音频转换成MP ...

随机推荐

  1. Apache 的搭建及vim的简单命令

    一. vim 简单命令 pwd     当前路径 ls    当前路径所有目录 cd  目录地址   跳转到指定目录 /xxx  查找xxx x 删除当前字符 n 执行上一次查找 二.为什么使用apa ...

  2. webpack中output配置项中chunkFilename属性的用法

    chunkFilename和webpack.optimize.CommonsChunkPlugin插件的作用差不多,都是用来将公共模块提取出来,但是用法不一样,这里主要介绍chunkFilename的 ...

  3. 重构Web Api程序(Api Controller和Entity) 续篇(1)

    经过一系列重构,你眼明的话,还是可以看到还有重构的地方,如: string newFileName = "~/Temp/" + Guid.NewGuid().ToString() ...

  4. 关于div标签的title属性一闪一闪不正常显示的原因

    弹出了chrome的开发工具就会出现以上问题.

  5. 备忘:powerbroker运行一个命令

    pbrun su<space>-<space><taget user name> example: pbrun su - pmsdev

  6. C 语言学习的第 01 课:先来聊聊计算机吧

    各位同学,新学期,我就是你们的助教了.我的个人信息,你们的任课老师都已经介绍过了,所以我这里也就不再啰嗦.下面,来聊聊今天的话题:“先来谈谈计算机吧”. 想必看到这个题目,你们大家一定是不愿意点击进来 ...

  7. Putty SSH简单使用

    本地的puttygen生出的秘钥,公钥传到服务器上连接会报错 Server refused our key. 一般我们建议都在服务器上生成秘钥,把私钥下载下来.加载到putty认证中 01.在服务器上 ...

  8. HTML5基础知识(3)--required属性

    1.required属性规定在提交之前要填写输入域(不能为空). 2.代码 <body> <form> 账号:<input type="text" r ...

  9. 链表的Java实现

    import java.lang.System; public class Hello { public static void main(String[] args) { LinkList List ...

  10. 初步认识ajax(个人整理)

    通过使用ajax可以实现页面的部分动态化 ajax可以发送一个请求去服务端,而服务端则发送回一小段数据给客户端,这样就可以避免加载整个页面,因为很多时候页面只需要刷新某一部分的数据,而其他大部分体就不 ...