重新编码音频:gstreamer中的libav编码器/解码器

时间:2019-11-24 15:58:53

标签: audio gstreamer codec

我想重新编码音频文件的音频流。以下gstreamer管道可以正常工作:

BaseResult

但是,当我将编码器/解码器切换到libav aptx时,出现以下错误:

public class ARRAY
{
    public string Item1 { get; set; }
    public string Item2 { get; set; }
}

public class Result
{
    public int ID { get; set; }
    public string TITLE { get; set; }
    public List<ARRAY> ARRAY { get; set; }
}

public class BaseResult
{
    public Result result { get; set; }
}

我收到以下错误:

gst-launch-1.0 filesrc location=input.flac ! decodebin ! audioconvert ! \
               sbcenc ! sbcdec ! autoaudiosink

我在管道中缺少什么?如何使用FFMPEG / libav编解码器?

我是gstreamer的新手,并且想使用cli工具将音频流重新编码为一堆不同的编解码器。 libav似乎具有所有必需的编解码器。

1 个答案:

答案 0 :(得分:1)

一切正常,但是...

执行gst-launch-1.0 --version来检查Gstreamer的版本。

在Gstreamer版本1.15.90中,我用avenc_aptx检查了gst-inspect-1.0 avenc_aptx,发现此编码器的SRC(源)功能是“未知”的。而且,Gstreamer元素需要共享功能才能相互连接。

另一方面,avenc_aptx的文档明确指出了具有SRC功能(音频/ aptx ....)。

对于解码器avdec_aptx,SINK功能“未知”,但文档中显然提到了SINK功能。

因此,您的问题很可能是由于您的Gstreamer版本已经部分(不完全)实现了aptx编码器和解码器而引起的。

尝试将Gstreamer升级到最新版本,再次检查aptx编码器/解码器,如果可见SRC / SINK功能,请重新运行管道。