--- src/plugins/Input/ffmpeg/decoder_ffmpeg.cpp 2025-07-25 23:51:13.000000000 +0800 +++ src/plugins/Input/ffmpeg/decoder_ffmpeg.cpp 2026-05-30 21:43:13.000000000 +0800 @@ -259,7 +259,16 @@ c = ic->streams[audioIndex]->codec; #endif -#if (LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,34,0)) //libav-10: 55.34.1; ffmpeg-2.1: 55.39.100 +#if (LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(59,24,100)) //ffmpeg-6.0 + if (c->ch_layout.nb_channels == 1) + { + m_channels = 1; + } + else + { + m_channels = 2; + } +#elif (LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,34,0)) //libav-10: 55.34.1; ffmpeg-2.1: 55.39.100 if (c->channels == 1) { c->request_channel_layout = AV_CH_LAYOUT_MONO; @@ -437,15 +446,20 @@ } else { - got_frame = m_decoded_frame->pkt_size; + got_frame = 1; } #else int l = avcodec_decode_audio4(c, m_decoded_frame, &got_frame, &m_temp_pkt); #endif if(got_frame) +#if (LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(59,24,100)) //ffmpeg-6.0 + out_size = av_samples_get_buffer_size(0, c->ch_layout.nb_channels, m_decoded_frame->nb_samples, + c->sample_fmt, 1); +#else out_size = av_samples_get_buffer_size(0, c->channels, m_decoded_frame->nb_samples, c->sample_fmt, 1); +#endif else out_size = 0; --- src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp 2025-07-25 23:51:13.000000000 +0800 +++ src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp 2026-05-30 21:38:22.000000000 +0800 @@ -276,7 +276,11 @@ #endif info->setValue(Qmmp::BITRATE, int(c->bit_rate) / 1000); info->setValue(Qmmp::SAMPLERATE, c->sample_rate); + #if (LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(59,24,100)) //ffmpeg-6.0 + info->setValue(Qmmp::CHANNELS, c->ch_layout.nb_channels); + #else info->setValue(Qmmp::CHANNELS, c->channels); + #endif info->setValue(Qmmp::BITS_PER_SAMPLE, c->bits_per_raw_sample); const AVCodec *codec = avcodec_find_decoder(c->codec_id);