Pythonによる動画ファイルのダウウンロード方法を載せておきます。
ある動画サイトにある動画をダウンロードするときに、毎回手動でダウンロードするのが面倒臭くて、半自動で動画ファイルをダウンロードしたいないと思ったときに調べた方法で、初心者向けの内容になります。
目次
前提条件
Python3です。
ネットからダウンロードしたい動画ファイルのURLを取得していること。(もちろん、seleniumでもrequests、BeautifulSoupでもなんでもいいのですが……)
URLに’mp4’を含んているような動画ファイルを単純にダウンロードしてくる場合を想定した方法になります。
urllibのurlretrieveを使用して動画をダウンロードする方法
- import urllib.request
- urllib.request.urlretrieve(‘動画ファイルのURL’, ‘保存先のファイルパス’)
この方法で問題なくダウンロードできます。
ただ、ネットをみてると廃止されるかもと情報があったので、この方法では実装しませんでした。
requestsを使用して動画をダウンロードする方法
- import requests
- response = requests.get(‘動画ファイルのURL’)
- with open(‘保存先のファイルパス’, ‘wb’) as saveFile:
- saveFile.write(response.content)
この方法でも問題なくダウンロードできます。
おそらく、この方法がネット上からファイルをダウンロードをするときの標準的で初歩の方法なのではないかなと思っています。
この方法で十分だと思うのですが、この方法ではデフォルトではダウンロードの進捗状況がまったくわからなく、終了時間を把握することができません。(tqdmを使えと言われそうですが…tqdmを使って進捗を見る方法を書きました)
なんとなく画面を眺めているときは、動きがなく、つまらないです。そんなときは、下記の方法がオススメになります。
ffmpegを使用して動画をダウンロードする方法
ffmpegという昔からあって有名な、動画と音声を記録・変換・再生するためのフリーソフトウェアがあります。
あらゆるフォーマットでもどんなOS上でも動いて、コマンドラインから使用することができます。
openCVやらでpythonでも普通に利用されてるようです。
なので、これをPythonから利用します。
ffmpegを使用して動画をダウンロードする方法には、上記2つの方法にはないメリットがあります。
- ダウンロードが進行しているのかどうかがデフォルトでわかります。(色んな情報が見れるので、眺めると楽しいかもです)
- 豊富なオプションコマンドがあり、動画ファイルに対して、望めばこだわったことも簡単にできます。
ffmpegのドキュメントやネット上の記事を読めばその豊富すぎる機能を知ることができます。
今回は、基本的なmp4ファイルの動画ファイルのダウンロードを想定していますが、blobやm3u8やtsファイルの配信動画のダウンロード方法とmp4変換して再生する方法とファイル変換などの応用ができます。
利用方法は、subprocessを使って呼び出す方法とラッパーモジュールを使う方法があります。
ラッパーモジュールはいろいろとあるようです。
参考:ffmpeg を呼び出す系の python ラッパーたち
subprocessから使ってもよいのですが、今回は、ラッパーモジュールを使って最も単純な使用方法を紹介しておきます。
まず、ラッパーモジュールをインストールしておきます。
- pip install ffmpeg-python
あとは、ただダウンロードしたい動画ファイルのURLと保存先のファイパスを指定して動かすだけで、簡単です
- import ffmpeg
- ffmpeg.input(‘動画ファイルのURL’).output(‘保存先のファイルパス’).run()
以上になります。
充実したネット動画生活の助けになれば幸いです。