2014-01-16 7 views
0

재생을 위해 AAC 오디오 스트림을 변환하려고합니다. 나는 내가 AV_SAMPLE_FMT_FLTP에서 AV_SAMPLE_FMT_S16으로 변환 할 필요가 있음을 발견했다.하지만 그렇게 할 때, 오디오는 약 절반의 속도로 재생된다.FFmpeg AAC에서 변환 후 오디오가 천천히 재생됩니다.

swr = swr_alloc(); 
assert(av_opt_set_int(swr, "in_channel_layout", audioContext->channel_layout, 0) == 0); 
assert(av_opt_set_int(swr, "out_channel_layout", audioContext->channel_layout, 0) == 0); 
assert(av_opt_set_int(swr, "in_sample_rate", audioContext->sample_rate, 0) == 0); 
assert(av_opt_set_int(swr, "out_sample_rate", 44100, 0) == 0); 
assert(av_opt_set_int(swr, "in_sample_fmt", audioContext->sample_fmt, 0) == 0); 
assert(av_opt_set_int(swr, "out_sample_fmt", AV_SAMPLE_FMT_S16, 0) == 0); 
swr_init(swr); 

변환 할 코드가 있습니다. 입력 샘플 속도는 44100이고 오디오는 스테레오입니다.

나는 당신이 실제 오디오 인코딩 코드를 보여주지 않았다

swr_convert(swr, &output, aDecodedFrame->nb_samples, (const uint8_t**)aDecodedFrame->extended_data, aDecodedFrame->nb_samples) >= 0) 

답변

0

으로 코드를 호출, 그래서 당신이 제대로 리샘플링을 처리 할 수있는 기회가 추측 것입니다. 리샘플링 작업에서 데이터를 두 번 적게 읽습니다 (예 : 80 바이트를 넘으면 리샘플링기에서 40을 읽음).

내 비디오 작성 코드를보고 오디오 인코딩 부분을 제거 할 수 있습니다. 그것은 여기에있다 : http://sourceforge.net/p/karlyriceditor/code/HEAD/tree/src/ffmpegvideoencoder.cpp

관련 문제