ffmpeg-1.2+SDL解码视频文件时声音失真有大量噪音

时间:2020-12-03 12:05:22
本人新手,按照网上的教程在VS2010环境下编写了一个ffplay的小程序。由于原来的avcodec_decode_audio2函数不能使用了,就按照自己的理解改用了avcodec_decode_audio3,但是现在解码时声音有大量噪音,不知道是哪里出了问题,求指教。



int audio_decode_frame(VideoState *is, uint8_t *audio_buf, int buf_size, double *pts_ptr)
{
int len1, data_size,n;
AVPacket pkt = is->audio_pkt;
double pts;

for(;;) 
{
while(is->audio_pkt_size > 0) 
{

data_size = buf_size;



// int16_t * audio_buf = new int16_t[AVCODEC_MAX_AUDIO_FRAME_SIZE * 2];

len1 = avcodec_decode_audio3(is->audio_st->codec,(int16_t *)audio_buf, &data_size, &pkt);
if(len1 < 0) 
{
/* if error, skip frame */
is->audio_pkt_size = 0;
break;
}
is->audio_pkt_data += len1;
is->audio_pkt_size -= len1;
if(data_size <= 0) 
{
/* No data yet, get more frames */
continue;
}

pts = is->audio_clock;
*pts_ptr = pts;
n = 2 * is->audio_st->codec->channels;
is->audio_clock += (double)data_size / (double)(n*is->audio_st->codec->sample_rate);

/* We have data, return it and come back for more later */
return data_size;
}
if(pkt.data)
av_free_packet(&pkt);

if(is->quit) 
{
return -1;
}
/* next packet */
if(packet_queue_get(&is->audioq, &pkt, 1) < 0) 
{
return -1;
}

if(pkt.data == flush_pkt.data)
{
avcodec_flush_buffers(is->audio_st->codec);
continue;
}



is->audio_pkt_data = pkt.data;
is->audio_pkt_size = pkt.size;
/* if update, update the audio clock w/pts */ 
if(pkt.pts != AV_NOPTS_VALUE)
{
is->audio_clock = av_q2d(is->audio_st->time_base)*pkt.pts;
}

}
}

8 个解决方案

#1


我也遇到了相同的问题,请问楼主解决了么?

#2


ffmpeg-1.2 支持AAC的解码嘛? 是内置的还是应用外部的呢?

#3


楼主,你搞定了吗?我也遇到这样的问题,不知道哪里出问题了,求救, QQ 707763833

#4


我也遇到相同的问题,求解~~~

#5


我自己写的基于FFMPEG的音频播放器,希望对你有帮助~
http://blog.csdn.net/leixiaohua1020/article/details/10528443

#6


我也遇到类似的问题,有解决了的吗

#7


该回复于2015-03-20 15:21:32被管理员删除

#8


我也遇到类似的问题,完全按照教程弄得,结果噪声太大,求解决

#1


我也遇到了相同的问题,请问楼主解决了么?

#2


ffmpeg-1.2 支持AAC的解码嘛? 是内置的还是应用外部的呢?

#3


楼主,你搞定了吗?我也遇到这样的问题,不知道哪里出问题了,求救, QQ 707763833

#4


我也遇到相同的问题,求解~~~

#5


我自己写的基于FFMPEG的音频播放器,希望对你有帮助~
http://blog.csdn.net/leixiaohua1020/article/details/10528443

#6


我也遇到类似的问题,有解决了的吗

#7


该回复于2015-03-20 15:21:32被管理员删除

#8


我也遇到类似的问题,完全按照教程弄得,结果噪声太大,求解决