0
こんにちはsoxで助けてください。私の考えは、オーディオ部分をffmpegでデコードし、次にsoxを通して処理することです。つまり、FFMPEGだけをデコードすることです。ここ は、私が残したものです:SoxとFFMPEGデコード
av_register_all();
char *str = "/home/user/spoon_-_got_nuffin.mp3";
printf("hdhd2");
if(av_open_input_file(&pFormatCtx, str, NULL, 0, NULL)!=0)
return -150; // Couldn't open file
printf("hdhd3");
// Retrieve stream information
if(av_find_stream_info(pFormatCtx)nb_streams; i++) {
if(audioStream streams[audioStream]->codec;
ReSampleContext* rsc = av_audio_resample_init(
1, aCodecCtx->channels,
8000, aCodecCtx->sample_rate,
av_get_sample_fmt("u8"), aCodecCtx->sample_fmt,
1, 1, 1, 1);
aCodec = avcodec_find_decoder(aCodecCtx->codec_id);
if(!aCodec) {
fprintf(stderr, "Unsupported codec!\n");
return -45;
}
avcodec_open(aCodecCtx, aCodec);
c=avcodec_alloc_context();
int source_sample_size = av_get_bits_per_sample_format(av_get_sample_fmt("u8"));
int number = 0;
int decoded = 0;
while (av_read_frame(pFormatCtx, &packet)>= 0) {
if (aCodecCtx->codec_type == AVMEDIA_TYPE_AUDIO) {
int data_size = AVCODEC_MAX_AUDIO_FRAME_SIZE * 2;
int size=packet.size;
while(size > 0) {
int len = avcodec_decode_audio3(aCodecCtx, (int32_t)pAudioBuffer, &data_size, &packet);
int argc;
char * args[3];
sox_effects_chain_t * chain;
sox_effect_t * e;
size_t number_read;
/* All libSoX applications must start by initialising the SoX library */
sox_init();
/* Open the input file (with default parameters) */
in = sox_open_mem_read(pAudioBuffer, data_size, NULL, NULL, NULL);
decoded +=data_size;
size -= data_size;
number++;
}
}
}
機能= sox_open_mem_read(pAudioBuffer、DATA_SIZE、NULL、NULL、NULL)で;
形式: はエラーを与え、ファイルの種類を判断することはできません `」
を私は何をすべき?どのように問題を解決するには?助けてください!!! OUとして
どのコーデックを書きますか?私はffmpegを解読すれば、何を書くべきか分からない。 – Kyborg2011