`

gstreamer example for mp3 player

CVS 
阅读更多

 

/* playmp3.c */
#include <gst/gst.h>
#include <unistd.h>

void show_version(void);

int main(int argc, char *argv[]) {
	GstElement *pipeline, *filesrc, *decoder, *conv, *audiosink;
	gchar *name;
	GstElementFactory *factory;
	GstState *state;
	gchar *status;
	
	gst_init(&argc, &argv);
	show_version();

	if (argc != 2) {
		g_print("usage: %s <filename>\n", argv[0]);
		return -1;
	}

	/* 创建一条新的管道 */
	pipeline = gst_pipeline_new("pipeline");

	/* 生成用于读取硬盘数据的元件 */
	filesrc = gst_element_factory_make("filesrc", "file-source");
	g_object_set(G_OBJECT(filesrc), "location", argv[1], NULL);
	
	/* get name */
  	g_object_get (G_OBJECT (filesrc), "name", &name, NULL);
  	g_print ("The name of the element is '%s'.\n", name);
  	g_free (name);
  	
  	/* get factory */
  	factory = gst_element_factory_find ("filesrc");
  	if (!factory) {
    	g_print ("You don't have the 'filesrc' element installed!\n");
    	return -1;
  	}
  	
  	/* display information */
  	g_print ("The '%s' element is a member of the category %s.\n"
           "Description: %s\n",
           gst_plugin_feature_get_name (GST_PLUGIN_FEATURE (factory)),
           gst_element_factory_get_klass (factory),
           gst_element_factory_get_description (factory));
	
	/* 创建解码器元件 */
	//	decoder = gst_element_factory_make ("wavparse", "wav-decoder");
	decoder = gst_element_factory_make("mad", "mad-decoder");

	conv = gst_element_factory_make("audioconvert", "converter");

	/* 创建音频回放元件 */
	audiosink = gst_element_factory_make("autoaudiosink", "audio-output");

	if (!pipeline || !filesrc || !decoder || !conv || !audiosink) {
		g_print("One element could not be created\n");
		g_print("%p %p %p %p %p\n", pipeline, filesrc, decoder, conv, audiosink);
		return -1;
	}

	/* 将生成的元件添加到管道中 */
	gst_bin_add_many(GST_BIN(pipeline), filesrc, decoder, conv, audiosink, NULL);

	/* 连接各个元件 */
	if (!gst_element_link_many(filesrc, decoder, conv, audiosink, NULL)) {
		g_warning("Failed to link elements!");
		return -1;
	}

	/* 开始播放 */
	gst_element_set_state(pipeline, GST_STATE_PLAYING);
	
	gst_element_get_state (pipeline, state, NULL, 1000);
		switch (*state) {
			case GST_STATE_VOID_PENDING:
				status = "VOID_PENDING";
				break;
  			case GST_STATE_NULL:
  				status = "NULL";
				break;
  			case GST_STATE_READY:
  				status = "READY";
				break;
  			case GST_STATE_PAUSED:
  				status = "PAUSED";
				break;
  			case GST_STATE_PLAYING:
  				status = "PLAYING";
				break;
			default:
				status = "UNKNOWN";
				break;
		}
		g_print("\rpipeline status: %s", status);
	while (gst_bin_iterate_recurse(GST_BIN(pipeline))) {
		usleep(100);
	}

	gst_element_get_state (pipeline, state, NULL, 1000);
		switch (*state) {
			case GST_STATE_VOID_PENDING:
				status = "VOID_PENDING";
				break;
  			case GST_STATE_NULL:
  				status = "NULL";
				break;
  			case GST_STATE_READY:
  				status = "READY";
				break;
  			case GST_STATE_PAUSED:
  				status = "PAUSED";
				break;
  			case GST_STATE_PLAYING:
  				status = "PLAYING";
				break;
			default:
				status = "UNKNOWN";
				break;
		}
		g_print("\rpipeline status: %s", status);
		
	/* 停止管道处理流程 */
	gst_element_set_state(pipeline, GST_STATE_NULL);

	/* 释放占用的资源 */
	gst_object_unref(GST_OBJECT(pipeline));

	return 0;
}

void show_version(void) {
	const gchar *nano_str;
	guint major, minor, micro, nano;

	gst_version(&major, &minor, &micro, &nano);
	if (nano == 1)
		nano_str = "(CVS)";
	else if (nano == 2)
		nano_s
分享到:
评论

相关推荐

    gstreamer安装和MP3的播放

    本篇文章将详细探讨如何在Linux系统上安装GStreamer以及如何配置它来播放MP3文件。 首先,为了在Linux上安装GStreamer,你需要确保你的系统已经安装了必要的依赖项。在Ubuntu或Debian系统中,可以使用`apt-get`命令...

    gstreamer-nvdec-player

    在本项目“gstreamer-nvdec-player”中,重点是利用NVIDIA的硬件解码器(NVDEC)来提高视频播放性能,尤其是对于高清和4K内容。NVDEC是NVIDIA GPU内建的一种硬件加速功能,能够有效地解码H.264、HEVC等现代视频编码...

    Gstreamer安装及MP3.doc

    在Ubuntu 10.10操作系统上安装GStreamer以及处理MP3文件是开发者进行多媒体应用开发的基础步骤。以下是一份详细的安装指南和简单MP3处理的知识点。 ### 1. 安装GStreamer组件 在Ubuntu上安装GStreamer及其插件,你...

    'GStreamer编写一个简单的MP3播放器',pdf

    'GStreamer编写一个简单的MP3播放器',doc_type,pdf 'GStreamer编写一个简单的MP3播放器',doc_type,pdf 'GStreamer编写一个简单的MP3播放器',doc_type,pdf 开发文档

    Gstreamer 测试udpsink udpsrc播放mp3文件

    Gstreamer 测试udpsink udpsrc播放mp3文件 Gstreamer 是一个基于pipes和filters的多媒体处理框架,可以实现音频和视频的捕获、处理和播放。 udpsink 和 udpsrc 是Gstreamer 中的两种元素,分别用于UDP 传输音频数据...

    基于gstreamer的MP3播放器开发

    ### 基于gstreamer的MP3播放器开发 #### 概述 GStreamer作为一款功能强大的开源多媒体框架,在多媒体领域中具有重要的地位。它不仅简化了多媒体应用程序的开发流程,还通过其灵活的插件系统使得开发者可以根据具体...

    GStreamer_Command-Line_Player_Application_Specification.pdf

    根据提供的文档信息,本文将对"GStreamer_Command-Line_Player_Application_Specification.pdf"这一文档的关键知识点进行解析,重点围绕标题、描述、标签以及部分文本内容展开。 ### GStreamer 命令行播放器应用...

    gstreamer-plugins-ugly

    "gstreamer-plugins-ugly" 是 GStreamer 插件集合的一部分,专门用于处理可能不那么常见或者有版权争议的媒体格式,比如 MP3 音频编码。 MP3(MPEG-1 Audio Layer III)是一种广泛使用的音频压缩格式,它通过丢弃人...

    GStreamer中文开发手册

    GStreamer中文开发手册 GStreamer 是一个基于管道的多媒体框架,使用 C 语言编写,基于 GObject 的类型系统。GStreamer 允许您创建各种媒体处理组件,包括简单的音频播放、音频和视频播放、录制、流媒体和编辑。...

    GTK+GStreamer MP3播放器源代码

    3. **加载MP3文件**:使用GStreamer的文件源插件读取MP3文件内容,并将其推入播放管道。 4. **控制播放**:通过GStreamer API发送命令到管道,如播放、暂停、停止等。 5. **UI与GStreamer同步**:更新GTK+界面的控件...

    Gstreamer Player-开源

    Gstreamer Player是一款基于Gstreamer框架开发的开源媒体播放器。Gstreamer是一个强大的、模块化的多媒体处理框架,广泛应用于各种操作系统,包括Linux、Windows和macOS。它允许开发者构建复杂的多媒体处理管道,...

    Linux系统下安装gstreamer环境

    在Linux系统下安装GStreamer环境是一项对于多媒体应用开发者而言至关重要的技能。GStreamer是一个开源的媒体框架,用于构建音视频应用程序,它提供了丰富的插件集合,可以处理多种媒体格式和编码方式。以下是从给定...

    gstreamer源码

    gstreamer源码

    gstreamer-examples:杂项演示使用gstreamer的示例

    Gstreamer示例这是有用的通用gstreamer(1.x)使用​​示例的集合。用法准备Python代码使用OpenCV( cv2 ),numpy和gstreamer绑定(GObject-introspection)。运行代码您将找到以下示例: 名称描述test_gst_appsrc_...

    GStreamer中文开发手册.zip

    GStreamer并不受限于音频和视频处理,它能够处理任意类型的数据流,因此任意一种流媒体应用都可以支持,如:MeidaPlayer、A/V Editor、VOIP、RTSP、A/V Coder等等。 GStreamer框架是基于插件(plugin)和管道...

    移植Gstreamer 和gst-rtsp-server到Android实例

    在Android平台上进行多媒体处理时,有时需要利用开源的Gstreamer框架和gst-rtsp-server来实现复杂的流媒体服务。Gstreamer是一个强大的、模块化的多媒体处理库,而gst-rtsp-server则提供了RTSP(Real Time Streaming...

    Qt+gstreamer 视频播放器

    【Qt+gstreamer 视频播放器】 在软件开发领域,Qt是一个广泛使用的C++图形用户界面应用程序框架,而GStreamer则是一个强大的多媒体处理框架。这个“Qt+gstreamer 视频播放器”项目结合了两者的优势,提供了一个功能...

    linux下gstreamer高清解码器

    Linux下的Gstreamer是一款强大的多媒体框架,用于处理音频和视频流。它提供了模块化的组件,使得开发者能够构建复杂的媒体处理管道。Gstreamer的核心概念是通过连接一系列插件(plugins)来实现媒体的编码、解码、...

    GStreamer小白入门

    1. Media Applications:最上面一层为应用,比如 gstreamer 自带的一些工具(gst-launch,gst-inspect 等),以及基于 gstreamer 封装的库(gst-player,gst-rtsp-server,gst-editing-services 等)。 2. Core ...

    mips平台gstreamer交叉编译

    在MIPS平台上交叉编译GStreamer,是为了使GStreamer能够运行在非x86架构的硬件上。下面我们将详细探讨如何在MIPS平台上交叉编译GStreamer以及其依赖库。 首先,我们需要了解交叉编译的基本概念。交叉编译是指在一个...

Global site tag (gtag.js) - Google Analytics