Chinaunix首页 | 论坛 | 博客
  • 博客访问: 512893
  • 博文数量: 174
  • 博客积分: 8001
  • 博客等级: 中将
  • 技术积分: 1840
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-04 19:30
文章分类

全部博文(174)

文章存档

2011年(1)

2010年(24)

2009年(149)

我的朋友

分类: LINUX

2009-05-07 16:59:26

虽然对gstreamer还是不了解,但是感觉的确是个强大的东西!
且不说playbin这个强大的元素。就是自己写一个播放MP3的程序也是十分简单的东西。(之前自己用libmad和alsa从底层写起,花了很多时间——不过也是值得的,很多时候,高层的东西没有教会你一些基本的思想,例如linux系统的机制)用gstreamer只是写了几行代码——甚至代码都不用写,用脚本就可以了。
值得提醒的是,网上有些示例:
filesrc->mad->autoaudiosink
就可以播放MP3了。
但是我的机子上却有:
Internal data error的错误。
这个是内部数据流的格式问题。因为mad解码器输出的是24bit的PCM数据,而我的机子是用16bit声卡。解决这个问题很简单:
filesrc->mad->audioconvert->autoaudiosink
audioconvert会自己和autoaudiosink“协商”,把PCM转为16bit的。这样就可以正常播放了。
 
阅读(2510) | 评论(2) | 转发(0) |
0

上一篇:高层API

下一篇:重定位stderr

给主人留下些什么吧!~~

chinaunix网友2009-10-10 10:41:13

"filesrc->mad->audioconvert->autoaudiosink audioconvert会自己和autoaudiosink“协商”,把PCM转为16bit的。这样就可以正常播放了。" 具体是要自己编码吗?好象直接用命令gst-launch ! mad ! audioconvert ! audiosink 他不会转为16Bit

chinaunix网友2009-06-07 16:53:50

你好,mad插件是什么呀?请指点下, 我也是用的网上的代码, //创建管道和组件 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"); 可decoder总是为空,不知道缺的是哪个插件?mp3解码的插件叫什么名字呢?谢谢了