码迷,mamicode.com
首页 > 其他好文 > 详细

pymedia初步体验

时间:2014-06-03 03:06:11      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:c   style   a   int   文件   set   

学习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


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

pymedia初步体验,布布扣,bubuko.com

pymedia初步体验

标签:c   style   a   int   文件   set   

原文地址:http://blog.csdn.net/zlf_jack/article/details/27555301

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!