こんにちは!スペイン在住日本人のHodaです。
今回は個人的な備忘録です。 僕は動画の販売などを行っていますが、動画によっては音声を削除してから販売した方が審査が通りやすいことがあります。
少量の動画ファイルであれば、動画編集ソフトなどで書き出してもよいのですが、その場合は再度エンコードすることになるのでやはり避けたいです。また、動画ファイルが多くなると毎回一つの動画の音声だけを削除して書き出すという作業がかなり手間になるのでそれも避けたいです。
そんな中、 FFmpeg を使った簡単な方法があるのでご紹介します。
FFmpegを使う
FFmpegは、動画や音声ファイルを編集・変換するための無料ソフトです。形式変換(MP4→AVIなど)、音声削除、トリミング、圧縮などが可能で、ほぼすべてのフォーマットに対応します。コマンド入力で操作するため初心者には少し難しいですが、高速かつ柔軟でプロも使用する強力なツールです。
インストールの仕方は別の記事などで確認できると思うので割愛しますが、今回はこれを使って一括で処理します。
使用するスクリプトは以下です。
@echo off
:: 入力フォルダと出力フォルダを指定
set INPUT_FOLDER=C:\path\to\input\folder
set OUTPUT_FOLDER=C:\path\to\output\folder
:: 出力フォルダが存在しない場合は作成
if not exist "%OUTPUT_FOLDER%" (
mkdir "%OUTPUT_FOLDER%"
)
:: FFmpegがインストールされているか確認
where ffmpeg >nul 2>nul
if %ERRORLEVEL% neq 0 (
echo FFmpeg が見つかりません。環境変数に追加されていることを確認してください。
pause
exit /b
)
:: MP4ファイルを処理
echo 音声を削除したMP4ファイルを "%OUTPUT_FOLDER%" に出力します...
for %%F in ("%INPUT_FOLDER%\*.mp4") do (
echo 処理中: %%~nF.mp4
ffmpeg -i "%%F" -an -c:v copy "%OUTPUT_FOLDER%\%%~nF_no_audio.mp4"
)
echo 完了しました!
pause
こちらの ファイルをメモ帳などで作成して remove_audio.bat という名前で保存しておきます。
そしたら、以下のコードの部分に書き出す元動画のフォルダと、書き出し後のフォルダを指定しておきます。書き出し後のフォルダがない場合は、一応自動的に作成する仕組みにしています。
set INPUT_FOLDER=C:\path\to\input\folder
set OUTPUT_FOLDER=C:\path\to\output\folder
実行してみる
ここまでできれば準備OKです。後は、 remove_audio.bat をクリックすることで、自動的に元動画ファイル内の動画を処理してくれます。
↓ クリックすると、以下のようなコンソール画面が開きます。ファイルが複数ある場合は何度かスクリプトが機能しますので動きが止まるまで 待ちます。
↓ スクリプトの動作が完了すると、以下のように複数のファイルがありましたが
↓ 以下のように _no_audio という名前がついて処理されます(元動画は残っています。)
実際に確認してみると、単に音声だけが削除されており、画質には影響は全くありません。
ちなみに、例えば、今回は10本の動画を試してみましたが処理時間は 10秒くらいで完了しました。(めちゃ速い。。)
まとめ
いかがでしたでしょうか。 パソコン上の動画ファイルを動画編集ソフトを使わずに音声を削除する方法としてはこの方法が一番簡単で、最速だと思います。 厳密に言うと、音声を削除するのではなく音声を無効化したファイルを作成する という手法なので再度エンコードする必要がなく画質が落ちないという仕組みです。