はじめに
毎回調べるのもアレなので、まとめておく。
詳細なコマンド説明はなし。
ffmpeg
手抜きしてffmpegはdockerイメージのものを使用。
もちろん自前でビルドするのも、バイナリをダウンロードしてのインストールでも可。
(今回はMacでビルドするのが面倒だったため)
パスの通っているところへシェルを作成。
$ touch /usr/local/bin/ffmpeg
$ chmod +x /usr/local/bin/ffmpeg
$ vi /usr/local/bin/ffmpeg
# !/bin/bash
TAG=4.1-alpine
DOCKER_RUN="docker run --rm -it"
DOCKER_IMG="jrottenberg/ffmpeg:${TAG}"
DOCKER_VOL="-v ${PWD}:${PWD} -w ${PWD}"
# echo $DOCKER_RUN $DOCKER_VOL $DOCKER_IMG "$@"
$DOCKER_RUN $DOCKER_VOL $DOCKER_IMG "$@"
exit 0
$ ffmpeg -version
ffmpeg version 4.1.6 Copyright (c) 2000-2020 the FFmpeg developers
built with gcc 9.3.0 (Alpine 9.3.0)
configuration: --disable-debug --disable-doc --disable-ffplay --enable-shared --enable-avresample --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-gpl --enable-libass --enable-fontconfig --enable-libfreetype --enable-libvidstab --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libxcb --enable-libx265 --enable-libxvid --enable-libx264 --enable-nonfree --enable-openssl --enable-libfdk_aac --enable-postproc --enable-small --enable-version3 --enable-libbluray --enable-libzmq --extra-libs=-ldl --prefix=/opt/ffmpeg --enable-libopenjpeg --enable-libkvazaar --enable-libaom --extra-libs=-lpthread --enable-libsrt --extra-cflags=-I/opt/ffmpeg/include --extra-ldflags=-L/opt/ffmpeg/lib
libavutil 56. 22.100 / 56. 22.100
libavcodec 58. 35.100 / 58. 35.100
libavformat 58. 20.100 / 58. 20.100
libavdevice 58. 5.100 / 58. 5.100
libavfilter 7. 40.101 / 7. 40.101
libavresample 4. 0. 0 / 4. 0. 0
libswscale 5. 3.100 / 5. 3.100
libswresample 3. 3.100 / 3. 3.100
libpostproc 55. 3.100 / 55. 3.100
コマンド集
x265エンコード
dockerコンテナ内のffmpegでx265エンコすると不正なファイルになる?
「moov atom not found」エラー
Windowsではエンコード可
- インタレース解除
- CRF 18
- プリセット:slow tune ssim
- フォーマット:yuv420p
- 30fps
- 1280x720へリサイズ(lanczos)
$ ffmpeg -i input.mov -movflags faststart -flags +loop+global_header -vf bwdif=0:-1:0 -c:v libx265 -crf 18 -preset slow -tune ssim -vf format=yuv420p -r 30 -vf scale=1280:720 -sws_flags accurate_rnd+lanczos -c:a aac -b:a 128k output.mp4
mov -> mp4
Macで画面キャプチャして作成されたmov(x264+aac)をmp4コンテナに変更したいとき。
$ ffmpeg -i input.mov -movflags faststart -flags +loop+global_header -c copy output.mp4
音声抽出
$ ffmpeg -i input.mov -vn -acodec copy output.aac
aac -> m4a
$ ffmpeg -i input.aac -bsf:a aac_adtstoasc -vn -acodec copy output.m4a
カット
- -ss:カット開始時間
- -t:(-ssから数えて)カットする時間
$ ffmpeg -ss "hh:mm:ss" -i input.mp4 -t "hh:mm:ss" -c:v copy -c:a copy output.mp4
m3u8のストリーム保存
chromeの場合、アドレスバーに「chrome://version/」と入力して確認できる。
$ ffmpeg -user_agent "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36" -i "http://exsample.com/hoge.m3u8" -movflags faststart -flags +loop+global_header -map_metadata -1 -c copy -bsf:a aac_adtstoasc output.mp4