如何用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
 

走马观花

最近的回复

  • 自己顶顶有益健康

    read more
  • @qyvlik 这个例子可否提供学习一下?

    read more
  • @zhoujin7 这个是PySide的代码。的确有深度……
    还要配置环境才可以顺利地跑通你的代码呢。

    read more
  • 这个可以自由拖动, 但是不能自动对齐, 不是我需要的效果

    read more

关注我们

微博
QQ群