如何使用QtAV编码到FLAC?

时间:2016-12-03 11:47:47

标签: c++ qt

我正在尝试使用Qt 5.6.2在C ++(现代GNU / Linux上的gcc g ++ 5.4.0)中使用QtAV来将线性PCM数据编码为FLAC。

我的输入数据包括线性PCM样本,带符号的16位小端,48 kHz采样率以及1或2个通道。我将输入数据存储在QByteArray

我的输出数据需要是一个FLAC格式文件(不是Ogg / FLAC),采样率为16 kHz, 1通道(即使输入为2个通道) ,并签署了16位小端样本格式。需要将输出写入QByteArray以供程序稍后使用。我决不想与文件系统进行交互,因为应用程序正在使用数据。

我一直在查看非常差的文档和源代码(标题和.cpp文件)here(和here,以及AVPlayer的其他标题和实现)这就是我所拥有的到目前为止:

QByteArray convert::convertRawToFlac(QByteArray data)
{
    QBuffer buf(data);
    QByteArray retval;
    QBuffer retbuf(&retval);
    AVTranscoder avt;
    AVPlayer player;
    QVariantHash muxopt, avfopt;

    player.setIODevice(buf);
    player.audio()->setBackends(QStringList() << QString::fromLatin1("null"));

    avt.setMediaSource(&player);
    avt.setOutputMedia(&retbuf);

    //Now need to set options (?) to specify the output codec and 
    //the input and output sample formats
}

我不清楚如何从这里开始。我的主要观点是理解如何告诉QtAV(1)我的输入格式是什么; (2)不做与视频有关的任何事情(这纯粹是音频); (3)我想要的输出格式是什么(使用FLAC编码器)和所需的采样格式(s16le,单声道,16 kHz)。

在将PCM数据传递给FLAC编码器之前,我可能需要将PCM数据转换为所需的样本格式?我甚至都不确定。

0 个答案:

没有答案