Audio 简单的gstreamer代码中出现错误,无法播放;mp3";音频文件 #包括 #包括 #包括 int main(int argc,char*argv[]) { GstElement*元素; GstElement*元素1; GstElement*元素2; GstElement*管道; gst_init(&argc,&argv); 如果(argc!=2) { g_print(“用法:%s argv[1]\n”,argv[0]); 退出(退出失败); } /*创建新管道*/ 管道=gst_管道_新(“管道”); /*创建新的*.mp3源元素*/ 元素=gst元素工厂制造(“文件资源”、“来源”); if(元素!=NULL) g_object_set(g_object(element),“location”,argv[1],NULL); 其他的 { g_print(“未能创建元素\n”); 退出(退出失败); } /*创建新的*.mp3反编码器元素*/ element1=商品及服务税(gst)\元件\工厂\制造商(“decodebin2”,“解码器”); if(element1!=NULL) g_print(“元素1成功”); 其他的 { g_print(“未能创建元素1\n”); 退出(退出失败); } /*创建新的*.mp3接收器元素*/ element2=gst_元素_工厂制造(“自动音频接收器”、“播放音频”); if(element2!=NULL) g_print(“element2成功”); 其他的 { g_print(“未能创建元素2\n”); 退出(退出失败); } /*向管道添加元素*/ gst_bin_add_many(gst_bin(管道),元素,元素1,元素2,NULL); /*将src链接到sink元素*/ gst元素链接多(元素,元素1,元素2,空); /*开始玩*/ gst_元素_设置_状态(gst_元素(管道)、gst_状态_播放); 而(gst_-bin_迭代_递归(gst_-bin(管道)); /*别玩了*/ gst\元素\设置\状态(gst\元素(管道),gst\状态\空); /*取消引用管道中的所有元素*/ gst_对象_unref(gst_对象(管道)); 返回0; }

Audio 简单的gstreamer代码中出现错误,无法播放;mp3";音频文件 #包括 #包括 #包括 int main(int argc,char*argv[]) { GstElement*元素; GstElement*元素1; GstElement*元素2; GstElement*管道; gst_init(&argc,&argv); 如果(argc!=2) { g_print(“用法:%s argv[1]\n”,argv[0]); 退出(退出失败); } /*创建新管道*/ 管道=gst_管道_新(“管道”); /*创建新的*.mp3源元素*/ 元素=gst元素工厂制造(“文件资源”、“来源”); if(元素!=NULL) g_object_set(g_object(element),“location”,argv[1],NULL); 其他的 { g_print(“未能创建元素\n”); 退出(退出失败); } /*创建新的*.mp3反编码器元素*/ element1=商品及服务税(gst)\元件\工厂\制造商(“decodebin2”,“解码器”); if(element1!=NULL) g_print(“元素1成功”); 其他的 { g_print(“未能创建元素1\n”); 退出(退出失败); } /*创建新的*.mp3接收器元素*/ element2=gst_元素_工厂制造(“自动音频接收器”、“播放音频”); if(element2!=NULL) g_print(“element2成功”); 其他的 { g_print(“未能创建元素2\n”); 退出(退出失败); } /*向管道添加元素*/ gst_bin_add_many(gst_bin(管道),元素,元素1,元素2,NULL); /*将src链接到sink元素*/ gst元素链接多(元素,元素1,元素2,空); /*开始玩*/ gst_元素_设置_状态(gst_元素(管道)、gst_状态_播放); 而(gst_-bin_迭代_递归(gst_-bin(管道)); /*别玩了*/ gst\元素\设置\状态(gst\元素(管道),gst\状态\空); /*取消引用管道中的所有元素*/ gst_对象_unref(gst_对象(管道)); 返回0; },audio,mp3,gstreamer,bus,Audio,Mp3,Gstreamer,Bus,1) 编译步骤:-gcc gst6.c-o gst6pk config--cflags--libs gstreamer-0.10, 它正在编译,没有任何警告和错误。 2) 导出的PKG_CONFIG_PATH env变量,即导出PKG_CONFIG_PATH=/usr/lin/pkgconfig。 3) 执行步骤:./gst6/home/user/Downloads/*.mp3 4) 输出:element1成功, 元素2成功 杀了 无法播放音频文件。请让我知道我的程序出了什么问题。这是我的第一个

1) 编译步骤:-gcc gst6.c-o gst6
pk config--cflags--libs gstreamer-0.10
, 它正在编译,没有任何警告和错误。
2) 导出的PKG_CONFIG_PATH env变量,即导出PKG_CONFIG_PATH=/usr/lin/pkgconfig。 3) 执行步骤:./gst6/home/user/Downloads/*.mp3 4) 输出:element1成功, 元素2成功
杀了

无法播放音频文件。请让我知道我的程序出了什么问题。这是我的第一个程序。

这一行:

#include <gst/gst.h>
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    GstElement *element;
    GstElement *element1;
    GstElement *element2;
    GstElement *pipeline;

    gst_init(&argc, &argv);

    if(argc != 2)
    {
        g_print("usage: %s argv[1] \n", argv[0]);

        exit(EXIT_FAILURE);
    }

    /* Creating a new pipeline */
    pipeline = gst_pipeline_new("pipeline");

    /* creating a new *.mp3 source element */
    element = gst_element_factory_make("filesrc", "source");
    if(element != NULL)
        g_object_set(G_OBJECT(element), "location", argv[1], NULL);
    else
    {
        g_print("Failed to create element \n");
        exit(EXIT_FAILURE);
    }

    /* creating a new *.mp3 de-coder element */
    element1 = gst_element_factory_make("decodebin2", "decoder");
    if(element1 != NULL)
        g_print("element1 success \n");
    else
    {
        g_print("Failed to create element1 \n");
        exit(EXIT_FAILURE);
    }

    /* creating a new *.mp3 sink element */
    element2 = gst_element_factory_make("autoaudiosink", "play_audio");
    if(element2 != NULL)
        g_print("element2 success \n");
    else
    {
        g_print("Failed to create element2 \n");
        exit(EXIT_FAILURE);
    }

    /* Adding elements to pipeline */
    gst_bin_add_many(GST_BIN(pipeline), element, element1, element2, NULL);

    /* Linking src to sink element */
    gst_element_link_many(element, element1, element2, NULL);

    /* start playing */
    gst_element_set_state(GST_ELEMENT(pipeline), GST_STATE_PLAYING);

    while(gst_bin_iterate_recurse(GST_BIN(pipeline)));

    /* stop playing */
    gst_element_set_state(GST_ELEMENT(pipeline), GST_STATE_NULL);

    /* un-referencing all the elements in the pipeline */
    gst_object_unref(GST_OBJECT(pipeline));

    return 0;
}
没有任何意义。它在一个循环中,但不使用它,也不使用它


如果要等到播放结束,可能需要使用函数
gst\u bus\u have\u pending
gst\u bus\u pop
来处理消息。

什么是“无法播放音频文件”?代码的哪一部分似乎不起作用?你已经发布了几十行代码,主题可以简化为“播放MP3文件的gstreamer代码”和“无法播放音频文件。请告诉我有什么问题”。如果您能告诉我们出了什么问题(如问题所在),我们会尽力帮助您解决问题。:-)gstreamer插件编写器指南有完整的代码来解码mp3文件。还可以使用--gst debug=*:5--gst debug no color运行程序以获取gst日志。圣诞快乐:)。谢谢Wimmel。我使用了GstBus功能,现在可以正常工作了。
while(gst_bin_iterate_recurse(GST_BIN(pipeline)));