pymedia初步体验

学习python的时候突然想看看多媒体方面的开源库。

找到了pymedia。


下载后,编译:

python setup.py install <<< y


初步尝试了播放一个wav文件。

python aplayer.py /projects/media/test-org.wav 

很遗憾,播放失败,提示

  File "aplayer.py", line 72, in <module>
    aplayer( sys.argv[ 1 ], i, r, t )
  File "aplayer.py", line 47, in aplayer
    snd.play( data )

 Cannot play sound because of 0:


没办法,只好用SouceInsight建个工程,看看代码到底是怎么一回事。

与Play关联的有3个派生类,linux一般用alsa,估计是audio_alsa.h下的OSoundStream::Play

一看代码,感觉就有点不地道的感觉。

while(frames>0)
{
res = snd_pcm_writei(this->handle, buf, frames);

        ...

       frames -= res;

   }

危险点: res有可能比res大,buf位置没变化。

用printf确认,果然是这个原因。(到底是不是snd_pcm_writei问题还不是很清楚?这个设计的确很坑人)

简单修改如下:

if (res > 0) {
frames -= res;
if (frames < 0) frames = 0;
buf += res*this->framesize;
}


再编译,发现居然没clean功能,倒,搜寻了so位置,用如下方法再编译就能正常了。

rm -r -f build/*;python setup.py install <<< y


总体来说,这次体验让我对这个库的品质很是担心, 只能随便看看就删除了.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值