国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

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

瀏覽:115日期:2022-06-29 11:05:15

問(wèn)題描述

我想要頻繁地使用pyaudio來(lái)播放音頻,雖然他不是多線程模塊,但是只使用一個(gè)子線程播放,主線程控制播放的開(kāi)關(guān)應(yīng)該是沒(méi)有問(wèn)題的。但是當(dāng)我使用它播放時(shí)遇到了不能解決的麻煩。

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

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

這個(gè)問(wèn)題該如何解決?

暫時(shí)使用每次播放均重開(kāi)一個(gè)pyaudio.Pyaudio()對(duì)象的方式解決,這大概額外使用了cpu時(shí)間10ms。持續(xù)跑了將近20個(gè)小時(shí)沒(méi)出問(wèn)題。

...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()...

問(wèn)題解答

回答1:

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

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 日韩欧美毛片免费看播放 | 国产精品网址 | 日韩一级不卡 | 久久中精品中文 | 欧美成人免费观看 | 91精品人成在线观看 | 在线精品视频免费观看 | 国产在线观看午夜不卡 | 一级真人毛片 | 在线男人的天堂 | 亚洲更新 | 一区二三区国产 | 国产一区免费在线观看 | 国产三级香港在线观看 | www.亚洲视频| 手机看片久久青草福利盒子 | 成人久久在线 | 模特精品一区二区三区 | 国产成人综合亚洲 | 中文字幕一区二区在线观看 | 韩国一级毛片大全女教师 | 国产欧美日韩精品在线 | 97在线精品| 三级国产三级在线 | 欧美一级日韩一级亚洲一级 | 精品国产高清a毛片 | 日韩国产毛片 | 欧美一级性 | 精品国产综合区久久久久久 | 成人毛片网 | 日韩午夜在线视频 | 成人午夜看片 | 成年人视频在线观看免费 | 久久r这里只有精品 | 亚洲国产福利精品一区二区 | 香蕉久久综合精品首页 | 欧美成人性色xxxxx视频大 | 91精品视品在线播放 | 欧美成年人视频 | 欧美日本韩国一区二区 | 香港激情黄三级在线视频 |