はじめに
ちょっと諸事情でYouTubeの動画をダウンロードして、一つに連結しなければならなかったのでffmpegを使って作業をすることにしました。
準備
YouTubeをダウンロードするためにYouTube-dlをダウンロードします。
(Linux,OS X)用
$ sudo curl -L https://yt-dl.org/downloads/latest/youtube-dl -o /usr/local/bin/youtube-dl
$ sudo chmod a+rx /usr/local/bin/youtube-dl
もし curl がなければ
$ sudo wget https://yt-dl.org/downloads/latest/youtube-dl -O /usr/local/bin/youtube-dl
$ sudo chmod a+rx /usr/local/bin/youtube-dl
一応インストールできたと思います。
Macの場合ですと
$ brew install youtube-dl
でもインストールできます。
YouTubeは仕様の変更が度々ありますので youtube-dl は最新にしておいたほうがいいです。以下のコードで最新に更新することができます。
$ sudo youtube-dl -U
ここまでで、YouTubeをダウンロードすることはできるようになりました。
次に ffmpeg の準備です。
ubuntuへのインストールは簡単です。
$ sudo apt update
$ sudo apt -y upgrade
$ sudo apt install ffmpeg
Mac の場合は以下のようにしたらできます。
$ brew install ffmpeg
ここらで一応準備は簡単にですが終了です。
ちなみに Windows は。。。悟ってください。
コード
YouTubeのダウンロードがまずは必要ですよね?
$ youtube-dl "YouTubeのURL" -f "フォーマット"
今回は、mp4でダウンロードするので、
$ youtube-dl "YouTubeのURL" -f mp4
でオッケーです。
他にもオプションなどとてもたくさんありますが今回は必要ないのでググってください。
次に、ffmpeg の使い方について説明します。ここから本題ですね。
ffmpeg で動画を連結ってググると以下のコマンドが出てきます。
$ ffmpeg -f concat -i "input.file" -c copy "output file"
ここでinput fileを一つのファイルで管理するのが便利ですね。(最新のバージョンはこの方法でしかできないとかできるとか。。)
input.file の中身を以下のように作ります。
file input_1.mp4
file input_2.mp4
file input_3.mp4
|
|
file input_N.mp4
ここまでできたらさっきのコードが以下のように変わる。
$ ffmpeg -f concat -I input.file -c copy output.mp4
ここまでで出来ると思いきや、まぁできません。途中から音楽だけ流れて動画が
フリーズしたりだとか。
この原因は、いろいろあるっぽいので、ffmpeg が大好き先輩に聞くと、動画形式を統一してみたら?ということで助けてもらいました。
ということで、youtubeからダウンロードしてきた動画の形式を強制的に揃えます。
$ ffmpeg -I input_1.mp4 -b:v 1M -r 30 -c:a aac -c:v h264 input_1_1.mp4
これでそれぞれのデータの形式を強制的に揃えました。ざきほど作ったinput.file
も編集します。
file input_1_1.mp4
file input_2_1.mp4
file input_3_1.mp4
|
|
file input_N_1.mp4
ここまでの準備をしたら先ほどと同じように以下のコードを実行してください。
$ ffmpeg -f concat -I input.file -c copy output.mp4
もしこれでもうまくいかないようでしたら、-c copy を抜いてあげることで
うまくいくと思います。
$ ffmpeg -f concat -I input.file output.mp4
おわりに
今回はYouTubeから動画をダウンロードして動画の連結をしましたが、著作権などには気をつけてください。
DVDに焼くなり煮るなりして、車のカーナビで見るのもありですね。自分専用のDVDを作ることができます。isoを作るのはググればすぐ出てくると思います。
では、今回は以上で。