博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
faac编码aac
阅读量:6237 次
发布时间:2019-06-22

本文共 2007 字,大约阅读时间需要 6 分钟。

// faacode.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include 
#include
typedef unsigned long ULONG;typedef unsigned int UINT;typedef unsigned char BYTE;//typedef char _TCHAR;#pragma comment(lib,"libfaac.lib")int main(int argc, _TCHAR* argv[]){ ULONG nSampleRate = 44100; // 采样率 UINT nChannels = 2; // 声道数 UINT nPCMBitSize = 16; // 单样本位数 ULONG nInputSamples = 0; ULONG nMaxOutputBytes = 0; int nRet; faacEncHandle hEncoder; faacEncConfigurationPtr pConfiguration; int nBytesRead; int nPCMBufferSize; BYTE* pbPCMBuffer; BYTE* pbAACBuffer; FILE* fpIn; // WAV file for input FILE* fpOut; // AAC file for output fpIn = fopen("test.wav", "rb");// resample.pcm fpOut = fopen("test.aac", "wb");// resample.aac // (1) Open FAAC engine hEncoder = faacEncOpen(nSampleRate, nChannels, &nInputSamples, &nMaxOutputBytes); if(hEncoder == NULL) { printf("[ERROR] Failed to call faacEncOpen()\n"); return -1; } nPCMBufferSize = nInputSamples * nPCMBitSize / 8; pbPCMBuffer = new BYTE [nPCMBufferSize]; pbAACBuffer = new BYTE [nMaxOutputBytes]; // (2.1) Get current encoding configuration pConfiguration = faacEncGetCurrentConfiguration(hEncoder); pConfiguration->inputFormat = FAAC_INPUT_16BIT; // (2.2) Set encoding configuration nRet = faacEncSetConfiguration(hEncoder, pConfiguration); //如果是wav格式,先读取前面的 fseek(fpIn,58,SEEK_SET); for(int i = 0; 1; i++) { // 读入的实际字节数,最大不会超过nPCMBufferSize, nBytesRead = fread(pbPCMBuffer, 1, nPCMBufferSize, fpIn); // 输入样本数,用实际读入字节数计算,一般只有读到文件尾时才不是nPCMBufferSize/(nPCMBitSize/8); nInputSamples = nBytesRead / (nPCMBitSize / 8); // (3) Encode nRet = faacEncEncode( hEncoder, (int*) pbPCMBuffer, nInputSamples, pbAACBuffer, nMaxOutputBytes); fwrite(pbAACBuffer, 1, nRet, fpOut); printf("%d: faacEncEncode returns %d\n", i, nRet); if(nBytesRead <= 0) { break; } } // (4) Close FAAC engine nRet = faacEncClose(hEncoder); delete[] pbPCMBuffer; delete[] pbAACBuffer; fclose(fpIn); fclose(fpOut); //getchar(); return 0;}

 

转载地址:http://gvzia.baihongyu.com/

你可能感兴趣的文章
浅谈Base64编码算法
查看>>
2016中国“互联网+”千人论坛 ——“互联网业务与技术”分论坛成功举办 聚焦大数据与人工智能...
查看>>
SAP上阿里云FAQ
查看>>
Java中设置Session过期时间(Spring Boot)
查看>>
电子发票时代来临,喜报销打造全新报销方式
查看>>
「镁客·请讲」智周万物何小祥:深挖用户需求,打造一个完整的物联网仓储系统...
查看>>
Ubimax面向企业推出Frontline平台,提供完整AR解决方案
查看>>
2017VR创新创业大赛:500万奖金创VR赛事最高纪录
查看>>
叮!您收到一份超值Java基础入门资料!
查看>>
数据库入侵的六大手段与防范措施(一)
查看>>
互联网广告的进化之路-技术篇【计算广告】
查看>>
记一次Redis超时排查
查看>>
浅谈GPU虚拟化技术(五):GPU图形渲染虚拟化的业界难题-VDI的用户体验
查看>>
芯片大神离职特斯拉,马斯克造芯梦碎可能会抱黄仁勋大腿
查看>>
Ubuntu 16.04安装indicator-sysmonitor实现导航条显示上下行网速/CPU/内存使用率
查看>>
《App架构师实践指南》:移动开发的进阶指南
查看>>
C++参考的翻译或校对
查看>>
Jetty错误:java.lang.IllegalStateException: Form too large 270468>200000的问题解决
查看>>
Linux多线程2-1---创造新线程
查看>>
菜鸟学Linux 第001天笔记 基础理论知识
查看>>