/Linuxコマンド

メディア

画像・動画・音声

ffmpeg での変換・切り出し・圧縮、ImageMagick での画像加工、exiftool でのメタデータ操作、端末で画像を見る chafa。

ffmpeg動画・音声を変換する

Ubuntu には最初から入っていません。 で入れられます。

動画や音声の形式変換・圧縮・切り出し・結合など、ほとんど何でもできる定番のツールです。

bash
ffmpeg [入力のオプション] -i <入力> [出力のオプション] <出力>
bash
$ ffmpeg -i input.mov output.mp4                         # 形式を変える
$ ffmpeg -i in.mp4 -c:v libx264 -crf 23 -preset medium -c:a aac out.mp4   # 画質を保って圧縮
$ ffmpeg -ss 00:01:00 -to 00:01:30 -i in.mp4 -c copy clip.mp4   # 1:00〜1:30 を切り出す(再エンコードなし)
$ ffmpeg -i in.mp4 -vf scale=1280:-2 out.mp4             # 横1280にする(高さは比率を保つ)
$ ffmpeg -i in.mp4 -vn -c:a libmp3lame -q:a 2 audio.mp3  # 音声だけ取り出す
$ ffmpeg -i in.mp4 -an out.mp4                           # 音声を消す
$ ffmpeg -i in.mp4 -vf "fps=10,scale=480:-1" out.gif     # GIF にする
$ ffmpeg -i in.mp4 -ss 5 -frames:v 1 thumb.jpg           # 5秒目の静止画
$ ffmpeg -f concat -safe 0 -i list.txt -c copy joined.mp4   # 連結(list.txt に file 'a.mp4' と並べる)
$ ffprobe -hide_banner in.mp4                            # 情報を表示
オプション意味
-c copy再エンコードせずにコピー(速い・画質が落ちない)
-c:v / -c:a映像 / 音声のコーデック
-crf N画質(小さいほど高画質。x264 なら 18〜28 が目安)
-ss / -to / -t開始位置 / 終了位置 / 長さ
-vf映像フィルター(scale・crop・fps など)
-rフレームレート
-y確認せず上書き

convert / magick画像を加工する(ImageMagick)

Ubuntu には最初から入っていません。 で入れられます。

画像の形式変換・リサイズ・画質変更などを行います(ImageMagick)。

bash
$ convert photo.png photo.jpg                    # 形式を変える
$ convert photo.jpg -resize 50% small.jpg
$ convert photo.jpg -resize 1200x1200\> out.jpg  # 1200px を超えるときだけ縮める
$ convert photo.jpg -quality 80 out.jpg
$ mogrify -resize 1600x -quality 85 *.jpg         # まとめて上書き加工
$ identify photo.jpg                             # サイズや形式を表示
$ convert a.png b.png +append side.png           # 横に並べる(-append で縦)

exiftool画像のメタデータを見る・消す

Ubuntu には最初から入っていません。 で入れられます。

写真に含まれる撮影日時や位置情報などのメタデータを表示・削除・書き換えします。

bash
$ exiftool photo.jpg
$ exiftool -gps:all photo.jpg                    # 位置情報だけ
$ exiftool -all= -overwrite_original photo.jpg   # メタデータをすべて消す(SNSに上げる前に)
$ exiftool '-FileName<DateTimeOriginal' -d '%Y%m%d_%H%M%S.%%e' .   # 撮影日時でファイル名を付け直す

chafa端末の中で画像を見る

Ubuntu には最初から入っていません。 で入れられます。

画像を端末の中に文字で描いて表示します。

bash
$ chafa photo.jpg
$ chafa --size 60x30 icon.png
$ chafa *.gif                    # アニメーションも再生

feh軽い画像ビューア

Ubuntu には最初から入っていません。 で入れられます。

軽い画像ビューアです。

bash
$ feh photo.jpg
$ feh -t .                       # サムネイル一覧
$ feh -Z -F .                    # 全画面でスライドショー

ffprobe動画・音声の情報を調べる

Ubuntu には最初から入っていません。 で入れられます。

動画や音声ファイルの長さ・解像度・コーデックなどを調べます。

bash
$ ffprobe -hide_banner video.mp4
$ ffprobe -v error -show_entries format=duration -of csv=p=0 video.mp4        # 長さ(秒)
$ ffprobe -v error -select_streams v:0 -show_entries stream=width,height,r_frame_rate -of csv=p=0 video.mp4

ffmpeg のよく使うレシピ

bash
$ ffmpeg -i in.mp4 -vf "crop=1080:1080" square.mp4                      # 正方形に切り抜く
$ ffmpeg -i in.mp4 -vf "transpose=1" rotated.mp4                        # 90度回転
$ ffmpeg -i in.mp4 -filter:v "setpts=0.5*PTS" -an fast.mp4              # 2倍速(音声なし)
$ ffmpeg -i in.mp4 -i logo.png -filter_complex "overlay=W-w-20:20" out.mp4   # 右上にロゴ
$ ffmpeg -i in.mp4 -vf subtitles=sub.srt out.mp4                        # 字幕を焼き込む
$ ffmpeg -i in.mp4 -af "loudnorm" out.mp4                               # 音量を揃える
$ ffmpeg -framerate 30 -i img_%03d.png -c:v libx264 -pix_fmt yuv420p out.mp4   # 連番画像を動画に
$ ffmpeg -i in.mp4 -vf fps=1 frames/%04d.png                            # 1秒ごとに静止画
$ ffmpeg -f x11grab -s 1920x1080 -i :0.0 screen.mp4                     # 画面を録画(X11)
$ ffmpeg -i in.wav -c:a libopus -b:a 96k out.opus                       # 音声を小さく

pdftotext / pdfinfo / pdftoppmPDF を扱う

PDF から文字を取り出したり、ページを画像にしたり、結合・分割したりします。

bash
$ pdfinfo doc.pdf                         # ページ数や作成日
$ pdftotext -layout doc.pdf doc.txt       # 文字を取り出す(レイアウトを保つ)
$ pdftoppm -png -r 150 doc.pdf page       # 各ページを PNG に(page-1.png…)
$ pdftoppm -jpeg -f 1 -l 1 doc.pdf cover  # 1ページ目だけ
$ pdfunite a.pdf b.pdf merged.pdf         # 結合
$ pdfseparate doc.pdf page-%d.pdf         # 1ページずつに分割
$ pdfimages -all doc.pdf img              # 埋め込まれた画像を取り出す

gs (Ghostscript)PDF を圧縮・変換する

PDF のサイズを小さくしたり、画像に変換したりします。

bash
$ gs -sDEVICE=pdfwrite -dPDFSETTINGS=/ebook -dNOPAUSE -dBATCH -dQUIET \
-sOutputFile=small.pdf big.pdf                       # PDF を小さくする(/screen はさらに小さい)
$ gs -sDEVICE=png16m -r150 -o page-%02d.png doc.pdf       # PDF → 画像

qpdfPDF のページ操作・パスワード

Ubuntu には最初から入っていません。 で入れられます。

PDF のページを抜き出す・並べ替える・回転する・パスワードを外すなどの操作をします。

bash
$ qpdf --empty --pages a.pdf b.pdf 1-3 -- out.pdf         # a 全部と b の1〜3ページ
$ qpdf --decrypt --password=secret locked.pdf unlocked.pdf
$ qpdf in.pdf --rotate=+90:1 out.pdf                      # 1ページ目を回転

img2pdf画像をそのまま PDF にする

Ubuntu には最初から入っていません。 で入れられます。

画像を画質を落とさずに PDF にまとめます。

bash
$ img2pdf *.jpg -o scans.pdf

画像を軽くする — cwebp / pngquant / optipng / jpegoptim

cwebpWebP に変換する

Ubuntu には最初から入っていません。 で入れられます。

画像を軽い WebP 形式に変換します。

bash
$ cwebp -q 80 photo.jpg -o photo.webp
$ dwebp photo.webp -o photo.png

pngquantPNG の色数を減らして軽くする

Ubuntu には最初から入っていません。 で入れられます。

PNG の色数を減らして大幅に軽くします。

bash
$ pngquant --quality 65-80 --ext .png --force *.png

optipngPNG を無劣化で最適化する

Ubuntu には最初から入っていません。 で入れられます。

PNG を画質を落とさずに小さくします。

bash
$ optipng -o5 image.png

jpegoptimJPEG を最適化する

Ubuntu には最初から入っていません。 で入れられます。

JPEG を最適化して軽くします。

bash
$ jpegoptim --max=85 --strip-all *.jpg

gifsicleGIF を最適化・加工する

Ubuntu には最初から入っていません。 で入れられます。

GIF アニメを最適化して軽くします。

bash
$ gifsicle -O3 --lossy=80 anim.gif -o small.gif

montage / convert画像を並べる・文字を入れる・切り抜く

Ubuntu には最初から入っていません。 で入れられます。

画像を並べて1枚にしたり、文字を入れたり、切り抜いたりします(ImageMagick)。

bash
$ montage *.jpg -tile 4x -geometry 300x300+4+4 contact.jpg    # サムネイル一覧
$ convert in.png -gravity southeast -pointsize 24 -fill white -annotate +10+10 '© example' out.png   # 文字入れ
$ convert in.png -crop 800x600+100+50 cropped.png              # 切り抜き
$ convert in.png -rotate 90 out.png
$ convert -delay 10 -loop 0 frame*.png anim.gif                # GIFアニメを作る

tesseract画像から文字を読み取る(OCR)

Ubuntu には最初から入っていません。 で入れられます。

画像の中の文字を読み取ってテキストにします(OCR)。

bash
$ tesseract scan.png out -l jpn+eng      # out.txt に書き出す
$ tesseract scan.png - -l jpn            # 画面に出す

yt-dlp動画をダウンロードする

Ubuntu には最初から入っていません。 で入れられます。

apt 版は古いことが多いので、pipx で入れて pipx upgrade yt-dlp で更新するのがおすすめです。

bash
$ yt-dlp URL
$ yt-dlp -F URL                           # 選べる形式の一覧
$ yt-dlp -f "bv*+ba/b" URL                # 最高画質
$ yt-dlp -x --audio-format mp3 URL        # 音声だけ
$ yt-dlp -o "%(upload_date)s_%(title)s.%(ext)s" URL

sox音声を加工する

Ubuntu には最初から入っていません。 で入れられます。

音声ファイルの切り出し・音量調整・変換などを行います。

bash
$ sox in.wav out.wav trim 0 30            # 最初の30秒
$ sox in.wav out.wav gain -n              # 音量を最大に揃える
$ play song.mp3                           # 再生(libsox-fmt-all が必要)

mpv何でも再生できるプレーヤー

Ubuntu には最初から入っていません。 で入れられます。

ほとんどの形式を再生できる軽い動画・音楽プレーヤーです。

bash
$ mpv video.mp4
$ mpv --no-video music.mp3
$ mpv --speed=1.5 lecture.mp4
$ mpv https://www.youtube.com/watch?v=...   # yt-dlp と組み合わせてストリーミング