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. HTML 学习笔记 CSS(选择器)

    CSS元素选择器 最常见的CSS 选择器就是元素选择器 换句话说 文档的元素就是最基本的选择器 如果设置HTML样式 选择器通常就是某个HTML元素 比如p h1 em a 甚至可以是HTML本身 h ...

  2. swift约束框架SnapKit使用

    一.Swift - 自动布局库SnapKit的使用详解1(配置.使用方法.样例)   为了适应各种屏幕尺寸,iOS 6后引入了自动布局(Auto Layout)的概念,通过使用各种 Constrain ...

  3. three.js 之旅 (三)

    复制自:http://www.cnblogs.com/ssrsblogs/p/5611332.html 创建模型: 1.长方体: THREE.CubeGeometry(width, height, d ...

  4. Java集合系列:-----------04fail-fast总结(通过ArrayList来说明fail-fast的原理以及解决办法)

    前面,我们已经学习了ArrayList.接下来,我们以ArrayList为例,对Iterator的fail-fast机制进行了解.内容包括::1 fail-fast简介2 fail-fast示例3 f ...

  5. Activity中获取view的高度和宽度为0的原因以及解决方案

    在activity中可以调用View.getWidth.View.getHeight().View.getMeasuredWidth() .View.getgetMeasuredHeight()来获得 ...

  6. <实训|第八天>超级管理员管理linux用户行为权限附监控主机状态

    作为运维工程师,系统管理员,你最大的权力就是给别人分配权力,而且你还能时时控制着他们,今天就给大家介绍一下关于管理用户这一方面的前前后后.  开班第八天: 主要课程大纲:(下面我将把自己的身份定位成一 ...

  7. 打磨程序员的专属利器——命令行&界面

    工欲善其事,必先利其器,程序员更是如此,如果没有一套与自己思维同步的工具,将非常难受并且编码效率会非常低. 但十个程序员就有对工具的十种不同理解,本人现在冒然将自己的“工具箱”拿出来晒晒.若对大家没帮 ...

  8. HTML5+JS 《五子飞》游戏实现(三)页面和棋盘棋子

    前面两节,我们已经对<五子飞>有个初步的认识,对走棋路线也有了基本的了解,现在里沃特继续跟大家分享HTML页面,另外把棋盘棋子也画出来. 演示地址:http://www.lyout.com ...

  9. TCP/IP中最高大上的链路层简介(二)

    引言 对于程序猿来讲,似乎越接近底层,就越显得高大上.这也算是程序猿们的共同认知吧,虽然不是所有人.今天LZ就和各位一起探讨一下TCP/IP中最高大上的一层,也就是最底层的链路层. 这一层LZ了解的还 ...

  10. Bootstrap系列 -- 7. 列表排版方式

    一. 去点列表 1. 使用class=list-unstyled <ul > <li>无序列表项目</li> <li>无序列表项目</li> ...