ubuntu 에서 opencv 로 h264 codec 비디오 파일 만들기
728x90
개발환경
-fast api
-docker
-python3.9
-postgres
를 사용하였습니다. 참고하시길 바랍니다.
이글을 쓰게된 이유는 python에서 openvcv 를 사용해 영상을 N x M 으로 자른뒤 각각의 html5 video 태그에 뿌려주는 걸 개발하다가 생긴 문제에 대해서 해결과정을 적으려고 합니다.
html5 video 태그의 표준 코덱은 H 2 6 4 코덱입니다.
cv2.VideoWriter_fourcc(*"H264")
하지만 docker build 이후 영상을 자르면 다음과 같은 에러를 내뱉으며 영상을 자를수 없다고 합니다.
그래서 ubuntu 에서 ffmpeg 를 사용하기 위해 다음과 같이 dockerfile 을 작성합니다.
FROM python:3.9-slim
WORKDIR /workspace
COPY requirements.txt .
EXPOSE 80
RUN pip install -r requirements.txt &&\
apt-get update &&\
apt-get install libgl1-mesa-glx -y &&\
apt-get install libglib2.0-0 -y &&\
apt-get install ffmpeg x264 libx264-dev -y&&\
apt-get install watch -y
COPY . /workspace/
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "80"]
docker-compose.yml
version: "3.7"
services:
video_api:
build:
context: .
dockerfile: Dockerfile
ports:
- "80:80"
cv2.VideoWriter_fourcc(*"mp4v")
코덱 세팅은 mp4v 비디오의 확장자는 mp4 로 정한다음
os.system(f"ffmpeg -i {video_name} -vcodec libx264 {over_write_video}")
원본 비디오를 ffmpeg 로 코덱을 변경하여 새로운 비디오를 하나더 만들어냅니다.
이렇게하면 h264 코덱으로 만들어진 mp4 파일을 사용할수 있습니다.
728x90
'Python > python - opencv' 카테고리의 다른 글
적응형 이진화 (0) | 2020.11.12 |
---|---|
opencv 전역 임계값 사용 (0) | 2020.11.10 |
opencv 이미지 채널 분리 및 합치기 (0) | 2020.11.10 |
opencv 픽셀에 접근하기 (0) | 2020.11.10 |
댓글
이 글 공유하기
다른 글
-
적응형 이진화
적응형 이진화
2020.11.12 -
opencv 전역 임계값 사용
opencv 전역 임계값 사용
2020.11.10 -
opencv 이미지 채널 분리 및 합치기
opencv 이미지 채널 분리 및 합치기
2020.11.10 -
opencv 픽셀에 접근하기
opencv 픽셀에 접근하기
2020.11.10