Qt5.12+FFmpeg7中将AAC转为PCM,再将AVFrame中的data转为QByteArray,写入到QIODevice,再用QAudioOutput播出
问题:没有任何声音输出
源码如下:
swr_alloc_set_opts2(&swr_ctx2,out_ch_layout, AV_SAMPLE_FMT_S16, out_codec_ctx->sample_rate,in_ch_layout, pCodecCtx->sample_fmt, pCodecCtx->sample_rate,0, NULL);
swr_init(swr_ctx2);
packet = av_packet_alloc();
while (av_read_frame(pFormatCtx, packet) >= 0) {
if (packet->stream_index == audioStream) {
if(avcodec_send_packet(pCodecCtx, packet) == 0){
while (avcodec_receive_frame(pCodecCtx, pFrame) >= 0) {
int outNbSamples = swr_get_out_samples(swr_ctx2, pFrame->nb_samples);
av_samples_alloc((uint8_t **)&pFramePCM->data, &pFramePCM->linesize[0],pCodecCtx->ch_layout.nb_channels, outNbSamples,AV_SAMPLE_FMT_S16, 1);
swr_convert(swr_ctx2, pFramePCM->data, outNbSamples,(const uint8_t **)pFrame->data, pFrame->nb_samples);
QByteArray audioData = convertAvFrameToQByteArray(pFramePCM);
streamOut->write(audioData.data(),audioData.size());
qDebug()<<"接收到了音频";
}
}
}
av_packet_unref(packet);
}