如何用ffmpeg对实时音频进行编解码?



  • 大家好,我请教一个关于ffmpeg音频编解码的问题,已经被这个问题困扰很久了.

    我正在做一个语音通话的功能,原本的想法是这样的:

    发送端:QAudioInput采集一帧 -> 编码成aac -> 发送
    接收端:接受一帧数据 -> 解码pcm -> QAudioOutput播放

        QByteArray ba;
        ba.resize(iSize);
        char *data = ba.data();
        memcpy(data,(char*)m_pAVpkt->data , iSize);//m_pAVpkt->data为解码后的数据
        m_file->seek(m_file->size());
        m_file->write(ba);
    

    在调用avcodec_encode_audio2()之后编码是成功的,但是我将数据发送到解码端的时候解码失败了。

    于是我试着把数据全部写入一个文件里面,发现文件也是不能通过ffplay播放,并且单独拿文件解码也是失败的。

    我知道这个原因可能是因为我没有使用ffmpeg提供的avformat_write_header() av_write_trailer()av_write_frame()函数。

    结果把换成调用ffmpeg接口写入文件又可以的,但是我要做的是实时通话跟文件没有关系,所以来提问,希望各位帮忙分析一下



  • 。。有封装好的QtAV

    https://github.com/wang-bin/QtAV


Log in to reply
 

走马观花

最近的回复

  • @jiangcaiyang 给你一个大大的赞!
    论坛最近打算再次启用iframely服务了。试试看!

    https://community.nodebb.org/topic/4401

    read more
  • 为了展示比较漂亮的统计效果图,使用Qt Charts还是很值得的!😀

    read more
  • 这些都还是很简单的。典型的Model - View - Controller 模式。😁

    read more
  • QTableView还是比较成熟的,因为很简单。但是如果是树状图,那么只能用QAbstractItemModel的子类了。因为有父子层级关系,所以要自己写。

    read more

关注我们

微博
QQ群