經過前期的調研,我准備使用PyQT+PyAV+PyAudio+pillow。期間也嘗試過使用ffmpeg-python,但最后還是選擇了av這個更底層,自由度更大的庫來完成音視頻的處理。
========================
問題1,win= QWidget()執行為什么會失敗
答案: 在此之前,先要執行mapp = QApplication(sys.argv)
========================
問題2,為什么win.show()能啟動對話框,但是一直轉圈,卡住
答案:在此之后要執行sys.exit(mapp.exec_())
========================
問題3,為什么安裝Eric,總是遇到問題
答案:python的安裝路徑里,不要有中文。另外按照說明把python、pip以及pyQT的路徑加到環境變量PATH里
========================
問題4:Python3 多線程問題:ModuleNotFoundError: No module named 'thread'
答案: python3 導入thread報錯,把thread改為_thread就好了。比如:import _thread as thread
========================
問題5:為什么PIL庫老是安裝失敗?
答案:pil庫在python3下不支持,安裝pillow即可
========================
問題6:av庫安裝老是失敗
答案:先安裝conda,安裝方法見:
https://www.cnblogs.com/lsdb/p/9121033.html
然后用命令:
conda install av -c conda-forge
然后就能安裝成功
========================
問題7:“'module' object is not callable”提示是什么意思?
答案:此處錯誤提示我們命名程序文件名稱的時候注意避免和導入模塊名稱一樣
========================
問題8:用pyAudio播放Numpy的音頻數據卡頓?
答案:不能直接播放Numpy數據,而是要播放bytes的對象才行。
不能 stream.write(pcm)
而是 stream.write(pcm.tobytes())
這里的pcm是一個numpy對象
========================
問題9:用PyAV完成視頻解碼之后,如何完成視頻分辨率的轉換?
答案:用reformay函數來完成轉換,比如:
frame_show= VideoFrame.reformat(width=XShow_width, height=XShow_height)
也可以完成顏色空間的轉換
視頻播放器在github上的鏈接是:https://github.com/dongjiawei316/AV_player.git
