ffmpegで動画から一括音楽変換[ffmpeg,変換]

PC
この記事は約5分で読めます。

ダウンロードした音楽動画は動画ファイルなのでそこそこの容量を持ちます

スマホなどの限られた保存領域のために容量を小さくしたいので音楽ファイルに変換しました

ただ、数個ならフリーソフトを使い一つ一つやればいいのですが数百個になると気が遠くなります

なので一括でバッチ処理をしたいと思います

元の動画

NoCopyrightSounds(以下NCS)の

Michael White – All Eyes On Me [NCS Release]

NCSについて

NoCopyrightSoundsを翻訳すると著作権のないサウンドです

よくBGMに無断で音楽を使うと著作権違反などに引っかかりますが、NCSは曲名と作者のクレジットを記載することを条件に無償で利用できる団体です(だと思います)

NoCopyrightSounds is a record label dedicated to releasing FREE music for the sole purpose of providing creators with the finest sounds to enhance the creativity and popularity of their content, safe from any copyright claims or infringement.
• NCS Music is free to use for independent Creators and their UGC (User Generated Content) on YouTube & Twitch – please remember to credit the artist, track and NCS and link back to our original upload.
• If you’re a brand or a commercial organisation interested in using NCS music on Youtube or anywhere else, get in touch at [email protected]
引用元:NoCopyrightSounds – YouTube

普通のPVなどを使うと何かしら問題が起こるのでこちらを使います(元々からNCSの音楽は好きですけどね)

この動画をダウンロードするなりキャプチャするなりして動画にします

ffmpeg

ffmpegは動画と音声を変換できるフリーソフトです

様々なOSでも使えます

ダウンロード

公式サイトにあるリンクからWindwos版でビルドされたものをダウンロードします

FFmpeg.org

公式サイトのトップページにあるDownloadをクリック

次に開かれるページで下部にあるWindwosアイコンをクリックしてから、Windows Buildsを開きます

外部のページになりますがここで、ビルドされたものをダウンロードできます


ダウンロードした.zipファイルを展開し、binフォルダ内の「ffmpeg.exe」のみ動画ファイルのあるフォルダへコピーします。

残りは削除しても構いません


音声の抽出

ffmpegを使い音声を抽出するにはいくつか方法があります

1番簡単(と思うもの)なのは変換をかけないでそのまま抽出する方法です

まず、動画ファイルに記録されている音声の形式を知ります

ffmpeg.exeを置いたフォルダのなにもないところをシフトキーを押しながら右クリックすると「コマンドウィンドウをここで開く」と出てくるのでこちらからコマンドプロントを開きます

ffmpeg.exe -i <ファイル名>

とすると、動画の情報が出てきます

その情報の下部にあるAudioという項目を確認します

この動画ではAACです

主に.mp4などで使われているようです

この動画はvorbisのようです

主に.oggで使われています。ガラケーなど.oggを読み込む事ができる物がありましたね(世代がっ

この動画はmp3です

mp3はかなり普及されていますね


このように動画によってエンコード方式が変わってしまいます

この方法で抽出するには動画にあった方法でやる必要が出てきますが、今回動画の全ては同じNCSの動画で、幾つか見たところAACが多かったのですべてAACでやってしまいます

抽出

ffmpegで抽出するには

ffmpeg.exe -y -i <ファイル名> -acodec copy <出力ファイル名>

とやると出来ます

今回の動画はAACだったので、ファイル名はm4aとなります

よって

ffmpeg.exe -y -i 〇〇.mp4 -acodec copy 〇〇.m4a

となります

こちらも一つ一つやってたらキリがないのでスクリプトを組んでやってしまいます


スクリプト


@echo off
cd /d %~dp0
setlocal enabledelayedexpansion
rem || ffmpegの設定及び引数
rem ————————
set FFMPEG=ffmpeg.exe -y -i
set FFMPEGOUT= -acodec copy
rem ————————
rem ||ファイル名が「.mp4」のみ対象
for /f "usebackq" %%i in (`dir /B /S *.mp4`) do (
echo —————————————————-
echo %%i
echo.
rem ||ファイル名を変数に格納
set dmpppp=%%i
rem ||抽出コマンド実行(ffmpeg.exe -y -i <ファイル名> -acodec copy <出力ファイル名>
%FFMPEG%%%i%FFMPEGOUT%!dmpppp:~0,-3!m4a
echo —————————————————-
)
echo.
rem pause>NUL
pause
exit /b 0
view raw

mp4tom4a.bat

hosted with ❤ by GitHub

このスクリプトをコピーして、〇〇.batとしてffmpeg.exeと同じフォルダに保存します(まるまるはご自由に)

始めのsetの項目は行の最後にスペースがあるので注意してください

そしてこのファイルを実行するだけでエンコードが自動でほとんどのファイルを抽出してくれます

問題点

実行するとわかりますが「スペース文字があるファイル」があるとファイル名の指定に失敗し、ffmpegでも実行出来ません

ちょっとやった程度では難しいですね…

でも、ファイル制約がありますが、そこを除けば十分やりたいことが出来たのでいいとしましょう

参考:

FFmpeg – ウィキペディア

音声コーデックの種類と違い(MP3・AAC・WMA・WAV・Vorbis・AC3・FLAC等)【フォーマット】 – AviUtlの易しい使い方

ffmpeg で動画ファイルから音声だけ抜き出す – katz’s adversaria

Windows、バッチファイル(.bat)で、フォルダ内のすべてのテキストファイル(.txt)を再帰的に取得し、ファイル名と行数を表示する – マコトのおもちゃ箱 ~ぼへぼへ自営業者の技術メモ~

Windowsバッチ for文で代入した変数から文字列を抽出 – WindowsでバッチからRuby、Dartへと勉強中

<

p class=”title”>変数から特定部分を抽出するには – コマンドプロンプトを使いこなそう!

コメント