OpenCV-python + piped FFMPEG 사용법

소개



안녕하세요 streampack 팀의 메디입니다.
htps : // c ぉ う ぱ ck. jp / 세 r ゔ ぃ 세 / 오 치온 / st 레아 mpa ck. HTML

Copyrights



빅 벅 버니
© copyright 2008, Blender Foundation | ㅋㅋㅋ 미세 g 부분 ck 분 y. 오 rg

Objective · 목적





Learn how to use OpenCV python with FFMPEG & VP8.
FFMPEG와 VP8에서 OpenCV 파이썬을 사용하는 방법을 배웁니다.

Requirements



FFMPEG must be installed on your system.
FFMPEG가 시스템에 설치되어 있어야 합니다.
On mac, you can run :
예를 들어, mac에서 :
brew install ffmpeg

OpenCV python installation · OpenCV python 설치


 pip3 install opencv-python

About OpenCV & codecs · OpenCV 및 코덱 정보



By default OpenCV is shipped with royalty free codecs only.
For using non free codecs, you can compile OpenCV yourself (which takes time) or you can pipe OpenCV with FFMPEG.
기본적으로 OpenCV에는 로열티가 없는 코덱만 있습니다.
자유롭지 않은 코덱을 사용하려면 OpenCV를 직접 컴파일하거나 (시간이 걸립니다) 또는 OpenCV를 FFMPEG로 파이프 할 수 있습니다.

Royalty free codecs · 로열티 프리 코덱





In this example we will use the VP8 codec.
이 예에서는 VP8 코덱을 사용합니다.

NB : OpenCV uses BGR color format.
참고 : OpenCV는 BGR 색상 형식을 사용합니다.

구현 및 구현


import cv2
import os
import time
import sys

# Don't forget to check the framerate of your input file !! You can check with : ffprobe yourFile.mp4

out = cv2.VideoWriter(
            "output.mkv", cv2.VideoWriter_fourcc(*'VP80'), 25.0,
            (720,400))

# The input file is located in the current working directory.
cap = cv2.VideoCapture(os.getcwd()+"/"+'Big_Buck_Bunny_Trailer_400p.ogv')

if (cap.isOpened()== False): 
  print("Error opening video stream or file")


while(cap.isOpened()):
  ret, frame = cap.read()
  if ret == True:

    # Do something with the frame...
    ts = time.time()
    cv2.putText(frame ,"Timestamp : " + str(ts), (15, 15),
                        cv2.FONT_HERSHEY_SIMPLEX, 0.45, (0, 255, 0), 2)

    out.write(frame)

    # Press Q on keyboard to  exit
    if cv2.waitKey(25) & 0xFF == ord('q'):
      break

  else: 
    break

 # Cleaning
out.release()
cap.release()
cv2.destroyAllWindows()

Standard Output (stdout) piped to FFMPEG & FFPLAY





NB : OpenCV uses BGR color format.
참고 : OpenCV는 BGR 색상 형식을 사용합니다.

Data from OpenCV to FFPLAY · OpenCV에서 FFPLAY로 데이터


python3 simple.py | ffplay -f rawvideo -pix_fmt bgr24 -s 720x400 -framerate 25 -i -

Data from OpenCV to FFMPEG · OpenCV에서 FFMPEG로 데이터



In this example we will use the libx264 encoder.
이 예에서는 libx264 인코더를 사용합니다.
python3 simple.py | ffmpeg  -f rawvideo -pix_fmt bgr24 -s 720x400 -framerate 25 -i - -c:v libx264 output.mp4

구현 및 구현


import cv2
import os
import time
import sys

# Don't forget to check resolution & framerate !! You can check with : ffprobe yourFile.mp4

# Simple playback
# python3 simple.py | ffplay -f rawvideo -pix_fmt bgr24 -s 720x400 -framerate 25 -i -

# Encoding 
# python3 simple.py | ffmpeg  -f rawvideo -pix_fmt bgr24 -s 720x400 -framerate 25 -i - -c:v libx264 output.mp4

# The input file is located in the current working directory.
cap = cv2.VideoCapture(os.getcwd()+"/"+'Big_Buck_Bunny_Trailer_400p.ogv')

if (cap.isOpened()== False): 
  print("Error opening video stream or file")


while(cap.isOpened()):
  ret, frame = cap.read()
  if ret == True:

    # Do something  with the frame...
    ts = time.time()
    cv2.putText(frame ,"Timestamp : " + str(ts), (15, 15),
                cv2.FONT_HERSHEY_SIMPLEX, 0.45, (0, 255, 0), 2)

    # We send the frame to the standard output, then FFMPEG will catch it and process it
    sys.stdout.buffer.write(frame.tobytes())

    # Press Q on keyboard to  exit
    if cv2.waitKey(25) & 0xFF == ord('q'):
      break

  else: 
    break

 # Cleaning
cap.release()
cv2.destroyAllWindows()

Information sources · 출처



htps : // py 피. 오 rg / p 로지 ct / 오펜 cv py 텐 /
htps //w w. ㄴ fmぺg. rg/
htps : // 코몬 s. 으아아아아. 오 rg / ぃ き / ふぃ ぇ : 비 g_ 부 CK_ 분 y_T 같아 r_400p. 오 gv

좋은 웹페이지 즐겨찾기