0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

dockerでffmpegを使って動画ファイルの圧縮や動画形式変換を行う

Posted at

やりたいこと

dockerコンテナ上でffmpegを使って、動画ファイルの圧縮や動画形式の変換を行う方法をまとめます。

Dockerfile

FROM ubuntu:20.04

RUN apt-get update && apt-get install -y \
      wget \
      xz-utils

WORKDIR /tmp

RUN wget https://johnvansickle.com/ffmpeg/builds/ffmpeg-git-amd64-static.tar.xz \
      && tar xvf ./ffmpeg-git-amd64-static.tar.xz \
      && cp ./ffmpeg*amd64-static/ffmpeg /usr/local/bin/

CMD /bin/bash

Dockerイメージのビルド

$ ls ./ffmpeg-docker/
Dockerfile
$ docker build -t ffmpeg:latest ./ffmpeg-docker/
Sending build context to Docker daemon  2.048kB
Step 1/5 : FROM ubuntu:20.04
(略)
Successfully tagged ffmpeg:latest

私の環境ではdockerのバージョンはDocker version 20.10.18, build b40c2f6でした。

Dockerコンテナの起動

処理したい動画の入っているディレクトリをコンテナ側にマウントします。

$ docker run --rm -ti -v {ホスト側マウント元ディレクトリ}:{コンテナ側マウント先ディレクトリ} ffmpeg:latest /bin/bash

動画の圧縮・変換

私のiPhone 15 proで撮影した.MOVの動画ファイルをmp4に変換、また圧縮を行ってみます。

$ ffmpeg -i input.MOV -crf 23 output.mp4
(略)
[libx264 @ 0x7d40b80] ref B L0: 85.7% 11.1%  3.1%
[libx264 @ 0x7d40b80] ref B L1: 95.1%  4.9%
[libx264 @ 0x7d40b80] kb/s:1888.54
[aac @ 0x9179d40] Qavg: 405.099
$ ls -lh input.MOV | awk '{print $5}'
22M
$ls -lh output.mp4 | awk '{print $5}'
4.5M

22MBの動画ファイルが4.5MBになり、問題なく再生できました。crfの数値を上げると動画の品質が下がり、ファイルサイズが小さくなります。

参考記事

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?