Почему я не могу прослушать мой файл.aac, закодированный с использованием faac lib?
Я пытаюсь записать на диск файл .aac, звук которого я записываю из процесса, такого как Windows Media Player, используя зацепление / внедрение. Хук / инъекция работает нормально, затем я записываю файл .aac на диск, но ничего не могу слушать. Заголовок файла, как показано ниже:
FILE * out = fopen("out.aac", "wb");
if (out == NULL)
{ printf("Error to open file!\n");
return -1;
}
faacEncConfigurationPtr myFormat;
unsigned int sampleRate = 48000;
unsigned int nChannels = 2;
unsigned int mpegVersion = MPEG2;
unsigned int objectType = LOW;
unsigned int useMidSide = 1;
unsigned int useTns = 0;
unsigned int useLfe = 0;
unsigned int bitRate = 0;
unsigned int bandWidth = 16000;
unsigned int quantqual = 100;
unsigned int outputFormat = 1; //ADTS
unsigned int inputFormat = FAAC_INPUT_16BIT;
unsigned int shortctl = SHORTCTL_NORMAL;
sndf.bigendian = 0;
sndf.channels = 2;
sndf.samplebytes = 4;
sndf.isfloat = 1;
sndf.samplerate = 48000;
sndf.in = read_buffer;d
if ((hEncoder = faacEncOpen(sampleRate, nChannels, &samplesInput, &maxBytesOutput)) == NULL)
printf("faacEncOpen Failed!");
if ((myFormat = faacEncGetCurrentConfiguration(hEncoder)) == NULL)
printf("faacEncGetCurrentConfiguration Failed!");
myFormat->mpegVersion = mpegVersion;
myFormat->aacObjectType = objectType;
myFormat->allowMidside = useMidSide;
myFormat->useTns = useTns;
myFormat->useLfe = useLfe;
myFormat->bitRate = bitRate;
myFormat->bandWidth = bandWidth;
myFormat->quantqual = quantqual;
myFormat->outputFormat = outputFormat;
myFormat->inputFormat = inputFormat;
myFormat->shortctl = shortctl;
if (!faacEncSetConfiguration(hEncoder, myFormat)) {
printf("Unsupported output format!\n");
}
Тогда я начинаю кодировать это:
int numGet, iResult = 0;
int samplesRead, bytesEncode = 0, numFromCir;
int send_offset;
while (1) {
do {
numGet = 0;
numGet = getAudio(get_buffer);
fillbuffer(get_buffer, numGet);
while ( getDataSize() >= 8192){
numFromCir = getframe(read_buffer);
samplesRead = wav_read_float32(&sndf, encoder_buffer, numFromCir / 4);
if (samplesRead > 0){
if ((bytesEncode = faacEncEncode(hEncoder, (int32_t *)encoder_buffer, samplesRead, buffer , maxBytesOutput)) < 0)
printf("faacEncEncode Failed!\n");
}
}
if (bytesEncode > 0){
iResult = fwrite(buffer, 1, bytesEncode, out);
}
Sleep(80);
} while (iResult >= 0);
printf("recv failed: %d\n", WSAGetLastError());
fclose(out);
closesocket(ClientSocket);
faacEncClose(hEncoder);
WSACleanup();
Детали аудио выхода:
Format : ADTS
Format/Info : Audio Data Transport Stream
File size : 251 KiB
Audio
Format : AAC
Format/Info : Advanced Audio Codec
Format version : Version 2
Format profile : LC
Channel(s) : 2 channels
Channel positions : Front: L R
Sampling rate : 48.0 kHz
Frame rate : 46.875 FPS (1024 SPF)
Compression mode : Lossy
Stream size : 251 KiB (100%)