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

走马观花

最近的回复

  • Q

    幾乎沒有看到過,這究竟是什麼原因呢?
    有瞭解的同學可以來說一說。

    read more
  • 这里大概怎么做,然后值怎么传入![替代文字](73c989ff-abab-46e6-99e0-5173a40514b3-image.png 图片地址)例如上图的表格,表头怎么定义,然后表格的内容输入格式

    read more
  • @lsy 我没有在 QtLocation 成功实现高德地图的接入

    可以上 github 搜索用户 vladest,这个用户封装了国外大多数地图,可以参考这个去实现。

    read more
  • 自己顶顶有益健康

    read more

关注我们

微博
QQ群