许多简单的程序使用gstreamer来处理媒体文件。为此,他们将输出设备定义为“ autoaudiosink”。这对我不起作用,因为这会强制使用我未连接到计算机的HDMI声音输出。我尝试用alsasink device=hw:1,0
代替autoaudiosink
修补此类程序,但这产生了一个错误(该程序无法告诉我它是哪个错误)。我怀疑gstreamer库在其library-function-parameters中不喜欢空格。
我的新主意是从安装中删除hdmi驱动程序? 还是有其他方法可以防止autoaudiosink选择它?
使用gstreamer库表达上述对设备进行硬编码的想法的正确方法是什么?例如,在http://github.com/gkarsay/parlatype.git中,我的补丁说
--- parlatype-1.5.2/libparlatype/src/pt-player.c 2017-08-03 14:58:24.000000000 +0200
+++ parlatype-1.5.2.new/libparlatype/src/pt-player.c 2019-07-18 10:00:49.189372451 +0200
@@ -1472,7 +1472,7 @@
player->priv->play = gst_element_factory_make ("playbin", "play");
scaletempo = gst_element_factory_make ("scaletempo", "tempo");
capsfilter = gst_element_factory_make ("capsfilter", "audiofilter");
- audiosink = gst_element_factory_make ("autoaudiosink", "audiosink");
+ audiosink = gst_element_factory_make ("alsasink device=hw:1,0", "audiosink");
/* checks */
#if GST_CHECK_VERSION(1,3,0)
在1.5.2版中,该程序无法创建播放器对象(而是在创建用于显示错误的消息框时崩溃)!
答案 0 :(得分:0)
您使用g_object_set()
来设置元素的属性。只需实例化元素:
audiosink = gst_element_factory_make ("alsasink", "audiosink");
然后设置它的属性:
g_object_set(audiosink, "device", "hw:1,0", NULL);