加载中…
个人资料
南冠彤
南冠彤
  • 博客等级:
  • 博客积分:0
  • 博客访问:411,581
  • 关注人气:59
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

[转载]开源编码器gstreamill的使用

(2014-03-13 15:41:17)
标签:

转载

分类: 音视频
简介

gstreamill是基于gstreamer(1.0)的开源编码器,可以通过http的post方法向gstreamill提交job,让gstreamill完成实时编码、转码、录制等工作。其中实时编码类型的job已经支持,其它类型的job尚未支持。job是json格式的描述文件,用于描述“job”的技术细节。本文的目的是为了让读者了解和使用gstreamill。

gstreamill的特性

  1. 基于gstreamer,可以利用gstreamer已有的plugin或者编写新的plugin实现对各种编码、封转及协议的支持。
  2. 支持多码率(由job描述文件决定码率个数),支持GOP对齐。
  3. 支持hls、http渐进下载以及udp等输出。
  4. 通过RESTful的接口进行管理,便于集成到运营商的系统中。
  5. 采用json格式的描述文件来描述要完成的工作 - job。
  6. 具体的编码、转码等在子进程中实现,支持故障重新启动。
  7. 通过gstreamer plugin支持丰富的输入源,比如Decklink SDI、v4l2类型的采集卡、UDP/RTP等。


应用

gstreamill典型的应用就是用于DVB/OTT网关:



与通常的编码器相比,最大的特点是可以通过管理接口对gstreamill发送job让它完成编码工作,这样可以比较容易实现编码集群,进而实现实时源的高可用方案。

安装

首先从https://github.com/zhangping/gstreamill下载gstreamill的源码,目前gstreamill只在ubuntu 13.10下进行过测试。要编译安装gstreamill,需要先安装如下软件包:
  • gnome-common
  • autoconf
  • automake
  • libtool
  • gstreamer-devel
  • gstreamer-plugins-base-devel
准备好后,进入源码目录执行如下命令安装: ./autogen.sh
 ./configure (--help)
 make
 make install
使用

运行 gstreamill -h命令可以看到gstreamill命令行的相关参数


不加任何参数直接运行gstreamill就启动了gstreamill:
gstreamill
停止gstreamill:
gstreamill -s
通过管理端口指令gstreamill执行job,默认管理端口是20118,可以在启动的时候指定管理端口,这里使用的是curl工具通过http post向gstreamill发指令的,在源码的examples目录下有job的事例,建议从test.job入手:
curl -H "Content-Type: application/json" --data @examples/test.job http://localhost:20118/start
在前台调试一个job:
gstreamill -j job_descript_file
播放输出可以采用vlc等播放器,对于examples/test.job,支持http渐进播放和m3u8播放,url为,注意http输出的默认端口是20119,可以在启动gstreamill的时候通过命令行参数指定:
http://localhost:20119/live/test/encoder/0
http://localhost:20119/live/test/playlist.m3u8
管理接口

启动一个job
curl -H "Content-Type: application/json" --data @examples/test.job http://localhost:20118/start
停止一个job
curl http://localhost:20118/stop/job_name
查询gstreamill状态
curl http://localhost:20118/stat/gstreamill curl http://localhost:20118/stat/gstreamill/livejob/test
输出接口

以下模式的输出接口均采用vlc进行了验证,注意,这里的job name是job文件中name的值

http
http://localhost:20119/live/job name/encoder/encoder_index
hls
http://localhost:20119/live/job name/playlist.m3u8

或者
http://localhost:20119/live/job name/encoder/encoder_index/playlist.m3u8
udp
udp://@ip:port
JOB文件编写

要编写job文件需要对gstreamer有必要的理解,请参照源码examples目录下的示例文件。

0

  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有