OpenCV で動画を作成し、Twitterに動画を投稿しようとすると、「一部の画像/動画をアップロードできません。」のエラーが発生する。
fourcc = cv2.VideoWriter_fourcc(* ‘mp4v’)
ではなく、次のように h264 コーデックを使用する。
fourcc = cv2.VideoWriter_fourcc(* ‘h264’)
Blog of aiharasoft.com
OpenCV で動画を作成し、Twitterに動画を投稿しようとすると、「一部の画像/動画をアップロードできません。」のエラーが発生する。
fourcc = cv2.VideoWriter_fourcc(* ‘mp4v’)
ではなく、次のように h264 コーデックを使用する。
fourcc = cv2.VideoWriter_fourcc(* ‘h264’)
https://www.366service.com/jp/qa/ad87eecb1989830886612272067df0eb
It needs some changes.
macOS BigSur
Visual Studio Code
Python 3.8.5 64bit
$ pip install cv2
$ pip install pafy
import cv2 import pafy # Tokyo Station url = 'https://youtu.be/6YRUWrkV2R4' video = pafy.new(url) streams = video.streams for i in streams: print(i) # get best resolution regardless of format best = video.getbest() # start the video cap = cv2.VideoCapture(best.url) while (True): ret, frame = cap.read() cv2.imshow('frame', frame) if cv2.waitKey(20) & 0xFF == ord('q'): break cap.release() cv2.destroyAllWindows()
This video has been remixed from Chichi Live Camera photos by Python + OpenCV + Visual Studio Code on mac.
import os import time import datetime import urllib.error import urllib.request import cv2 def download_file(url, dst_path): try: with urllib.request.urlopen(url) as web_file: data = web_file.read() with open(dst_path, mode='wb') as local_file: local_file.write(data) except urllib.error.URLError as e: print(e) fourcc = cv2.VideoWriter_fourcc(* 'h264') fps = 10 out = cv2.VideoWriter('out.mp4', fourcc, fps, (H,V)) startTime = datetime.datetime(yyyy, mm, dd, HH, MM, SS) x = duration for interval in range(x): t = startTime + datetime.timedelta(minutes=interval) print(datetime.datetime.strftime(t, "/%Y%m%d/%H%M%S.jpg")) tstr = datetime.datetime.strftime(t, "/%Y%m%d/%H%M%S.jpg") url = 'https://*********' + tstr dst_path = datetime.datetime.strftime(t, "images/%Y%m%d%H%M%S.jpg") if os.path.exists(dst_path): print("skip") else: download_file(url, dst_path) time.sleep(10) # Don't rush to img = cv2.imread(dst_path, cv2.IMREAD_COLOR) # 画像の大きさを取得 # height, width, channels = img.shape[:3] # print("width: " + str(width)) # print("height: " + str(height)) out.write(img) out.release()
You can find out beautiful photos of Chichibu Live camera from here.
https://navi.city.chichibu.lg.jp/cloudview/
Chichibu is also famous for the animation “Anohana: The Flower We Saw That Day“. It was on air in 2011, but still may anime fans are visiting Chichibu, the place of anime scenes.
macOS Catalina 10.15.6
OpenCV
Python 3.8
import cv2 RATE = 30 cap = cv2.VideoCapture(0) w = cap.get(cv2.CAP_PROP_FRAME_WIDTH) h = cap.get(cv2.CAP_PROP_FRAME_HEIGHT) fps = cap.get(cv2.CAP_PROP_FPS) fourcc = cv2.VideoWriter_fourcc(*'h264') out = cv2.VideoWriter('out.mp4', fourcc, fps, (int(w), int(h))) count = RATE while True: ret, frame = cap.read() if ret == True: if count == 0: out.write(frame) count = RATE count -= 1 cv2.imshow('frame', frame) keyboard = cv2.waitKey(30) if keyboard == 27: break else: break cap.release() out.release() cv2.destroyAllWindows()
mac OSで、Visual Studio Code で、次のコードを実行すると、クラッシュする。
import cv2
cap = cv2.VideoCapture(0) # ここで、Pythonがクラッシュする。
…
Mac OS: Catalina 10.15.6
Visual Studio Code: 1.48.2
Python 3.8.4
クラッシュレポートを見ると、次のようになっていて、
Crashed Thread: 1 Dispatch queue: com.apple.root.default-qos
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFY
…
Thread 1 Crashed:: Dispatch queue: com.apple.root.default-qos
…
0x00007fff71fb4411 abort_with_payload + 9 3 com.apple.TCC 0x00007fff6868559f __CRASHING_DUE_TO_PRIVACY_VIOLATION + 163
4 com.apple.TCC 0x00007fff68683531 __TCCAccessRequest_block_invoke.114 + 500
…
CRASHING_DUE_TO_PRIVACY_VIOLATION
macOS 10.15 Catalinaでは「User Consent」がさらに強化され、アプリがスクリーンキャプチャの撮影や書類、ダウンロードフォルダへのアクセスする際にユーザーの承認が必要に。
Visual Studio Code が Python を実行する段階で、Permission を取得していないのが原因と思われる。
調べた限りでは、解決策は見つからず、次のワークアラウンドしかない。
コマンドラインから、sudo で Visual Studio Codeを起動する。
$ sudo /Applications/Visual\ Studio\ Code.app/Contents/MacOS/Electron
sudo /bin/bash でターミナルを起動し、Python を起動し、直接 実行する。
2020/7/22 時点の情報です。
OpenCV をインストールするためにまず Homebrew をインストールする。
Visual Studio Code on Mac にしたがって、Visual Studio Code をインストールする。
Getting Started with Python in VS Code にしたがって、Python の環境をセットアップする。
$brew install opencv を実行する。
pip3 install opencv-python を実行する。
cv2 に対して、pylint エラーが表示される。
この対応としては、メニューから、[Code] -> [Preferences] -> [Settings]
Python > Linting : Pylint Argsに
–extension-pkg-whitelist=cv2
を追加する。
メニューから、[Code] -> [Preferences] -> [Settings]
Editor: Format On Save、 にチェックを入れると、autopep8 をインストールするかと聞いてくるので、インストールする。
これで、セーブ時に自動フォーマットしてくれるようになる。