5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ffmpegを用いてyoutubeからダウンロードしてきた動画を連結

Posted at

はじめに

ちょっと諸事情で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 の中身を以下のように作ります。

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
も編集します。

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を作るのはググればすぐ出てくると思います。
では、今回は以上で。

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?