Audio Gstreamer。从麦克风和.ogg文件流式传输时的不同样本大小

Audio Gstreamer。从麦克风和.ogg文件流式传输时的不同样本大小,audio,gstreamer,ogg,Audio,Gstreamer,Ogg,我想从麦克风和一些ogg音频文件流式传输音频数据到我的应用程序。 有以下管道: 从麦克风: directsoundsrc device=\"{1b70206d-3bb5-4246-a4b3-6aeddb8f1264}\" ! audioconvert ! audio/x-raw, format=(string)F32LE, rate=(int)48000, channels=(int)2, layout=(string)interleaved ! appsink syn

我想从麦克风和一些ogg音频文件流式传输音频数据到我的应用程序。 有以下管道:

从麦克风:

directsoundsrc device=\"{1b70206d-3bb5-4246-a4b3-6aeddb8f1264}\" 
! audioconvert 
! audio/x-raw, format=(string)F32LE, rate=(int)48000, channels=(int)2, layout=(string)interleaved 
! appsink sync=true
从文件:

filesrc location=sound_file.ogg ! oggdemux ! vorbisdec 
! audioconvert ! audio/x-raw, format=(string)F32LE, channels=(int)2, layout=(string)interleaved 
! audioresample ! audio/x-raw, format=(string)F32LE, rate=(int)48000, channels=(int)2, layout(string)interleaved 
! appsink sync=true
这就是我从流中读取缓冲区的方式:

GstSample* gs = gst_app_sink_pull_sample(GST_APP_SINK( m_appsink));
    if (gs)
    {
        GstBuffer* gb = gst_sample_get_buffer(gs);
        GstMapInfo gm;
        if (!gb)
        {
           return false;
        }
        if (!gst_buffer_map(gb, &gm, GST_MAP_READ))
        {
           return false;
        }
        else
        {
            std::cout << "buffer size " << gm.size;
        }
  }
GstSample*gs=gst\u app\u sink\u pull\u sample(gst\u app\u sink(m\u appsink));
if(gs)
{
GstBuffer*gb=gst\u样本\u获取\u缓冲区(gs);
GstMapInfo-gm;
如果(!gb)
{
返回false;
}
如果(!gst\U缓冲区\U映射(gb和gm,gst\U映射\U读取))
{
返回false;
}
其他的
{
标准::cout