QT5.9+FFMPEG的视音频播放器例子

例子很简单

主流的视频格式是H264,音频格式是AAC

 

FFMPEG能解码,h264的视频码流解出来的YUV420裸视频流,转成RGB32格式,就可以用QT来直接画了

                            aac的音频码流解出来的PCM裸音频流,经过采样率的转换(44100或48000,转成合适的采样率),就可以播放了

 

FFMPEG的各API就不细说了,雷神的博客很详细

所谓视频,也就是一张张的图像,QT绘图,直接在paintEvent里画就好了

QT的音频播放如下

  //  声音采样格式
    QAudioFormat audio_format;
    //  采样率
    audio_format.setSampleRate(audio_codecctx->sample_rate);
    //  通道数
    audio_format.setChannelCount(audio_codecctx->channels);
    //  采样大小,一般为8或16
    audio_format.setSampleSize(8 * av_get_bytes_per_sample(AV_SAMPLE_FMT_S16));
    //  编码方式
    audio_format.setCodec("audio/pcm");
    //设置字节序
    audio_format.setByteOrder(QAudioFormat::LittleEndian);
    //设置样本数据类型
    audio_format.setSampleType(QAudioFormat::UnSignedInt);
    //音频设备信息
    QAudioDeviceInfo info = QAudioDeviceInfo::defaultOutputDevice();
    if (!info.isFormatSupported(audio_format)) {
        qDebug("default format not supported try to use nearest");
        audio_format = info.nearestFormat(audio_format);
    }
    //    根据可支持的format new了一个音频输出对象
    QAudioOutput *audioOutput = new QAudioOutput(audio_format, this);
    QIODevice *streamOut = audioOutput->start();

......
//audio_out_buffer为解码转换后的pcm音频数据,直接写就好了
streamOut->write((char *)audio_out_buffer, out_buffer_size);

放一张效果图吧

具体的QT工程在这里,直接可以编译运行

https://download.csdn.net/download/Since_lily/13025855

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值