亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

更多QQ空间微信QQ好友腾讯朋友复制链接
您的位置:首頁/技術文章
文章詳情頁

python - pyaudio stream.close()導致程序崩潰且不能捕獲到異常

【字号: 作者:豬豬瀏覽:109日期:2022-06-29 11:05:15

問題描述

我想要頻繁地使用pyaudio來播放音頻,雖然他不是多線程模塊,但是只使用一個子線程播放,主線程控制播放的開關應該是沒有問題的。但是當我使用它播放時遇到了不能解決的麻煩。

import threadingimport waveimport pyaudioimport timepa=pyaudio.PyAudio()f=wave.open(’/home/dyan/catkin_ws/src/hlf_robot/scripts/hlf_voice/my.wav’,’rb’)raw_data=f.readframes(f.getnframes())f.close()samplewidth,channels,framerate,raw_data=2,1,16000,raw_datai=0stream1=’’def test(): while True:global i,pa,stream1try: print i stream1=pa.open(format=pa.get_format_from_width(samplewidth), channels=channels, rate=framerate, output=True) stream1.write(raw_data)i+=1 print iexcept IOError,e:print eexcept Exception,e:print ebreakt0=threading.Thread(target=test)t0.start()time.sleep(3)while True: if stream1.is_active():print 'is_active' else:print 'not active' if stream1.is_stopped():print 'is_stopped' else:print 'not stopped' print stream1._is_running print stream1._stream print ’123’ try:stream1.stop_stream()print ’456’stream1.close() except Exception,e:print ebreak print ’789’ time.sleep(3)

輸出是這樣的,然后崩了

0#子線程循環第一次is_active#not stopped #True #stream1._is_running<_portaudio.Stream object at 0x7efd71e00cb0> #stream1._stream123 #調用stop_stream()之前456 #調用stop_stream()之后,close()之前[Errno Unanticipated host error] -9999 #子線程捕獲到主線程調用stream1.stop_stream()時由stream1.write()拋出的異常IOError,忽略這個異常繼續執行0#子線程stream1.write()拋出異常i+=1未執行繼續循環在pa.open()之前的print

1、也就是說在調用stream1.stop_stream()后調用stream1.close()導致程序崩潰了,而且子線程和主線程都沒有捕獲到異常!!!!2、如果將stop_stream()后的close()注釋掉短時間內沒有任何問題,但是持續運行大約10分鐘左右雖然不會崩潰但是再也不能繼續播放。pa.open()一直拋出異常[Errno Illegal combination of I/O devices] -9993,當我關閉程序重啟時pa.open()會拋出異常(’Invalid sample rate’, -9997),播放用不了了!!!

這個問題該如何解決?

暫時使用每次播放均重開一個pyaudio.Pyaudio()對象的方式解決,這大概額外使用了cpu時間10ms。持續跑了將近20個小時沒出問題。

...try: self.pa=pyaudio.PyAudio()self.stream=self.pa.open(format=self.pa.get_format_from_width(samplewidth), channels=channels, rate=framerate, output=True) self.stream.write(raw_data)except IOError,e: passfinally: self.stream.close() self.pa.terminate()...

問題解答

回答1:

這裡給了一個可能解決方法(workaround),ghost commented on 30 Jul 2016

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 欧美一级亚洲一级 | 黑人性视频做爰全过程视频 | 一级在线观看视频 | 国产女同磨豆腐视频在线观看 | 国产黄色一级大片 | 五月天婷婷网站 | 国产一级做a爰片在线看 | 久久久窝窝午夜精品 | 日本另类xxxx| 国内自拍 在线播放 网红 | 国产日韩欧美不卡www | 国产一区二区播放 | 999久久久国产 | 中文字幕在线播放一区 | 四色婷婷婷婷色婷婷开心网 | 国产成人影视 | 日韩免费视频一区二区 | 久久精品国产清自在天天线 | 亚洲高清视频在线观看 | 国产做a视频免费观看 | 午夜拍拍福利视频蜜桃视频 | 韩国特黄毛片一级毛片免费 | 综合色久 | 黄色网页在线 | 亚洲欧美中文日韩二区一区 | 中文 国产 亚洲 喷潮 | 北岛玲视频在线观看 | 最新色图 | 黄页网站18以下禁止观看 | 久久在线观看免费视频 | 黄色免费三级 | 亚洲欧美在线一区二区 | 国产精品尹人在线观看免费 | 成人涩涩屋福利视频 | 亚洲线精品一区二区三区 | 日韩字幕无线乱码 | 91情侣在线偷精品国产 | 国产福利精品一区二区 | 日韩黄色在线视频 | 欧美黑人粗硬大在线看 | 不卡一区二区在线 |