ubuntu下 gstreamer 的配置及播放音视频例子

官方网址:http://gstreamer.freedesktop.org

Gstreamer安装:

使用sudo apt-get install 安装

sudo apt-get install libgstreamer0.10-dev gstreamer-tools gstreamer0.10-tools gstreamer0.10-doc

sudo apt-get install gstreamer0.10-plugins-base gstreamer0.10-plugins-good gstreamer0.10-plugins-ugly gstreamer0.10-plugins-bad gstreamer0.10-plugins-bad-multiverse

安装了如下的gst的插件:

gstreamer0.10-tools

gstreamer0.10-x

gstreamer0.10-plugins-base

gstreamer0.10-plugins-good

gstreamer0.10-plugins-ugly

gstreamer0.10-plugins-bad

gstreamer0.10-ffmpeg

gstreamer0.10-alsa

gstreamer0.10-schroedinger

gstreamer0.10-pulseaudio

有可能需要安装的软件:

sudo apt-get install bison

sudo apt-get install flex

sudo
apt-get install zlib1g

mad解码插件

apt-get
install libmad0-dev

apt-get
install gstreamer0.10-plugins-ugly

Initializing GStreamer

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

int main (int   argc,   char *argv[])
{
  const gchar *nano_str;
  guint major, minor, micro, nano;

  gst_init (&argc, &argv);

  gst_version (&major, &minor, µ, &nano);

  if (nano == 1)
    nano_str = "(CVS)";
  else if (nano == 2)
    nano_str = "(Prerelease)";
  else
    nano_str = "";

  printf ("This program is linked against GStreamer %d.%d.%d %s\n",
          major, minor, micro, nano_str);

  return 0;
}
#include <gst/gst.h>
#include <glib.h>
//定义消息处理函数,
static gboolean bus_call(GstBus *bus,GstMessage *msg,gpointer data)
{
    GMainLoop *loop = (GMainLoop *) data;//这个是主循环的指针,在接受EOS消息时退出循环
    switch (GST_MESSAGE_TYPE(msg))
    {
        case GST_MESSAGE_EOS:
            g_print("End of stream\n");
            g_main_loop_quit(loop);
            break;
        case GST_MESSAGE_ERROR:
        {
               gchar *debug;
               GError *error;
               gst_message_parse_error(msg,&error,&debug);
               g_free(debug);
               g_printerr("ERROR:%s\n",error->message);
               g_error_free(error);
               g_main_loop_quit(loop);

                break;
        }
        default:
             break;
    }
    return TRUE;
}

int main(int argc,char *argv[])
{
    GMainLoop *loop;
    GstElement *pipeline,*source,*decoder,*sink;//定义组件
    GstBus *bus;

    gst_init(&argc,&argv);
    loop = g_main_loop_new(NULL,FALSE);//创建主循环,在执行 g_main_loop_run后正式开始循环

    if(argc != 2)
    {
        g_printerr("Usage:%s <mp3 filename>\n",argv[0]);
        return -1;
    }
    //创建管道和组件
    pipeline = gst_pipeline_new("audio-player");
    source = gst_element_factory_make("filesrc","file-source");
    decoder = gst_element_factory_make("mad","mad-decoder");
    sink = gst_element_factory_make("autoaudiosink","audio-output");

    if(!pipeline||!source||!decoder||!sink){
        g_printerr("One element could not be created.Exiting.\n");
        return -1;
    }
    //设置 source的location 参数。即 文件地址.
    g_object_set(G_OBJECT(source),"location",argv[1],NULL);
    //得到 管道的消息总线
    bus = gst_pipeline_get_bus(GST_PIPELINE(pipeline));
   //添加消息监视器
    gst_bus_add_watch(bus,bus_call,loop);
    gst_object_unref(bus);
    //把组件添加到管道中.管道是一个特殊的组件,可以更好的让数据流动
    gst_bin_add_many(GST_BIN(pipeline),source,decoder,sink,NULL);
   //依次连接组件
   gst_element_link_many(source,decoder,sink,NULL);
   //开始播放
    gst_element_set_state(pipeline,GST_STATE_PLAYING);
    g_print("Running\n");
    //开始循环
    g_main_loop_run(loop);
    g_print("Returned,stopping playback\n");
    gst_element_set_state(pipeline,GST_STATE_NULL);
    gst_object_unref(GST_OBJECT(pipeline));
    return 0;
}

编译运行

gcc -Wall test2.c -o test2  $(pkg-config --cflags --libs gstreamer-0.10)

(注意!!!很多地方写的这条命令 :gcc -Wall $(pkg-config --cflags --libs gstreamer-0.10) -g test2.c -o test2
,根本编译不过!)

./test2  ./abc.mp3

播放视频:

Ubuntu 12.04
gst-launch-0.10 filesrc location=/tmp/video_stream_pipe ! decodebin ! ffmpegcolorspace ! videoscale ! ximagesink sync=false
Ubuntu
13.10
gst-launch-1.0 filesrc location=/tmp/video_stream_pipe ! decodebin ! videoconvert ! xvimagesink sync=false
gst-launch-1.0 filesrc location=/tmp/video_stream_pipe ! decodebin ! videoconvert ! ximagesink sync=false
时间: 2024-07-30 16:30:52

ubuntu下 gstreamer 的配置及播放音视频例子的相关文章

(转载)关于ubuntu下java环境配置及其运行

转载地址:http://blog.sina.com.cn/s/blog_6730a3aa0100vsiy.html 其实不需要怎么配置,直接到ubuntu软件中心里面搜jre就行了,安装上. 在终端输入:sudo apt-get install openjdk-6-jdk 再在ubuntu软件中心里面搜索eclipse下载安装即可. 不安装eclipse也行,不过运行什么的都要在终端了..... 下面就运行试试: 1.直接终端运行: 在桌面建立一个文本文档命名为test.java,使用其他编辑器

Ubuntu下sqlite3的配置与使用(以后会说到Ubuntu下C++数据库应用开发程序(窗体程序))

/***************************************************************  * Name:      CaculatorMain.h  * Purpose:   Defines Application Frame  * Author:    zhangaihua ([email protected])  * Created:   2013-12-25  * Copyright: zhangaihua (http://blog.csdn.ne

ubuntu下SVN服务器安装配置

ubuntu下SVN服务器安装配置 1.安装包 sudo apt-get install subversion 2.添加svn管理用户及subversion组 $ sudo adduser svnuser 添加用户 $ sudo addgroup subversion 添加用户组 $ sudo addgroup svnuser subversion 将用户加入到组 3.创建项目目录 sudo mkdir /home/svn 创建文件 cd /home/svn sudo mkdir myproje

Ubuntu下libvirt kvm配置

环境: ubuntu 12.04 server 1.kvm的安装 首先检查你的处理器是否支持硬件虚拟化:如果支持,下面这个命令 egrep '(vmx|svm)' --color=always   /proc/cpuinfo 应该会显示类似下面这样的内容: [email protected]ubuntu:~# egrep '(vmx|svm)' --color=always /proc/cpuinfo flags           : fpu vme de pse tsc msr pae mc

ubuntu 下初步安装配置apache2

linux下安装配置apache server.(非管理员命令,顾在绝大部分命令前加:sudo) 先是尝试了一下,直接命令行下,敲入命令: sudo apt-get install apache2 就能安装.去到官网,说可以直接下载源码编译安装的.但是这里没有尝试(因为已经用apt装好啦-). 用apt安装好的apache,默认将配置文件放在/etc/apache2/ 下. http页面默认放在/var/www/ 下. 启动停止脚本为: /etc/init.d/apache2 因此: 启动命令为

window和ubuntu下安装JDK配置环境变量

JDK的环境变量的安装,记录一下,以便方便忘记看,主要是window和ubuntu系统下的安装和环境变量的配置 JDK下载:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html 下载对应系统的JDK 一.Window下安装JDK配置环境: 安装很简单,选择存放目录就行,基本上一直next. 配置环境变量: 在系统环境下配置如下: 新建  JAVA_HOME C:\Program Fi

ubuntu下apache2 安装 配置 卸载 CGI设置 SSL设置

一.安装.卸载apache2 apache2可直接用命令安装 sudo apt-get install apache2 卸载比较麻烦,必须卸干净,否则会影响apache2再安装 (1) sudo apt-get --purge remove apache2 sudo apt-get --purge remove apache2.2-common sudo apt-get autoremove (2) (关键一步)找到没有删除掉的配置文件,一并删除 sudo find  /etc -name "*

ubuntu下MySQL安装配置及基本操作

在linux下安装方法: 分为四种:一: 直接用软件仓库自动安装(如:ubuntu下,sudo apt-get install mysql-server; Debain下用yum安装): 二:官网下载deb或rmp安装包,直接双击安装: 三:下载tar安装包,解压到硬盘,然后自己配置mysql: 四:源码编译安装(下载mysql源代码自己编译安装). 前两种不需要自己配置,安装简单:后两种需自行配置文件,需要对mysql较为熟练.主要讲下第三种. 由于MySQL依赖libaio1包,所以先安装l

解决ubuntu下的firefox无法在线播放音频和视频的问题

一贯无视 Linux 平台的腾讯(无贬义)理所当然地没有开发QQ音乐Linux版,于是想尝试QQ音乐网页版,结果发现歌曲无法播放.刚开始以为是腾讯还在网页版上用万恶的 Windows Media Player 插件,但是随即发现 Firefox 插件列表里 WMP 赫然在列,于是排除.尝试更换到 Chrome 下访问QQ音乐播放毫无压力,呵呵,尼玛坑我呢.切换回Firefox,祭出开发者工具,查看控制台log的发现了症结——“Content Type”中的“Audio/mp4”不支持.腾讯原来已