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 学习笔记 CSS3 (文本效果)

    text-shadow 语法 text-shadow : none | <length> none | [<shadow>, ] * <shadow> 或none ...

  2. 快速排名 让人疯狂的黑帽seo技术

    对于黑帽seo大家或许并不陌生,黑帽seo和白帽seo恰恰相反,是作弊手段.有白帽seo的时候,就有了黑帽seo一直到现在.但隔行如隔山这句话这句话一点都没错,再没接触黑帽seo技术之前我根本不知道黑 ...

  3. 端口扫描base

    #coding:utf8 import os import socket import sys def IsOpen(ip,port): s = socket.socket(socket.AF_INE ...

  4. rpc框架: thrift/avro/protobuf 之maven插件生成java类

    thrift.avro.probobuf 这几个rpc框架的基本思想都差不多,先定义IDL文件,然后由各自的编译器(或maven插件)生成目标语言的源代码,但是,根据idl生成源代码这件事,如果每次都 ...

  5. 前端见微知著JavaScript基础篇:你所不知道的apply, call 和 bind

    在我的职业生涯中,很早就已经开始使用JavaScript进行项目开发了.但是一直都是把重心放在了后端开发方面,前端方面鲜有涉及.所以造成的一个现象就是:目前的前端知识水平,应付一般的项目已然是足够的, ...

  6. 此utf8 非彼utf8 ——谈http协议里的编码问题

    我这里看两个编码: BDPAGETYPE:2BDQID:0xc92b034d0bc985e8BDUSERID:809441751 Cache-Control:private Connection:Ke ...

  7. 判断移动端js代码

    var ua=navigator.userAgent.toLowerCase(); var contains=function (a, b){ if(a.indexOf(b)!=-1){return ...

  8. centos 服务器内存管理

    du su /目录/ 查看改目录大小 ls -lht /  查看文件详情,显示文件大小(直观) df -h 查看系统内存占用情况

  9. java虚拟机和Dalvik虚拟机的区别

    java虚拟机和Dalvik虚拟机的区别: java虚拟机Dalvik虚拟机 java虚拟机基于栈. 基于栈的机器必须使用指令来载入和操作栈上数据,所需指令更多更多dalvik虚拟机是基于寄存器的 j ...

  10. JS实时定位

    <!DOCTYPE html><html lang="en" xmlns="http://www.w3.org/1999/xhtml"> ...