動画の音声のボリュームだけを変更する - 画質は無劣化

(2025-10-16)

動画の画質を劣化させずに音声のボリュームだけを変更します。

これまでのコード

以前 chatGPT に教えてもらったコードです。

Terminal window
for ext in mkv mp4 webm MP4 MOV; do
for file in before/*."$ext"; do
[ -f "$file" ] || continue
basename=$(basename "$file")
fname="${basename%.*}" # 拡張子除去
ffmpeg -i $file -af "volume=0.5" ./after/$fname.mp4
done
done

before フォルダにあるいろいろな形式の動画を、ffmpeg でエンコードして after フォルダに mp4 で保存します。

このシェルスクリプトでは音声のボリュームを半分にしています。

これは約 7 倍速なので 120 分ほどの動画を処理するのに十数分かかっていました。とても時間がかかります。

新しいコード

でも、動画の画質を変更せずに音声だけを変更できるのか chatGPT に質問したところ、一瞬で作ってくれました。

Terminal window
for ext in mkv mp4 webm MP4 MOV; do
for file in before/*."$ext"; do
[ -f "$file" ] || continue
basename=$(basename "$file")
fname="${basename%.*}" # 拡張子除去
ffmpeg -i "$file" -c:v copy -af "volume=0.5" -c:a aac "./after/$fname.mp4"
done
done

これだと約 70 倍速なので同じファイルを処理する時間は 1 分半くらいです。以前のコードの 10 倍の速度です。

chatGPT はとても優秀ですが、最初からこっちの方を提示してくれればよかったのに。

それにしても ffmpeg はとても便利です。
機能が多すぎてしかも難解なのでとても憶えられませんが、調べれば誰かが必ずコードを提示してくれています。

これまでは自分でコードを検索していたのですが、chatGPT が登場した現在では検索するまでもなくほぼ一瞬で解決できます。

確かに AI の登場は革命的だと思います。