如何程序实现.wav到.mp3的转换?

taianmonkey 2003-07-27 01:49:55
如何程序实现.wav到.mp3的转换?
...全文
90 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lanstar200 2004-02-04
  • 打赏
  • 举报
回复
这个头文件被我修改了,建议你去找到原来的,连同DLL一起,即可实现Wav->Mp3高品质压缩
lanstar200 2004-02-04
  • 打赏
  • 举报
回复
/*
* Blade Type of DLL Interface for Lame encoder
*
* Copyright (c) 1999-2002 A.L. Faber
* Based on bladedll.h version 1.0 written by Jukka Poikolainen
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
/*************************************************************************
* Last Modified: Tanli *
* Date: 2003-05-22 *
**************************************************************************/
#ifndef ___BLADEDLL_H_INCLUDED___
#define ___BLADEDLL_H_INCLUDED___

#pragma pack(push)
#pragma pack(1)

#ifdef __cplusplus
extern "C" {
#endif

/* encoding formats */

#define BE_CONFIG_MP3 0
#define BE_CONFIG_LAME 256

/* type definitions */

typedef unsigned long HBE_STREAM;
typedef HBE_STREAM *PHBE_STREAM;
typedef unsigned long BE_ERR;

/* error codes */

#define BE_ERR_SUCCESSFUL 0x00000000
#define BE_ERR_INVALID_FORMAT 0x00000001
#define BE_ERR_INVALID_FORMAT_PARAMETERS 0x00000002
#define BE_ERR_NO_MORE_HANDLES 0x00000003
#define BE_ERR_INVALID_HANDLE 0x00000004
#define BE_ERR_BUFFER_TOO_SMALL 0x00000005

/* other constants */

#define BE_MAX_HOMEPAGE 128

/* format specific variables */

#define BE_MP3_MODE_STEREO 0
#define BE_MP3_MODE_JSTEREO 1
#define BE_MP3_MODE_DUALCHANNEL 2
#define BE_MP3_MODE_MONO 3



#define MPEG1 1
#define MPEG2 0


#define CURRENT_STRUCT_VERSION 1
#define CURRENT_STRUCT_SIZE sizeof(BE_CONFIG) // is currently 331 bytes


typedef enum
{
VBR_METHOD_NONE = -1,
VBR_METHOD_DEFAULT = 0,
VBR_METHOD_OLD = 1,
VBR_METHOD_NEW = 2,
VBR_METHOD_MTRH = 3,
VBR_METHOD_ABR = 4
} VBRMETHOD;

typedef enum
{
LQP_NOPRESET =-1,

// QUALITY PRESETS
LQP_NORMAL_QUALITY = 0,
LQP_LOW_QUALITY = 1,
LQP_HIGH_QUALITY = 2,
LQP_VOICE_QUALITY = 3,
LQP_R3MIX = 4,
LQP_VERYHIGH_QUALITY = 5,
LQP_STANDARD = 6,
LQP_FAST_STANDARD = 7,
LQP_EXTREME = 8,
LQP_FAST_EXTREME = 9,
LQP_INSANE = 10,
LQP_ABR = 11,
LQP_CBR = 12,
LQP_MEDIUM = 13,
LQP_FAST_MEDIUM = 14,

// NEW PRESET VALUES
LQP_PHONE =1000,
LQP_SW =2000,
LQP_AM =3000,
LQP_FM =4000,
LQP_VOICE =5000,
LQP_RADIO =6000,
LQP_TAPE =7000,
LQP_HIFI =8000,
LQP_CD =9000,
LQP_STUDIO =10000

} LAME_QUALITY_PRESET;



typedef struct {
DWORD dwConfig; // BE_CONFIG_XXXXX
// Currently only BE_CONFIG_MP3 is supported
union {

struct {

DWORD dwSampleRate; // 48000, 44100 and 32000 allowed
BYTE byMode; // BE_MP3_MODE_STEREO, BE_MP3_MODE_DUALCHANNEL, BE_MP3_MODE_MONO
WORD wBitrate; // 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256 and 320 allowed
BOOL bPrivate;
BOOL bCRC;
BOOL bCopyright;
BOOL bOriginal;

} mp3; // BE_CONFIG_MP3

struct
{
// STRUCTURE INFORMATION
DWORD dwStructVersion;
DWORD dwStructSize;

// BASIC ENCODER SETTINGS
DWORD dwSampleRate; // SAMPLERATE OF INPUT FILE
DWORD dwReSampleRate; // DOWNSAMPLERATE, 0=ENCODER DECIDES
LONG nMode; // BE_MP3_MODE_STEREO, BE_MP3_MODE_DUALCHANNEL, BE_MP3_MODE_MONO
DWORD dwBitrate; // CBR bitrate, VBR min bitrate
DWORD dwMaxBitrate; // CBR ignored, VBR Max bitrate
LONG nPreset; // Quality preset, use one of the settings of the LAME_QUALITY_PRESET enum
DWORD dwMpegVersion; // FUTURE USE, MPEG-1 OR MPEG-2
DWORD dwPsyModel; // FUTURE USE, SET TO 0
DWORD dwEmphasis; // FUTURE USE, SET TO 0

// BIT STREAM SETTINGS
BOOL bPrivate; // Set Private Bit (TRUE/FALSE)
BOOL bCRC; // Insert CRC (TRUE/FALSE)
BOOL bCopyright; // Set Copyright Bit (TRUE/FALSE)
BOOL bOriginal; // Set Original Bit (TRUE/FALSE)

// VBR STUFF
BOOL bWriteVBRHeader; // WRITE XING VBR HEADER (TRUE/FALSE)
BOOL bEnableVBR; // USE VBR ENCODING (TRUE/FALSE)
INT nVBRQuality; // VBR QUALITY 0..9
DWORD dwVbrAbr_bps; // Use ABR in stead of nVBRQuality
VBRMETHOD nVbrMethod;
BOOL bNoRes; // Disable Bit resorvoir (TRUE/FALSE)

// MISC SETTINGS
BOOL bStrictIso; // Use strict ISO encoding rules (TRUE/FALSE)
WORD nQuality; // Quality Setting, HIGH BYTE should be NOT LOW byte, otherwhise quality=5

// FUTURE USE, SET TO 0, align strucutre to 331 bytes
BYTE btReserved[255-4*sizeof(DWORD) - sizeof( WORD )];

} LHV1; // LAME header version 1

struct {

DWORD dwSampleRate;
BYTE byMode;
WORD wBitrate;
BYTE byEncodingMethod;

} aac;

} format;

} BE_CONFIG, *PBE_CONFIG;

// MP3ID3V1TAG structure
typedef struct _MP3ID3V1TAG
{
char ident[3]; // TAG
char title[30];
char artist[30];
char album[30];
char year[4];
char comment[28];
BYTE reserved;
BYTE tracknum;
BYTE genre;
_MP3ID3V1TAG()
{
strcpy( ident , "TAG" );
strcpy( title , "YZ MP3 Sound" );
strcpy( album , "YZ Talking Record" );
strcpy( artist , "YZ Corp. (Nanjing)" );
strcpy( year , "2003" );
strcpy( comment , "YZ LanSound Record File" );
genre = 0;
tracknum = 0;
reserved = 0;
}
}_MP3ID3V1TAG , *PMP3ID3V1TAG;

typedef struct {

// BladeEnc DLL Version number

BYTE byDLLMajorVersion;
BYTE byDLLMinorVersion;

// BladeEnc Engine Version Number

BYTE byMajorVersion;
BYTE byMinorVersion;

// DLL Release date

BYTE byDay;
BYTE byMonth;
WORD wYear;

// BladeEnc Homepage URL

CHAR zHomepage[BE_MAX_HOMEPAGE + 1];

BYTE byAlphaLevel;
BYTE byBetaLevel;
BYTE byMMXEnabled;

BYTE btReserved[125];


} BE_VERSION, *PBE_VERSION;


typedef BE_ERR (*BEINITSTREAM) (PBE_CONFIG, PDWORD, PDWORD, PHBE_STREAM);
typedef BE_ERR (*BEENCODECHUNK) (HBE_STREAM, DWORD, PSHORT, PBYTE, PDWORD);

// added for floating point audio -- DSPguru, jd
typedef BE_ERR (*BEENCODECHUNKFLOATS16NI) (HBE_STREAM, DWORD, PFLOAT, PFLOAT, PBYTE, PDWORD);
typedef BE_ERR (*BEDEINITSTREAM) (HBE_STREAM, PBYTE, PDWORD);
typedef BE_ERR (*BECLOSESTREAM) (HBE_STREAM);
typedef VOID (*BEVERSION) (PBE_VERSION);
typedef BE_ERR (*BEWRITEVBRHEADER) (LPCSTR);
typedef BE_ERR (*BEWRITEINFOTAG) (HBE_STREAM, LPCSTR );

#define TEXT_BEINITSTREAM "beInitStream"
#define TEXT_BEENCODECHUNK "beEncodeChunk"
#define TEXT_BEENCODECHUNKFLOATS16NI "beEncodeChunkFloatS16NI"
#define TEXT_BEDEINITSTREAM "beDeinitStream"
#define TEXT_BECLOSESTREAM "beCloseStream"
#define TEXT_BEVERSION "beVersion"
#define TEXT_BEWRITEVBRHEADER "beWriteVBRHeader"
#define TEXT_BEFLUSHNOGAP "beFlushNoGap"
#define TEXT_BEWRITEINFOTAG "beWriteInfoTag"


#pragma pack(pop)

#ifdef __cplusplus
}
#endif

#endif
lanstar200 2004-02-04
  • 打赏
  • 举报
回复
使用Lame_enc压缩引擎
taianmonkey 2004-02-04
  • 打赏
  • 举报
回复
解决了!
http://www.codeproject.com/audio/dshowencoder.asp
zhumao 2003-10-14
  • 打赏
  • 举报
回复
我想知道,可是不知道从哪里入手。
sky51fly 2003-08-19
  • 打赏
  • 举报
回复
网上这些代码还是不少的

自己写太浪费时间了
inwin8 2003-08-18
  • 打赏
  • 举报
回复
去看lame吧
oliverlin 2003-08-18
  • 打赏
  • 举报
回复
需要用到DirectxShow的内容,可以看看这方面的资料

http://www.microsoft.com/Developer/PRODINFO/directx/dxm/default.htm
cygnussaint 2003-07-27
  • 打赏
  • 举报
回复
用编程实现吗?我顶。

1,649

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 非技术类
社区管理员
  • 非技术类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧