Audio Gstreamer。从麦克风和.ogg文件流式传输时的不同样本大小
我想从麦克风和一些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
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