m4a转换成文字(免费的手机录音m4a转换mp3的方法)

下面的文章将指导您完成创建基于桌面对话框的应用程序的过程,该应用程序可用于相互转换音频文件。包括: “engine”-一个类库,用于从一种格式到另一种格式的实际转换 枚举给定路径中的文件以及其中的任何子文件夹。 用户界面和用户体验 我开发的程序无需安装即可运行,无需外部DLL,甚至不需要静态库。只需构建并运行即可。 背景 MicrosoftMediaFoundation是一个基于Windows的多…

下边的内容将具体指导您进行创建根据桌面上提示框的手机应用程序的全过程,该应用软件可用于互相转换音频文件。包含:

“engine”-一个类库,用于从一种格式到另一种格式的具体转换

枚举类型给出途径中的文档及其在其中的一切子文件夹名称。

创建用于相互转换音频文件的桌面应用程序

操作界面和客户体验

我开发设计的程序流程无需组装就可以运作,无需外界DLL,乃至不用静态数据库。只需搭建并运作就可以。

环境

MicrosoftMediaFoundation是一个根据Windows的多媒体系统服务平台,使开发者可以创建各种各样多媒体课件。

转换音频文件

应用MicrosoftMediaFoundation转换音频文件必须对声频流开展代码和编解码,这将在下列实例教程中开展表明。

第一步是为该类音频处理创建我们自己的类,大家称作SG_Audio(Convert)。

SG_AudioConvert::SG_AudioConvert()
{
    // Initialize whatever needs to be initialized
    Init();
}

SG_AudioConvert::~SG_AudioConvert()
{
    // Clean up whatever needs to be cleaned up
    Cleanup();
}1234567891011复制代码种类:[c]

复位中

大家的Init()作用由结构启用,实行下列实际操作:

查验它是不是已经根据复位。我们不期待(都不应当)多次那样做。

启用HeapSetInformation()为咱们的堆开启一些作用。小心,大家正在初始化单核模块,您可以在这篇优异的内容中掌握相关该专业术语的其他信息。

启用MFStartup()以运行WindowsMediaFoundation。

设定m_bInit为true,表明复位已经完成。

int SG_AudioConvert::Init()
{
    HRESULT hr = S_OK;

    // check already initialized
    if (m_bInit)
        return RET_OK;

    (void)HeapSetInformation(NULL, HeapEnableTerminationOnCorruption, NULL, 0);

    hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE);

    if (SUCCEEDED(hr))
    {
        hr = MFStartup(MF_VERSION);
        m_bInit = TRUE;
        return RET_OK; // success
    }

    m_bInit = FALSE;
    return RET_FAIL; // fail
}12345678910111213141516171819202122复制代码种类:[c]

清扫整洁

在接着以前,大家还介绍一下我们类的Destructor启用的清除全过程。

int SG_AudioConvert::Cleanup()
{
    MFShutdown();
    CoUninitialize();

    return RET_OK; // success
}1234567复制代码种类:[c]

在清除流程中,大家实行下列实际操作:

打电话MFShutdown()

通话CoUninitialize()

大家的通用性声频转换作用

大家开发设计
intSG_AudioConvert::ConvertProc()以将全部文档转换从适用的一切声频种类转换为别的一切种类。

大家将下列传参给它:

p_szSrc-大家的源代码

p_szDst-大家的总体目标文档

TargetFormat-大家总体目标格式的GUID-客户程序“音频编解码器”

ContainerType-大家的器皿种类-客户程序“文档器皿”

该函数公式的原形如下所示所显示:

int SG_AudioConvert::ConvertProc(
     const wchar_t* p_szSrc, 
     const wchar_t* p_szDst, 
     const GUID TargetFormat, 
     const GUID ContainerType);12345复制代码种类:[c]

转换

大家的通用性转换函数公式如下所示所显示:ConvertProc()

注:WriteLogFile()是在叙述我的旧的日志纪录作用之一这一文章内容。

int SG_AudioConvert::ConvertProc(const wchar_t* p_szSrc, const wchar_t* p_szDst, 
    const GUID TargetFormat, const GUID ContainerType)
{
    CTranscoder transcoder;
    HRESULT hr = S_OK;

    // Create a media source for the input file.
    hr = transcoder.OpenFile(p_szSrc);
    if (SUCCEEDED(hr))
    {
        //Configure the profile and build a topology.
        hr = transcoder.ConfigureAudioOutput(TargetFormat);
    }
    else
    {
        return RET_INPUT_FAIL; // open input file fail
    }

    if (SUCCEEDED(hr))
    {
        hr = transcoder.ConfigureContainer(ContainerType);
    }

    //Transcode and generate the output file.
    if (SUCCEEDED(hr))
    {
        hr = transcoder.EncodeToFile(p_szDst);
    }

    if (SUCCEEDED(hr))
    {
        WriteLogFile(L\"Output file created: %sn\", p_szDst);
    }
    else
    {
        WriteLogFile(L\"Output file was not created due to error: %sn\", p_szDst);
    }

    if (!SUCCEEDED(hr))
    {
        return RET_ENC_FAIL; // encoding failed
    }

    return RET_OK;           // encoding success
}123456789101112131415161718192021222324252627282930313233343536373839404142434445复制代码种类:[c]

大家的转换作用

这也是人们的转换函数公式:

下列六个作用包含了下列声频格式的每一种组成中间的转换:.mp3,.wav和.m4a。

// Convert to MP3
int SG_AudioConvert::Wav_to_Mp3(const wchar_t* p_szWavFile, const wchar_t* p_szMp3File)
{
    // check initialize
    if (!m_bInit)
        return RET_NOT_INIT;

    // convert
    return(ConvertProc(p_szWavFile, p_szMp3File, 
           MFAudioFormat_MP3, MFTranscodeContainerType_MP3));
}

int SG_AudioConvert::M4A_to_Mp3(const wchar_t* p_szM4AFile, const wchar_t* p_szMp3File)
{
    // check initialize
    if (!m_bInit)
        return RET_NOT_INIT;

    // Convert
    return(ConvertProc(p_szM4AFile, p_szMp3File, 
           MFAudioFormat_MP3, MFTranscodeContainerType_MP3));
}

// Convert to M4A
int SG_AudioConvert::Wav_to_M4A(const wchar_t* p_szWavFile, const wchar_t* p_szM4AFile)
{
    // check initialize
    if (!m_bInit)
        return RET_NOT_INIT;

    // Convert
    return(ConvertProc(p_szWavFile, p_szM4AFile, MFAudioFormat_AAC, 
                       MFTranscodeContainerType_MPEG4));
}

int SG_AudioConvert::MP3_to_M4A(const wchar_t* p_szMp3File, const wchar_t* p_szM4AFile)
{
    // check initialize
    if (!m_bInit)
        return RET_NOT_INIT;

    // Convert
    return(ConvertProc(p_szMp3File, p_szM4AFile,MFAudioFormat_AAC, 
           MFTranscodeContainerType_MPEG4));
}

// Convert to Wav
int SG_AudioConvert::MP3_to_Wav(const wchar_t* p_szMp3File, const wchar_t* p_szWavFile)
{
    // check initialize
    if (!m_bInit)
        return RET_NOT_INIT;

    // Convert
    return(ConvertProc(p_szMp3File, p_szWavFile, MFAudioFormat_PCM, 
           MFTranscodeContainerType_WAVE));
}

int SG_AudioConvert::M4A_to_Wav(const wchar_t* p_szM4AFile, const wchar_t* p_szWavFile)
{
    // check initialize
    if (!m_bInit)
        return RET_NOT_INIT;

    // Convert
    return(ConvertProc(p_szM4AFile, p_szWavFile, MFAudioFormat_PCM, 
           MFTranscodeContainerType_WAVE));
}1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768复制代码类型:[c]

大家的文件搜索体制

我最近更新了一些旧编码(感激LoukaDiagnekov)来适用当代应用软件,包含UNICODE字符串数组,而且该代码托管在这里储存库文件。

该类的一个很好的功用是可以在一个检索中设定好几个查看的作用。大家还能够递归法地扫描仪文件夹名称以及子文件夹名称,以搜索与人们的规范相符合的文档。

这也是struct运作检索以前录入的具体内容。小心,当牵涉到数百万个文档时,该类有点儿慢,可是就大家的音频转换器专用工具来讲,它可以正常的工作中。

// Specifies settings to use for searching for files
struct FindFileOptions_t
{
    bool recursive;          // Whether to look inside subdirectories
    bool returnFolders;      // Return folder names as results too

    bool *terminateValue;    // Value to check to see whether search should be
                             // terminated

    wstring location;        // Where to search for files

    wstring filter;          // Filter for files to be included

    wstring excludeFile;     // Exclude filter for files
    wstring excludeDir;      // Exclude filter for directories
};12345678910111213141516复制代码类型:[c]

大家的运营模式

大家界定了9种操控方式,可以将一种或二种文件格式密秘变换为第三种。那样,我们可以在给出途径中检索一种或二种类型的文档,并在寻找时将其变换为第三种文件格式。

typedef enum
{
    M4A_WAV_TO_MP3 = 0,        // convert m4a and wav to mp3
    MP3_M4A_TO_WAV = 1,        // convert mp3 and m4a to wav
    MP3_WAV_TO_M4A = 2,        // convert mp3 and wav to m4a
    M4A_TO_MP3 = 3,            // convert m4a to mp3
    WAV_TO_MP3 = 4,            // convert wav to mp3
    MP3_TO_WAV = 5,            // convert mp3 to wav
    M4A_TO_WAV = 6,            // convert m4a to wav
    WAV_TO_M4A = 7,            // convert wav to m4a
    MP3_TO_M4A = 8,            // convert mp3 to m4a

    LAST_ELEMENT = 9
} OperationMode;1234567891011121314复制代码类型:[c]

使我们选用一种“实际操作方式”并对它进行详细描述。例如,MP3_WAV_TO_M4A。

在这里方式下,大家期待在给出途径中检索.mp3和.wav文件,并将全部寻找的文件格式转换为m4a。

挑选此方式后,大家将实行下列实际操作:

应用下列查看搜索文件:

#define QUERY_MP3_WAV    L\"*.mp3;*.wav\";1复制代码类型:[cpp]

因而,返回人们的FindFile课程内容,大家将其设定为:

opts.filter = QUERY_MP3_WAV;1复制代码类型:[cpp]

随后,大家启用:

scanPath(wstring path)1复制代码类型:[cpp]

逐渐大家的文件搜索。检索结束后,大家将获得一个二维数组,在其中包括全部寻找的文档,随后将这种文件格式转换为咱们的总体目标声频类型。

操作界面

创建用于相互转换音频文件的桌面应用程序

此软件根据基于Dialog的MFC应用软件。提示框可调节尺寸,而且每一次调节提示框大钟头都是会调节每一个原素。这也是应用MarcRicharme的下列文章内容中的一些十分历史悠久(但稳如泰山)的源代码完成的。提示框也是有其自身的肌肤,背景色,全透明原素,因而它看上去比规范MFC应用软件更强。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2022年5月12日 上午11:16
下一篇 2022年5月12日 上午11:16

相关推荐

  • 一般纳税人怎么交税,交税标准及交税计算方法介绍

    一般纳税人如何交税?一般纳税人实行凭票抵扣,即可以用购货取得的增值税专用发票等抵扣凭证抵扣销售货物的销项税款,按照进项与销项的差额征税。一般纳税人应纳税额计算公式:应纳税额=销项税额-进项税额  一般纳税人是真正意义上的增值税,即增值额越大,承担的税收越多,多赚钱多纳税,少赚钱少纳税,不赚钱不纳税;而小规模纳税人是按照征收率计算的,无论是否赚钱,赚多少钱都得交税,不利于商品的流通。  个体工商户(…

    2022年7月26日
    610
  • 2020电信宽带包年多少钱一年(附:内部价格曝光)

    自从推进“提速降费”之后,我国各大运营商们在流量方面开展了价格战,让量资费水平创下了历史新低。这个时候,流量价格也消停,三大运营商又把目标转向宽带业务上,然而,关于宽带资费问题,不同的运营商,价格都是不一样的,那么电信宽带多少钱一年呢?下面一起来了解一下2020最新价格表。 电信宽带资费套餐 我国三大运营商的宽带业务竞争渐渐激烈起来,其中,电信宽带具有速度快、网络覆盖广泛、服务好、价格实惠、应用丰…

    2022年9月2日
    1900
  • 什么是数学思维,解说数学知识与数学思维的区别

    华老说过,要打好数学基础有两个必经过程:先学习、接受“由薄到厚”;再消化、提炼“由厚到薄”。培养数学思维能力,是数学基础教育最核心,最重要的目的。华老的话大致勾勒出数学学习的三个层次:知识→方法→思想。知识点可以靠记忆,方法可以多操练,思想则需要提炼领悟!考察关键是当你面临一个问题时,如何去思考,而不是你记住了多少个知识点。 数学思想本质就是数学思维,数学思维并不空泛,每一道数学相关问题、游戏、应…

    2022年8月5日
    630
  • 创业课堂实践活动心得体会,个人能从创业课堂学到什么

    小创说,11月6日,创投圈创业课堂特邀请了一个资深的“帅哥”投资人,手把手教你“如何约谈投资人?”大家觉得精彩不? 11月6日下午4点,创投圈创业课堂完美落幕。大家想看干货不?满足你!本周末小创又没时间出去约会,加班加点把干货给大家整理总结出来!什么?约会对象吹了没?没有!因为是“摩羯”!开个玩笑啦!来吧,跟大家一起分享干货! 本次【创业课堂】,创投圈特邀请的资深“帅哥”投资人是谁呢?他就是原子创…

    2022年5月18日
    770
  • 手机备份工具哪个好用,这5款简直堪称神器用过的都说好

    android的备份程序。需要root用户,并允许您备份单个应用程序及其数据。一次备份和还原单个程序,并且支持多个程序的批量备份和还原。 一、oandbackup 二、GoogleBackupAndRestore 三、NandroidBackup 四、SynciosMobiTransFree 五、TitaniumBackup

    2022年8月29日
    500
  • 怎么推广产品更有效,让顾客进店的10条方法

    当一款App获得成功时,总有人会把功劳归于产品,其实这只是其中的一点罢了。产品的质量和体验固然重要,但推广方法才是其成功的核心秘密。这也就是为什么当你询问对方如何进行推广时,得到的答案总是模棱两可的原因,因为没有人会把自己的“秘笈”公之于众。在这里,我们就来深度解析在产品运营推广中的一些手段,并结合成功案例,以飨读者。 1通常情况下,推广手段主要分为两大类: 1、见效快,投资高。 就是大家都知道的…

    2022年6月19日
    700
  • 付费杀毒软件哪个好,2019杀毒软件排行榜

    免费杀毒软件和付费杀毒软件区别 免费杀毒软件也需要盈利,所以一般会提供一些广告,推送给用户。收费版本在功能和服务上一定会比免费版本多。但两者之间功能相同的部分在设计和效果上绝对是相差无几的,简单的说,在反病毒的效果方面是一样的。 瑞星杀毒软件 瑞星杀毒软件是国内很老牌的杀毒软件了,10年前它是神一般的存在,学习和企业机房是必安装。杀毒的时候会一个小狮子动画,和可爱。 随着国内杀毒软件免费模式的推行…

    2022年8月11日
    640
  • 女生初学者买什么滑板和款式好(新手最容易学会的滑板)

    上面是长板(108厘米)比较适合女生,在上面跳舞会比较好看,当然也有男生选择长板,因为长板也分平地和速降,速降呢就比较刺激,但速降在国内还是场地比较受限,因为他要从高山上滑下来拼速度;下面的是双翘板(长80厘米),也叫技巧板,是一种玩街式的滑板,可以做出很多炫酷的动作,但也很难 如果你是玩技巧:就选双翘板,如果是长途刷跟板舞就选长板。 双翘板一般男孩选的多一点,女孩选长板的比较多。 首先,我们知道…

    2022年8月25日
    840
  • 固态硬盘牌子排名,什么牌子的固态硬盘好用

    如今,装机都会选用固态硬盘,它的来到让电脑大大的突破了机械硬盘带来的性能短板,读取速度是机械硬盘3倍左右,固态硬盘读写速度快、能耗低、体积小、无噪音等特性,从而提升了用户使用体验,越来越受到大众装机用户的热捧。那么固态硬盘什么牌子好?下面装机之家小编根据市场销量、好评度来介绍一下目前固态硬盘的十大品牌,此外文章最后再推荐几款高性价比固态硬盘。 不过对于固态硬盘(SSD),相信不少小白还是不了解,下…

    2022年7月11日
    4090
  • 现在买什么电视好用又实惠(2020最值得信赖的5个电视品牌)

    现在的电视机早就和以前大不一样,经过几轮技术革新,产品无论从外观上还是性能上大变样,机身越来越薄,机器的视觉效果也更好,什么4K电视,超清电视,QLED电视,激光电视,按照功能性种类特别的多,市面上的品牌就如雨后春笋一样,越来越多,如果你一个不注意,掉入卖家宣传的圈套里,会很麻烦,毕竟是属于大物件的家电,正常都是5年使用以上,平常的故障率也特别的低。 很多商家在宣传时除了会宣传机器的高画质以外,还…

    2022年9月18日
    520

发表回复

登录后才能评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信