У меня есть flac-файл. Я хочу раскодировать его через команду "flac -dc", прочитать поток wav, который выводит команда, уменьшить громкость вдвое и вывести сигнал обратно. Вот мой фактический код:
#include <stdio.h>
#include <stdlib.h>
int main( int argc, char *argv[] ) {
FILE *stream;
int16_t normal, decreased;
stream = popen( "/usr/bin/flac -dc 1.flac", "r" );
while( feof( stream ) == 0 ) {
normal = fgetc( stream );
decreased = (int16_t) (normal * 0.5f);
printf( "%c", decreased );
}
pclose( stream );
return 0;
}
Но когда я запускаю эту программу и перенаправляю ее вывод в аудиосистему с помощью этой команды:
./myprogram | aplay -f dc
звук сильно искажен. Ситуация не изменится, если я попытаюсь декодировать mp3-файл с помощью команды «mpg123 -s». Что случилось?