前言:winform端对于音频文件的格式多有限制,大多数不支持amr格式的文件的播放。但是,手机端传过来的音频文件大多数是amr格式的文件,所以,要想在winform客户端支持音频文件的播放,可以通过将amr格式转换成mp3格式。利用的方法就是在.net端调用外部的ffmpeg.exe文件来进行格式的转换。这种中方式支持多种文件之间的互转,比如wav转mp3,mp3转wav,mp3转amr等,重点再于指令符

具体方法

     /// <summary>
/// 将amr音频转成mp3手机音频
/// </summary>
/// <param name="applicationPath">ffmeg.exe文件路径</param>
/// <param name="fileName">amr文件的路径(带文件名)</param>
/// <param name="targetFilName">生成目前mp3文件路径(带文件名)</param>
public static void ConvertToAmr(string applicationPath, string fileName, string targetFilName)
{
//ffmpeg -i 1.mp3 -ac 1 -ar 8000 1.amr
//ffmpeg -i 1.mp3 -ac 1 -ar 8000 1.amr
string c = applicationPath + @"\ffmpeg -i " + fileName + " " + targetFilName;
c = c.Replace("//", "\\").Replace("/", "\\");
//string c = applicationPath + @"\ffmpeg.exe -y -i " + fileName + " -ar 8000 -ab 12.2k -ac 1 " + targetFilName;
Cmd(c);
} /// <summary>
/// 执行Cmd命令
/// </summary>
private static 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
{ }
}

调用:(将base64字符数组转换成指定路径下的文件)

#region 二进制转音频文件

        /// <summary>
/// 二进制转音频文件
/// </summary>
/// <param name="audioBytes">base64位的音频文件</param>
/// <param name="compno">文件路径的一部分(客户编号)</param>
/// <param name="filename">文件名称</param>
/// <returns></returns>
public static string CByteToAudio(string base64str, string compno, string filename)
{
if (base64str.Length != )
{
byte[] audioBytes = Convert.FromBase64String(base64str);
string address = ConfigurationManager.AppSettings["CustomAudioSavePath"];
string filenaMp3 = address + compno + "/";
string filenaAmr = address + compno + "/" + filename; //完成的文件路径+文件名
if (!Directory.Exists(address + compno))
{
Directory.CreateDirectory(address + compno);
} using (System.IO.MemoryStream ms = new MemoryStream(audioBytes))
{
//有时候为了避免流指针定位错误,显式定义一下指针位置到也可以
ms.Seek(, SeekOrigin.Begin);
using (Stream fs = new FileStream(filenaAmr, FileMode.Create))
{
ms.WriteTo(fs); //将fs写入到ms中
//将amr文件转换为mp3格式的文件
FileInfo fileInfo = new FileInfo(filenaAmr);
filenaMp3 += fileInfo.Name.Split('.')[] + ".mp3";
//Common.API.LogAPI.debug("路径路径路径:" + System.AppDomain.CurrentDomain.BaseDirectory + "bin");
ConvertToAmr(System.AppDomain.CurrentDomain.BaseDirectory+"bin", filenaAmr, filenaMp3);
}
}
return filenaMp3;
}
else
{
return "";
}
} #endregion

附代码:(如何将指定路径下的文件转换成base64字符串数组)

public void FileToBase64()
{
  #region 测试
System.IO.FileStream fs = System.IO.File.OpenRead("D:\\dfdfdfdf.amr");//传文件的路径即可
System.IO.BinaryReader br = new BinaryReader(fs);
byte[] _filestr = br.ReadBytes(Convert.ToInt32(fs.Length));
base64str = Convert.ToBase64String(_filestr);
br.Close();
fs.Close();
  #endregion
}

注意:需要将ffmpeg.exe可执行文件拷贝到指定的目录下,在上述程序中,指定的目录为

System.AppDomain.CurrentDomain.BaseDirectory+"bin",也就是当前应用程序的bin文件夹下

.net amr格式文件转换成mp3格式文件的方法的更多相关文章

  1. 怎样将flac音频格式转换成MP3格式

    Flac音频格式怎样转换成MP3格式呢?随着现在音频格式的不断多样性,生活中很多时候我们都会遇到音频格式转换的问题,如flac音频转MP3的问题,那么我们应该如何去解决这个问题呢?下面我们就一起去来一 ...

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

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

  3. 怎样将M4A音频格式转换成MP3格式

    因为MP3音频格式应用的广泛性,所以很多时候我们都需要将不同的音频格式转换成MP3格式的,那么如果我们需要将M4A音频格式转换成MP3格式,我们应该怎样进行实现呢?下面我们就一起来看一下吧. 操作步骤 ...

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

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

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

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

  6. Python:将utf-8格式的文件转换成gbk格式的文件

    需求:将utf-8格式的文件转换成gbk格式的文件 实现代码如下: def ReadFile(filePath,encoding="utf-8"): with codecs.ope ...

  7. 【转】qlv文件如何转换成mp4 怎样把下载好的qlv格式视频转换成MP4格式

    狸窝  复制  收藏  保存到桌面  快速找教程方案  反馈需求  社会主义核心价值观  客服QQ41442901   马上注册 升级VIP   对于视频文件之间的转换问题,我也已经是无力吐槽了,每个 ...

  8. dvi文件和将dvi文件转换成pdf格式

    dvi文件和将dvi文件转换成pdf格式 Latex只能把tex文件编译成dvi文件, 在cmd 中: 使用xdvi查看dvi格式的文件 若用texstudio编辑tex文件,则可直接将已编译成功的. ...

  9. 将文本(lrc,txt)文件转换成UTF-8格式

    UTF-8是UNICODE的一种变长字符编码又称万国码,由Ken Thompson于1992年创建.现在已经标准化为RFC 3629.UTF-8用1到6个字节编码UNICODE字符.用在网页上可以同一 ...

随机推荐

  1. Python的Django

    1   第一部分目录详解 修改django的项目当中的url中的配置: from django.contrib import admin from django.conf.urls import ur ...

  2. CSS之checkbox&radio&textarea&select

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. c# 数据结构 ArrayList

    数据结构 描述数据之间的关系 行为:添加数据,删除数据,插入数据,查找数据,修改数据 追加数据:向这个结构的末尾添加一个数据 删除数据:在这个结构中删除你指定的数据 插入数据:向这个结构中某一个位置插 ...

  4. linux vue项目+npm run build + nginx

    系统 环境 vue   nginx 步骤 1.打包vue项目 2.配置nginx 打包vue项目 1.项目配置   我们使用服务器的8000端口 2.打包 # npm run build 打包成功会创 ...

  5. 一入爬虫深似海,从此游戏是路人!总结我的python爬虫学习笔记!

    前言 还记得是大学2年级的时候,偶然之间看到了学长在学习python:我就坐在旁边看他敲着代码,感觉很好奇.感觉很酷,从那之后,我就想和学长一样的厉害,就想让学长教我,请他吃了一周的饭,他答应了.从此 ...

  6. python初接触

    浑浑噩噩的过了3年多大学生涯,就借此开始下定决心好好的学好一门技术,为心中那个游戏梦而努力. 正式开课的第一天(也算不的吧,毕竟昨天老师也和我们讲了python课程的大纲内容).自我总结下今天的内容吧 ...

  7. 20165304《Java程序设计》第九周学习总结

    教材学习内容总结 URL类 URL类是java.net包中的一个重要的类,URL的实例封装着一个统一资源定位符,使用URL创建对象的应用程序称作客户端程序. 一个URL对象通常包含最基本的三部分信息: ...

  8. 1.MySQL基础

    1.创建一个数据库: create database db_test; 2.创建一个表: MySQL [mysql]> use db_test; Database changed MySQL [ ...

  9. Windows导入EOS工程

    [Windows导入EOS工程] 编写 EOS 智能合约时,有许多EOS提供的结构.函数.宏.文档对这些内容的描述毕竟模糊,再多的文档也比不过看实际的代码,所以还要下载EOS代码看一下. 最好有个ID ...

  10. 外网访问Vmware虚拟机中的某个服务(如http)

    如果主机是windowx NAT中隐藏的端口映射,说明一下环境,利用当然是VMnet8网络连接,在虚拟机中架设linux WEB服务器利用WEB默认80端口,IP为192.168.11.10,真实主机 ...