m4a音频转文字软件(m4a转换格式)
m4a音频转文字软件(m4a转换格式),新营销网红网本栏目通过数据整理汇集了m4a音频转文字软件(m4a转换格式)相关信息,下面一起看看。
下面的文章将指导您创建一个基于桌面对话框的应用程序,它可以用来在音频文件之间相互转换。包括
“引擎”——一个用于从一种格式到另一种格式的实际转换的类库。
枚举给定路径中的文件及其所有子文件夹。
用户界面和用户体验
我开发的程序不需要安装,不需要外部DLL,甚至不需要静态库就可以运行。只需构建并运行它。
背景MicrosoftMediaFoundation是一个基于Windows的多媒体平台,它使开发者能够创建各种多媒体软件。
转换音频文件使用MicrosoftMediaFoundation转换音频文件需要对音频流进行编码和解码,这将在下面的教程中解释。
第一步是为这种音频处理创建我们自己的类,我们称之为SG_Audio(Convert)。
SG _ audio convert :3360 SG _ audio convert(){//初始化任何需要初始化的init();} SG _ audio convert : ~ SG _ audio convert(){//清理任何需要清理的东西upclean up();}1234567891011复制代码类型[c]我们初始化中的Init()函数由构造调用,执行以下操作
检查它是否已经初始化。我们不想(也不应该)多次这样做。
调用HeapSetInformation()为我们的堆启用一些函数。请注意,我们正在初始化单线程单元,您可以在这篇优秀的文章中了解更多关于这个术语的内容。
调用MFStartup()启动WindowsMediaFoundation。
将m_bInit设置为true,表示初始化已经完成。
int SG _ audio convert : init(){ HRESULT HR=S _ OK;//check已经初始化if(m _ bInit)RET _ OK返回;(void)HeapSetInformation(NULL,HeapEnableTerminationOnCorruption,NULL,0);hr=CoInitializeEx(NULL,COINIT _ apartment threaded
COINIT _ DISABLE _ ole 1 DDE);if(successed(HR)){ HR=MF startup(MF _ VERSION);m _ bInit=TRUE返回RET _ OK//success } m _ bInit=FALSE;返回RET _ FAIL//FAIL } 12345678910111213141516171819202122复制代码类型[c]清理在继续之前,我们也来介绍一下我们类的析构函数调用的清理过程。
int SG _ audio convert :3360 clean up(){ MF shut down();coun initialize();返回RET _ OK//success}1234567复制代码类型[c]在清理过程中,我们做了以下工作
调用MFShutdown()
调用CoUninitialize()
我们开发的通用音频转换函数intsg _ audio convert :3360 converteproc()可以将所有文件从任何支持的音频类型转换为任何其他类型。
我们向它传递以下参数
P_szSrc-我们的源文件
我们的目标文件
目标格式- GUID-我们的目标格式-见“音频编解码器”
ContainerType-我们的容器类型-参见“文件容器”
该函数的原型如下
int SG _ audio convert :3360 convert proc(const wchar _ t p _ szSrc,const wchar_t p_szDst,const GUID TargetFormat,const GUID container type);1345复制代码类型[c] Transform我们一般的转换函数如下ConvertProc()
注意WriteLogFile()是这篇文章描述了我的一个旧的日志记录函数。
int SG _ audio convert :3360 convert proc(const wchar _ t p _ szSrc,const wchar_t p_szDst,const GUID TargetFormat,const GUID container type){ CTranscoder transcoder;HRESULT hr=S _ OK//为输入文件创建媒体源,hr=transcoder。OpenFile(p _ SZ src);if(SUCCEEDED(HR)){//配置概要文件并构建拓扑,hr=代码转换器。ConfigureAudioOutput(target format);}
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 MP3int SG_AudioConvert::Wav_to_Mp3(const wchar_t p_szWavFile, const wchar_t p_szMp3File){// check initializeif (!m_bInit)return RET_NOT_INIT;// convertreturn(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 initializeif (!m_bInit)return RET_NOT_INIT;// Convertreturn(ConvertProc(p_szM4AFile, p_szMp3File,MFAudioFormat_MP3, MFTranscodeContainerType_MP3));}// Convert to M4Aint SG_AudioConvert::Wav_to_M4A(const wchar_t p_szWavFile, const wchar_t p_szM4AFile){// check initializeif (!m_bInit)return RET_NOT_INIT;// Convertreturn(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 initializeif (!m_bInit)return RET_NOT_INIT;// Convertreturn(ConvertProc(p_szMp3File, p_szM4AFile,MFAudioFormat_AAC,MFTranscodeContainerType_MPEG4));}// Convert to Wavint SG_AudioConvert::MP3_to_Wav(const wchar_t p_szMp3File, const wchar_t p_szWavFile){// check initializeif (!m_bInit)return RET_NOT_INIT;// Convertreturn(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 initializeif (!m_bInit)return RET_NOT_INIT;// Convertreturn(ConvertProc(p_szM4AFile, p_szWavFile, MFAudioFormat_PCM,MFTranscodeContainerType_WAVE));}1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768复制代码类型[c]我们的文件搜索机制
我最近更新了一些旧代码(感谢LoukaDiagnekov)来支持现代应用程序,包括UNICODE字符串,并且该代码托管在此存储库中。
此类的一个不错的功能是可以在一个搜索中设置多个查询的功能。我们还可以递归地扫描文件夹及其子文件夹,以查找与我们的标准相匹配的文件。
这是struct运行搜索之前填写的主要内容。请注意,当涉及到数百万个文件时,此类有点慢,就我们的音频转换器工具而言,它可以正常工作。
// Specifies settings to use for searching for filesstruct FindFileOptions_t{bool recursive; // Whether to look inside subdirectorie ool returnFolders; // Return folder names as results toobool terminateValue; // Value to check to see whether search should be// terminatedwstring location; // Where to search for fileswstring filter; // Filter for files to be includedwstring excludeFile; // Exclude filter for fileswstring excludeDir; // Exclude filter for directories};12345678910111213141516复制代码类型[c]我们的运作模式
我们定义了9种操作模式,可以将一种或两种格式秘密转换为第三种。这样,我们可以在给定路径中搜索一种或两种类型的文件,并在找到时将其转换为第三种格式。
typedef enum{M4A_WAV_TO_MP3 = 0, // convert m4a and wav to mp3MP3_M4A_TO_WAV = 1, // convert mp3 and m4a to wavMP3_WAV_TO_M4A = 2, // convert mp3 and wav to m4aM4A_TO_MP3 = 3, // convert m4a to mp3WAV_TO_MP3 = 4, // convert wav to mp3MP3_TO_WAV = 5, // convert mp3 to wavM4A_TO_WAV = 6, // convert m4a to wavWAV_TO_M4A = 7, // convert wav to m4aMP3_TO_M4A = 8, // convert mp3 to m4aLAST_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应用程序更好。
相关文章
粤语歌曲网(经典粤语歌曲汇总)
北京奥特莱斯(来北京必逛的12个商场)
豪杰超级解霸(还记得豪杰超级解霸吗?)
龚自珍的资料(清代诗人龚自珍一生功绩简介)
象牙塔是什么意思(“象牙塔”里怎么了?)
水色风信子(水培风信子容易养)
婧字怎么读
虞姬是哪里人(古代著名美人虞姬到底是哪里人?)
公办三本院校(我们还有哪些“三本”?)
电子酒柜(酒柜最全选购指南)
德州景点(德州市景区景点62个)
玉兰油官方网(OLAY发布高端臻粹系列)
更多m4a音频转文字软件(m4a转换格式)相关信息请关注本文章,本文仅仅做为展示!