動画ファイルのコマンド等

概要

コマンドやコマンドラインツールを用いて、動画データの情報確認、音声トラックの除去、形式変換、トランスコード、サムネイル作成、連番画像との相互変換を行う手順を紹介する。Windows と Ubuntu の両方を対象とし、FFmpeg、ImageMagick、avidemux、mediainfo などを使用する。

Octave 等で動画が処理できない場合:ファイルを "AVI, MS Compatible AVI" に変換することで解決できる場合がある(Octave が読み込めない形式のとき、互換性の高い AVI 形式へ変換しておくと読み込めることがある、という回避策)。

目次

関連する外部ページ

サイト内の関連情報

1. 前準備

ここでサンプルとして使用する動画

Windows での前準備

Ubuntu での前準備

◆ その他 Ubuntu で動く,動画関係の便利なソフトウエア

動画ファイルの確認や操作など

インストールするには, 端末で,次のコマンドを実行する.

sudo apt -y install openshot-qt
sudo apt -y install winff
sudo apt -y install vlc
sudo apt -y install mencoder

2. 動画の情報取得

mediainfo コマンドによる情報の取得(縦横比,画素数,コーデック,フレームレートなど)(Ubuntu 上)

mediainfo 00008.MTS

3. 音声トラックの除去

音声トラックが不要な場合の処理.

音声トラックの除去(avidemux3 のコマンドを使用)

avidemux3_cli --nogui --autoindex --video-codec COPY --audio-codec NONE --load <ファイル名> --save <ファイル名>

音声トラックの除去(FFmpeg を使用)

ffmpeg -i <元ファイル.avi> -vcodec copy -an <新ファイル.avi>

4. 動画の形式変換

avidemux を用いた変換

再エンコードにより, avi 形式動画ファイルに変換,音声トラックの除去(avidemux3 のコマンドを使用)

avidemux3_cli --nogui --autoindex --video-codec avi --audio-codec NONE --load <ファイル名> --save <ファイル名>

再エンコードにより, avi 形式動画ファイルに変換(avidemux を使用)

  1. avidemux の起動
    avidemux3_qt5
    

    あるいは

    avidemux3_qt5 <ファイル名>
    
  2. ファイルを読み込む操作
    1. 読み込み開始
    2. 読み込むファイルの選択
  3. エンコード形式の設定

    ここでは,YU12 形式の avi 動画ファイルを作成することにして,次のように設定する

    • Video Output: YU12 Encoder
    • Audio Output: Copy
    • Output Format: AVI Muxer
  4. 保存開始
  5. ファイル名の設定
  6. エンコードが始まるので確認
  7. エンコード終了の確認

再エンコードにより, mp4 形式動画ファイルに変換(avidemux を使用)

上と同じような手順になる

  1. avidemux の起動
    avidemux3_qt5
    

    あるいは

    avidemux3_qt5 <ファイル名>
    
  2. ファイルを読み込む操作
    1. 読み込み開始
    2. 読み込むファイルの選択
  3. エンコード形式の設定

    ここでは,mp4 動画ファイルを作成することにして,次のように設定する

    • Video Output: Mpeg4 AVC (x264)
    • Audio Output: AAC (FDK)
    • Output Format: MP4 Muxer
  4. 保存開始
  5. ファイル名の設定
  6. エンコードが始まるので確認
  7. エンコード終了の確認

AviUtl を用いた変換

AviUtl を用いた Windows での mp4 (H.264) 形式ファイルへの変換については,別ページ »で説明

WinFF, FFmpeg を用いた変換

WinFF を用いた,avi 形式動画ファイルの変換

WinFF を用いて,avi 形式動画ファイルへの変換などを行うことができる. (内部では,FFmpeg を利用)

FFmpeg で利用できる muxer と codec の確認

ffmpeg -muxers
ffmpeg -codecs

(以下省略)

(以下省略)

FFmpeg のオプション

mts 形式から avi 形式への変換(FFmpeg を使用)(Ubuntu 上)

bash プログラム

#!/bin/bash
function do_ffmpeg {
    # usage example: do_ffmpeg "camera1/00192.MTS" "camera1/00192.avi" "libx264" "16:9"
    IN=$1
    OUT=$2
    VCODEC=$3
    ASPECT=$4
    echo ffmpeg -i $IN -vcodec $VCODEC -aspect $ASPECT -an -sn $OUT
    ffmpeg -i $IN -vcodec $VCODEC -aspect $ASPECT -an -sn $OUT
    mediainfo $OUT
}
do_ffmpeg 00008.MTS /tmp/00008.avi libx264 16:9

5. トランスコード

ISO イメージファイルの変換

ISO イメージファイルを mp4 動画ファイルに変換(avidemux3 のコマンドを使用)

ISO イメージファイルが,複数のチャプターを含む場合は,1つの動画ファイルにまとまる.

avidemux3_cli --video-codec FFmpeg4 --audio-codec AC3 --nogui --autoindex --force-alt-h264 --force-b-frame --load a.iso --save a.mp4

ISO イメージファイルを,Divx 形式の avi 動画ファイルに変換(avidemux3 のコマンドを使用)

avidemux3_cli --video-codec Divx --audio-codec MP3 --nogui --autoindex --force-b-frame --load a.iso --save a.avi

ISO イメージファイルを avi 動画ファイルに変換 (WinFF を使用)

ISO イメージファイルを mp4 動画ファイルに変換 (FFmpeg を使用)

ISO イメージファイルが,複数のチャプターを含む場合は,1つの動画ファイルにまとまる.

ffmpeg -i a.iso -vcodec h264 -acodec aac -aspect 4:3 -sn c.mp4

(以下省略)

別の実行例

ffmpeg -i a.iso -sn -target ntsc-dvd c.mp4

ISO イメージファイルを,cinepak 形式の avi 動画ファイルに変換 (FFmpeg を使用)

*「4:3」は処理対象に合わせて調整すること.

ffmpeg -i a.iso -vcodec cinepak -acodec mp3 -aspect 4:3 -sn a.avi

(以下省略)

ISO イメージファイルを,cinepak 形式の avi 動画ファイルに変換,音声は除去 (FFmpeg を使用)

*「4:3」は処理対象に合わせて調整すること.

ffmpeg -i a.iso -vcodec cinepak -an -aspect 4:3 -sn b.avi

(以下省略)

ISO イメージファイルを avi 動画ファイルに変換(mencoder を使用)

mencoder k1.iso -oac mp3lame -ovc lavc -lavcopts vcodec=mpeg4:vqscale=1 -o /tmp/k1.avi

ISO イメージファイルから avi 形式への変換(arista-transcode を使用)

arista-transcode dvd:///home/hoge/hoge.iso -p computer -o hoge.avi

DVD ドライブ

sr0 から avi 形式への変換(arista-transcode を使用)

arista-transcode dvd:///dev/sr0@0 -p computer -o hoge.avi

トランスコードのソフトウエアの起動コマンド例

コマンド例

avidemux3_cli --force-b-frame --force-alt-h264 --autoindex \
   --load "$INPUT" \
   --fps 29.97 --save "$OUTPUT"

6. 動画のサムネイル作成

動画のサムネイル作成(FFmpeg を使用)(Ubuntu 上)

bash プログラム

#!/bin/bash
function thumbnailer {
    # usage example: thumbnailer a1.avi a1.png
    IN=$1
    OUT=$2
    ffmpeg -y -i $IN -vf thumbnail=1000,tile=8x8 -frames:v 1 -an $OUT
}
thumbnailer 00008.MTS 00008.png

生成されるサムネイルの例

7. 連番画像

連番画像に変換(FFmpeg を使用)

  1. 作業用の空のディレクトリを作り,そこに AVI 形式動画ファイルを1つ置く.

    作業で連番画像ファイルが多数できるため,空のディレクトリにしておくと後で分かりやすい

  2. FFmpeg を使用して変換

    次のコマンドを実行

    • %08d」は,数字8桁の連番という意味.連番の桁数を変えたいときは,ここを変える.
    • rgb-」の部分は,分かりやすくするためのものなので,何でもよい
    ffmpeg -i <動画ファイル名> rgb-%08d.png
    

別の例(動画の先頭から 20 秒の位置の1フレームを取り出す)

F=00008.MTS
ffmpeg -ss 20 -i $F -frames:v 1 -f image2 newfile.png

連番画像 (image sequence) ファイルを動画ファイルに変換

FFmpeg を使用して変換

次のコマンドを実行

ffmpeg -i rgb-%08d.png <動画ファイル名>

別の例.mp4 形式に変換したい場合.ここでは,-framerate で入力のフレームレートを設定している.

ffmpeg -framerate 30 -i rgb-%08d.png -c:v libx264 -pix_fmt yuv420p a.mp4

カラーの連番画像 (image sequence) を、モノクロ(濃淡画像)の連番画像 (image sequence) に一括変換

ImageMagick の機能を用いて一括変換

次のコマンドを実行

magick rgb-*.png -colorspace Gray gray-%08d.png