Python3.10.1 / Windows10 に PyAudio をインストールする

必要なもの:
Microsoft Visual Studio 統合環境

https://github.com/intxcc/pyaudio_portaudio/releases
PyAudio 3.7用 Source code (zip)

ソースコードを展開し、Visual Studio から
\pyaudio_portaudio\pyaudio\portaudio-v19\build\msvc\portaudio.sln
を開き、構成:Release、プラットフォーム:x64 でコンパイル。
うまく行けば、
\portaudio-v19\build\msvc\x64\Release\portaudio.lib
が出来る。過去に作ったことがあるなら、それを持ってきても良い。
あとは \pyaudio_portaudio\pyaudio に戻り、
python.exe .\setup.py install --static-link
とすればインストール完了。

warning message:
Anaconda3\envs\py3.10.1\include\pyconfig.h(117): warning C4005: 'MS_WIN64': マクロが再定義されました。

pyaudio_portaudio\pyaudio\setup.py(74)の
        defines.append(('MS_WIN64', '1'))
を、
        defines.append(('MS_WIN64', 'True'))
に変更。 src/_portaudiomodule.c(2314): warning C4996: 'PyEval_InitThreads': deprecated in 3.9 PyEval_InitThreads() は 3.9 から非推奨、3.11 で廃止なので、Py_Initialize() に書き換え。 https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyaudio ここがよく紹介されてるけど、input = True にすると、 OSError: [Errno -9998] Invalid number of channels とエラーがでてうまく動かない…

Python + OpenCV + CUDA

Python(3.7.3) + OpenCV(4.1.0) + CUDA(10.1) を Visual Studio 2019 で作ったが、

(base) C:\python>python.exe -c "import cv2; print(cv2.__version__)"

Traceback (most recent call last):
  File "", line 1, in 
  File "C:\Anaconda3\lib\site-packages\cv2\__init__.py", line 89, in 
    bootstrap()
  File "C:\Anaconda3\lib\site-packages\cv2\__init__.py", line 79, in bootstrap
    import cv2
ImportError: DLL load failed: 指定されたモジュールが見つかりません。

なかなか気付かずに、いろいろ試してみたが、
dumpbin.exe /DEPENDENTS cv2.cp37-win_amd64.pyd

原因は CUDA(10.1) のパスが通ってない。いつものこと。
path = %PATH%;C:\CUDA\10.1\bin


これで OpneCV から直接GPUエンコードが出来る!

out_image = cv2.cudacodec.createVideoWriter(cap, (width, height), FPS)
>> error: (-213:The function/feature is not implemented)

まだ当面 ffmpeg + pipe でやるしかないのね…