- 浏览: 300242 次
- 性别:
- 来自: 广州
文章分类
/* 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, µ, &nano); if (nano == 1) nano_str = "(CVS)"; else if (nano == 2) nano_s
发表评论
-
研华推出基于Freescale i.MX53的ARM核心板
2012-02-10 13:36 1103http://www.eepw.com.cn/article/ ... -
crc
2011-12-15 09:45 1163#include <stdio.h> ... -
gm8120
2011-12-06 20:37 0GM8120 -
core dump
2011-12-05 16:34 918示例程序test.c void dummy_funct ... -
linux print stack trace
2011-12-05 14:04 1061#include <execinfo ... -
I2C bus glue for Cirrus EP93xx
2011-07-26 11:44 1273转自 http://arm.cirrus.com/f ... -
ramdisk
2011-07-26 10:32 8621. download ramdisk.gz 2. g ... -
boa
2011-07-26 10:29 1028compile boa 1. ./configu ... -
Linux下单网卡绑定多IP与多网卡共用单IP
2011-07-20 09:46 1050在Linux下有时候需要给一个网卡绑定多个IP,本文介绍在Re ... -
实战Ubuntu下单网卡绑定多IP
2011-07-20 09:45 1025常常我们有需要一个网卡象windows一样设置多个IP。 ... -
修改环境变量
2011-04-26 16:49 954gedit ~/.bash_profile ... -
编译JVM
2011-04-26 16:12 1075OS: CentOS5.5 notice: remove j ... -
linux 组播支持
2011-04-20 11:42 1023route add -net 224.0.0.0 netmas ... -
POSIX conformance testing by UNIFIX
2011-04-16 21:39 764换了编译器重新编译内核,启动出现POSIX confo ... -
安装glib
2011-04-16 21:38 927./configure --prefix=/usr & ... -
shine
2011-04-16 21:36 10701. /mnt/nfs # time ./shin ... -
交叉编译QT
2011-04-16 21:34 1446// 下载文件 qt-x11-opensource- ... -
sudo
2011-04-16 21:30 8501. su - 2. visudo /etc/ ... -
Unable to find the Ncurses libraries
2011-04-16 21:29 1041用make menuconfig时出现错误: Una ... -
用execl实现静态ip地址
2011-04-16 21:28 917#include <stdio.h> #i ...
相关推荐
本篇文章将详细探讨如何在Linux系统上安装GStreamer以及如何配置它来播放MP3文件。 首先,为了在Linux上安装GStreamer,你需要确保你的系统已经安装了必要的依赖项。在Ubuntu或Debian系统中,可以使用`apt-get`命令...
在本项目“gstreamer-nvdec-player”中,重点是利用NVIDIA的硬件解码器(NVDEC)来提高视频播放性能,尤其是对于高清和4K内容。NVDEC是NVIDIA GPU内建的一种硬件加速功能,能够有效地解码H.264、HEVC等现代视频编码...
在Ubuntu 10.10操作系统上安装GStreamer以及处理MP3文件是开发者进行多媒体应用开发的基础步骤。以下是一份详细的安装指南和简单MP3处理的知识点。 ### 1. 安装GStreamer组件 在Ubuntu上安装GStreamer及其插件,你...
'GStreamer编写一个简单的MP3播放器',doc_type,pdf 'GStreamer编写一个简单的MP3播放器',doc_type,pdf 'GStreamer编写一个简单的MP3播放器',doc_type,pdf 开发文档
Gstreamer 测试udpsink udpsrc播放mp3文件 Gstreamer 是一个基于pipes和filters的多媒体处理框架,可以实现音频和视频的捕获、处理和播放。 udpsink 和 udpsrc 是Gstreamer 中的两种元素,分别用于UDP 传输音频数据...
### 基于gstreamer的MP3播放器开发 #### 概述 GStreamer作为一款功能强大的开源多媒体框架,在多媒体领域中具有重要的地位。它不仅简化了多媒体应用程序的开发流程,还通过其灵活的插件系统使得开发者可以根据具体...
根据提供的文档信息,本文将对"GStreamer_Command-Line_Player_Application_Specification.pdf"这一文档的关键知识点进行解析,重点围绕标题、描述、标签以及部分文本内容展开。 ### GStreamer 命令行播放器应用...
"gstreamer-plugins-ugly" 是 GStreamer 插件集合的一部分,专门用于处理可能不那么常见或者有版权争议的媒体格式,比如 MP3 音频编码。 MP3(MPEG-1 Audio Layer III)是一种广泛使用的音频压缩格式,它通过丢弃人...
GStreamer中文开发手册 GStreamer 是一个基于管道的多媒体框架,使用 C 语言编写,基于 GObject 的类型系统。GStreamer 允许您创建各种媒体处理组件,包括简单的音频播放、音频和视频播放、录制、流媒体和编辑。...
3. **加载MP3文件**:使用GStreamer的文件源插件读取MP3文件内容,并将其推入播放管道。 4. **控制播放**:通过GStreamer API发送命令到管道,如播放、暂停、停止等。 5. **UI与GStreamer同步**:更新GTK+界面的控件...
Gstreamer Player是一款基于Gstreamer框架开发的开源媒体播放器。Gstreamer是一个强大的、模块化的多媒体处理框架,广泛应用于各种操作系统,包括Linux、Windows和macOS。它允许开发者构建复杂的多媒体处理管道,...
在Linux系统下安装GStreamer环境是一项对于多媒体应用开发者而言至关重要的技能。GStreamer是一个开源的媒体框架,用于构建音视频应用程序,它提供了丰富的插件集合,可以处理多种媒体格式和编码方式。以下是从给定...
gstreamer源码
GStreamer并不受限于音频和视频处理,它能够处理任意类型的数据流,因此任意一种流媒体应用都可以支持,如:MeidaPlayer、A/V Editor、VOIP、RTSP、A/V Coder等等。 GStreamer框架是基于插件(plugin)和管道...
Gstreamer示例这是有用的通用gstreamer(1.x)使用示例的集合。用法准备Python代码使用OpenCV( cv2 ),numpy和gstreamer绑定(GObject-introspection)。运行代码您将找到以下示例: 名称描述test_gst_appsrc_...
【Qt+gstreamer 视频播放器】 在软件开发领域,Qt是一个广泛使用的C++图形用户界面应用程序框架,而GStreamer则是一个强大的多媒体处理框架。这个“Qt+gstreamer 视频播放器”项目结合了两者的优势,提供了一个功能...
在Android平台上进行多媒体处理时,有时需要利用开源的Gstreamer框架和gst-rtsp-server来实现复杂的流媒体服务。Gstreamer是一个强大的、模块化的多媒体处理库,而gst-rtsp-server则提供了RTSP(Real Time Streaming...
Linux下的Gstreamer是一款强大的多媒体框架,用于处理音频和视频流。它提供了模块化的组件,使得开发者能够构建复杂的媒体处理管道。Gstreamer的核心概念是通过连接一系列插件(plugins)来实现媒体的编码、解码、...
1. Media Applications:最上面一层为应用,比如 gstreamer 自带的一些工具(gst-launch,gst-inspect 等),以及基于 gstreamer 封装的库(gst-player,gst-rtsp-server,gst-editing-services 等)。 2. Core ...
在本文中,我们将深入探讨GStreamer框架中的`appsrc`元素以及如何利用它来处理H264编码的图像。GStreamer是一个强大的、模块化的多媒体处理框架,它允许开发者构建复杂的多媒体管道,用于处理音频、视频和其他类型的...