我有一个抽象的问题,还有一个具体的例子。我现在才开始使用 GStreamer,并且正在尝试了解管道的流程。我想对任何给定任务的管道中应该存在什么样的元素有一个很好的直觉。我最近完成了一个教程,使用 tee 来显示测试音频的视频表示(链接在这里)。现在,我试图让 GStreamer 播放 .ogg 文件并显示类似的图形表示。我一定是在想这个错误,但我查找了一种构建 ogg 管道的方法并发现
sudo gst-launch-0.10 filesrc file.ogg ! oggdemux ! vorbisdec ! audioconvert ! audioresample ! autoaudiosink
因此,我使用 Tee 构建了一个管道,如下所示:
if (gst_element_link_many (data.audio_source, data.tee, NULL) != TRUE) {
g_printerr ("Elements #1 could not be linked.\n");
linked = FALSE;
}
if (gst_element_link_many (data.audio_queue, data.oggdemux, data.vorbisdec, data.audio_convert, data.audio_resample, data.audio_sink, NULL) != TRUE) {
g_printerr ("Elements #2 could not be linked.\n");
linked = FALSE;
}
if (gst_element_link_many (data.video_queue, data.visual, data.video_convert, data.video_sink, NULL) != TRUE) {
g_printerr ("Elements #3 could not be linked.\n");
linked = FALSE;
}
但我收到一条错误消息,告诉我“无法链接元素 #2,但我不确定为什么不允许使用该模式。请帮忙!谢谢。