AbemaTV を Streamlink で直接録画・ダウンロードする

この記事は最終更新日から1年以上が経過しています。情報が古くなっている可能性があります。

毎回忘れてしまうので備忘録がてらメモ。

Streamlink 側のアップデートなどの変化により、執筆当初の2019年1月とは状況がかなり異なってきています。このため、2021年11月に記事の内容を大幅にリニューアルしました。
導入手順も以前よりもかなり簡単に、より分かりやすくなっていると思います。

なんか「唯一の」と謳っているブログ記事があったりしますが、そちらで紹介されている minyami というソフトをインストールする手法よりも簡単でスマートだと思います。Streamlink の AbemaTV プラグインも以前のものより改良されています。
ただ Streamlink では今のところABEMAプレミアムの動画がダウンロードできない(ログイン機能が実装されていない)ので、それがやりたければ minyami を使ってみる価値があるかもしれません。
yt-dlp (youtube-dl の後継) の ver.2022.04.08 から AbemaTV がダウンロードできるようになりました!Abemaプレミアムの動画でもダウンロードできるよう実装されているとのことです。

注意

  • すべて自己の責任において行ってください。どこかから怒られても責任は取れません。
  • 細心の注意は払っていますが、だいぶ前に書いた記事を継ぎ足しながら更新しているので、一部古かったり不正確な情報が含まれていることがあるかもしれません。
  • AbemaTV は ABEMA に名前が変わりましたが、この記事では旧来の AbemaTV の名称で統一します。
  • 私は AbemaTV のプレミアム会員ではないのですが、今のところプレミアム会員(Abemaプレミアム)のみ視聴できる動画はダウンロードできません。
  • AbemaTV の規約違反にはなりますが、どこかに再アップロードしない私的利用の範囲内であれば違法にはなりません。
    • その辺りは YouTube やニコニコ動画を DL するときも全て同じです。
    • ただ少なくとも、「公式からはあまり快く思われない行為である」ということは心得ておいてください。
  • 私は技術的保護手段の解除には当たらないと判断していますが、その点が怖い方は今のうちにやめておきましょう…。
    • 私は法の専門家ではないので、詳しくはネットに強い弁護士にでも聞いてください。
  • きれいな画質で直接録画・ダウンロードしたい方向けの内容です。画面(スクリーン)録画だけで満足している方には面倒なだけだと思います。
  • PC 中級者以上の方に向けた内容になっています。
    • 読めば分かると思いますが、スマホからはこの方法は使えません。
    • Android であれば Termux を使い、Python をインストールした上で pip install streamlink を実行し、コマンドラインで Streamlink をインストールするような手法であればできなくはありません。以前 DL に成功したというコメント を頂きました。
      ただ Linux の CLI 操作に慣れている事が前提のため、初心者の方には厳しいと思います。
  • 今後対策され、この方法が使えなくなる可能性もあります。あらかじめ留意した上で行ってください。
    • DRM が掛かっている一部の番組はダウンロードできません(後述)。
    • DRM が掛かっていなくてもダウンロードできない番組もあるようですが、未検証です。

前提用語

  • Streamlink … コマンドプロンプト上で実行する、AbemaTV を録画(ダウンロード)するのに必要な Python 製の CLI ソフト。
    • AbemaTV の他にも、YouTube Live・Ustream・Vimeo・Twitch・Facebook など、様々なサイトの録画・ダウンロードに対応しています。
    • youtube-dl (yt-dlp)と似たようなソフトですが、ダウンロードよりも受信したストリームを VLC などのメディアプレイヤーで視聴する使い方がメインな点で異なります。
  • FFmpeg … CLI で動作する、万能なメディア変換ソフト。
    • 機能だけでいえば有料ソフトと大差ないくらいの事ができるメディア変換ソフトです。
    • 世の中に存在するほぼ全てのメディア形式を相互に変換できます。
    • この記事では Streamlink に同梱の FFmpeg を使うため、別途導入の必要はありません。
  • Abema-DL.jse … 私が開発した、URL・画質・保存先を入力するだけで比較的簡単に AbemaTV の動画をダウンロードできるようにする PowerShell スクリプト。
    • ダブルクリックで実行できます。デスクトップにでも配置してください。
  • 生録画 … AbemaTV で放送されているライブ配信を直接録画すること。
    • 以前の Streamlink では生録画をすると CM も一緒に録画されてしまいます。本放送と CM という解像度の異なる映像を一つの映像にまとめてしまうため、以前は多くのプレイヤーで CM が入るタイミングで再生不能に陥る動画ファイルが出力されてしまっていました。
    • 2021年8月の Streamlink の更新 で CM の映像を出力に書き込まないようにする変更が適用されたことにより、生録画でもちゃんと録画できるようになりました…!!
      • ただ再生はできるものの再生速度が微妙に変になる事がある (PTS (Packet Time Stamp) の破損が原因?) ので、可能なら「ビデオ化された動画」をダウンロードすることをおすすめします。
    • とはいえ基本的には「ビデオ化された動画」として1週間程度アーカイブが残るので、生録画が必要になる場面はそう多くないような気がします。
  • タイムシフト動画 … AbemaTV でライブ配信された番組のアーカイブ動画。
    • 前述の FFmpeg にて無劣化変換を行うことで正常に再生できるようになります。
  • ビデオ化された動画 … AbemaTV で放送された後、ABEMA ビデオとしてアーカイブされる動画。
    • いまいちタイムシフト動画との違いがよく分かっていないのですが、こちらも FFmpeg で無劣化変換することで正常に再生できるようになります。
  • 無劣化変換 … 動画ファイルの中に入っている動画・音声データをまるごと別のコンテナにコピーすること。
    • 動画ファイルはコンテナになっていて、中には動画データと音声データが入っています。そのコンテナを移し替えるだけなので画質が一切劣化しないほか、変換処理が一瞬で終わるのでとても速いです。
    • AbemaTVの MPEG2-TS 形式のコンテナの場合、主に動画が H.264 形式、音声が AAC 形式で入っているので、中身はそのままに MPEG2-TS 形式から MP4 形式のコンテナに移し替えるイメージです。
    • 無劣化で高画質な分、ファイルサイズが 100MB を超えます。ファイルサイズが気になる方は普通にエンコードして変換した方がいいかもしれません。ただし、ファイルサイズと画質はトレードオフです。
  • .ts ファイル … MPEG2-TS 形式の動画ファイル。
    • AbemaTV の動画は MPEG2-TS (HLS) 形式で配信されています。
    • MPEG2-TS 形式は一般的ではなく、一部のプレイヤーでは再生できないことがあります。前述したように FFmpeg で無劣化変換を行い、MP4 に変換しておくことを推奨します。
    • Abema-DL.jse ではダウンロード後、自動的に MP4 へ無劣化変換を行います。
  • .mp4 ファイル … MP4 形式の動画ファイル。
    • 無劣化変換を実行すると作成される、ごく一般的な動画ファイルです。ほとんどの動画プレイヤーで再生できます。

長くなりましたが、サラッと理解できれば大丈夫だと思います。
逆に上記の内容が微塵も理解できない場合、やめておいた方が無難です…。

必要なソフトの導入

Streamlink

GitHub より、一番上にある最新バージョンの streamlink-(バージョン番号)-py310-x86_64.exe をダウンロードします。
執筆時点のバージョンは v4.2.0 ですが、できるだけ最新版をダウンロードしてください。

ダウンロードが終わったらダブルクリックでインストーラーを実行し、インストールします。
インストール時にいくつかオプションがありますが、すべてそのままで大丈夫です。

Streamlink 3.0.0 以前のバージョン (v1.x.x ~ v2.x.x) からアップデートする場合、必ず C:\Users\(ユーザー名)\AppData\Roaming\streamlink フォルダにある config ファイルと streamlinkrc ファイルを削除してからインストールしてください!
これは Streamlink 3.0.0 で RTMP という古いプロトコルのサポートが削除されたことに起因するものです[1]https://github.com/streamlink/streamlink-twitch-gui/issues/842。これを行っておかないと、今後の手順で Streamlink の実行に失敗します。

基本的には -py310-x86_64.exe (64bit 向け) で OK ですが、 32bit PC(2013 年頃の Windows タブレットなど)では -py310-x86.exe (32bit 向け) を DL してください。
また、-py38 のサフィックスがついたファイルは Windows 7 向けのインストーラーです(Python 3.9 以降のバージョンは Windows 7 に対応していないため、Python 3.8 が同梱されている)。

近年のアップデートで、Streamlink に FFmpeg が同梱されるようになりました。
後述の Abema-DL.jse では Streamlink に同梱の FFmpeg を使うため、以前の導入手順とは異なり、別途 FFmpeg を導入する必要はありません。

Abema-DL.jse

こちら から私が作成した PowerShell スクリプトをダウンロードできます。
ダウンロードできたらファイルの拡張子を .txt から .jse に変更して、適当にデスクトップにでも配置してください。

以前配布していた Abema-DL.bat の後継です。
機能的には同じですが、エラー処理など動作の安定性が大幅に向上しています。
現在も Abema-DL.bat をお使いの方は、Abema-DL.jse に更新してください。

.jse ファイルは見慣れないと思いますが、.exe ファイル同様にダブルクリックで実行できます。
セキュリティ警告が出たりブラウザでブロックされる場合がありますが、ウイルスではありません(ウイルスだと疑うならコードを読んでください)。もし不安と感じるのであれば実行しないでください。

Abema-DL.jse の実体は Streamlink に渡すオプションを対話的に取得し、最後に streamlink コマンドを実行し、ダウンロードした .ts ファイルを ffmpeg に通すだけのヘルパースクリプトです。
streamlink コマンドを CLI から叩いた方が楽という方はあえて導入する必要はありません。

PowerShell スクリプトは残念ながら標準ではダブルクリックで実行できないようになっているため、JScript という別のスクリプト言語としてダブルクリックで実行できるように細工しています。拡張子が .ps1 ではなく .jse になっているのもそのためです。

ただこの手法は(というより、.jse ファイルそのものが)どうもウイルスだと怪しまれやすいようで、Chrome でダウンロード自体がブロックされてしまう事があります。このため、やむを得ずダウンロード時の拡張子を .txt にしています。

PowerShell スクリプトなので、古い PowerShell しか入っていない環境(Windows 7 など)では使えないと思います。動作確認は PowerShell 5.1 と PowerShell 7 で行っています。
Windows 7 でも PowerShell 5.1 を入れる事は可能なので、どうしてもやりたい方は試してみるといいんじゃないでしょうか。

録画(ダウンロード)方法

AbemaTV の動画には 1080p・720p・480p・360p・240p・180p の画質が用意されているので、画質設定を best にしておけば、基本的に 1080p でダウンロードされます。

ただ、AbemaTV が制作していないアニメなどの番組では、画質設定としては 1080p も含め全て用意されているものの、ソース動画が 720p・480p までしかない場合もあります。
そうした関係で、1080p と入力しても実際には 720p や 480p の動画がダウンロードされてくることもあります。配信ライセンス料の額によって画質が違うだとか、そういった大人の事情が絡んでいそうなので仕方なさそうです。

番組によっても変わってくるようですが、1080p でダウンロードした場合、物によりますがファイルサイズが 300MB は確実に超えるので、できれば TB 級の HDD を用意しておくと良いと思います。

もし 1080p で配信されていれば、地上波で放映されているもの (1440×1080) よりも多い画素数 (1920×1080) の動画をダウンロードでき、さらに局ロゴも入りません。
さらに(無料会員では1週間の期間限定にはなりますが)公式に配信されている動画です。
合法的に 1080p のきれいなアニメをダウンロードする方法としては唯一と言えるかもしれません。

Abema-DL.jse を使用する方法(比較的簡単)

デスクトップにでも配置した Abema-DL.jse をダブルクリックして実行します。

すると上のような青いウインドウが表示されるので、ダウンロードしたい動画・生放送の URL をコピー & ペーストして貼り付け、Enter キーを押します。

黒い画面上で右クリックするとコピーした URL を貼り付ける事ができます。

コマンドプロンプトには怖いイメージがあるかもしれませんが、このスクリプトを使う場合は出てくる指示通りに入力して Enter キーを押すだけなので、安心して利用できると思います。

Enter キーを押すと動画の画質を訊かれるので、best・1080p・720p・480p・360p・240p・180p から選んで入力します。

best を入力しておけば、基本的には 1080p でダウンロードされます。ファイルサイズが気になるのであれば、720p や 480p などにしておくとファイルサイズを削減できます。
アニメなら 720p までは気にならない程度の画質劣化ですが、480p 以下になると画質が見て分かる程度には荒くなります。

最後に動画の保存先を訊かれるので、動画の保存先を入力します。
エクスプローラーのフォルダをドロップすると、そのフォルダのパスが入力されます。

指定されたフォルダが存在しないときは、自動的に新しいフォルダを作成します。
フォルダの指定を省略したときは、C:\Users\(ユーザー名)\Downloads 以下に保存します。

最後に Enter キーを押すと 「ダウンロードを開始します」と表示され、ダウンロードと MP4 形式への変換が自動で開始されます。
ファイルサイズが大きいため、ダウンロードにはそこそこ時間がかかります。お茶でも飲んで待ちましょう。

現在放送中の生放送を録画している場合は、録画を終了したいタイミングで Ctrl+C を押下して録画を中断させてください。Ctrl+C を押さないままだと、永遠に録画が終わらなくなってしまいます。
Ctrl+C を押してもすぐに反応がない事がありますが、何回か押して、しばらく待ってみるとちゃんと出力の続きが表示されるはずです。

「動画のダウンロードに失敗しました」と表示されていなければ、正しくダウンロードできているはずです。
保存先に指定したフォルダを開いて、ダウンロードできているか確認してみましょう。お疲れ様でした。

最後に「ほかの動画・生放送もダウンロードしますか? (Y/N)」と訊かれます。
ここで Y を入力すると、もう一度 Abema-DL.jse を実行することができます。再度開き直す必要はありません。連続でダウンロードする事が多い方は試してみると良いと思います。

直接コマンドラインから実行する方法(上級者向け)

コマンド操作に慣れている上級者向けの内容です。コマンドの方が楽な方以外はおすすめしません。

Windows Terminal で PowerShell を開きます。

streamlink "(AbemaTV のチャンネル・動画の URL)" "(画質: best・1080p・720p・480p・360p・240p・180pの中から選択)"  -o "(出力先のフォルダ)(ファイル名).ts"

上記のコマンドを実行し、動画をダウンロードします。

ffmpeg -i "(出力先のフォルダ)(ファイル名).ts" -c copy "(出力先のフォルダ)(ファイル名).mp4"

動画は MPEG2-TS 形式で保存されています。上記のコマンドを実行し、FFmpeg を利用して MP4 形式に無劣化変換しておきます。再エンコードを行わないため高速です。
変換前のファイルが不要なら、適宜 rm "(出力先のフォルダ)(ファイル名).ts" で削除してください。

ffmpeg -i "(出力先のフォルダ)(ファイル名).ts" -vcodec libx264 -crf (ビットレート(固定品質): 22~25あたりを推奨) -acodec aac -ab 192k "(出力先のフォルダ)(ファイル名).mp4"

ファイルサイズが気になる方は、ここで -c copy を外して再エンコードすることもできます。
ビットレートを低くするほど画質が落ちてファイルサイズが小さくなりますが、上げすぎてもファイルサイズが増えるだけで、元動画より綺麗になることはありません。注意してください。

変換が終われば指定のフォルダに MP4 ファイルが作成されているはずです。お疲れ様でした。

DRM のかかった動画について

ダウンロードできない動画

最近、たとえば とある科学の超電磁砲T など、AbemaTV 内でも DRM (デジタル著作権管理) が掛かっている動画が出てきています。

ダウンロードしたはずの動画が上の画像のようになっている場合は、DRM が掛かっているため AbemaTV からはダウンロードする事ができません。

DRM が掛かっている動画には「視聴開始できない場合はこちら」という表示がついている事が多いようで、そのあたりで判別がつきそうです。
[確認する] をクリックすると「視聴できないコンテンツがあります」のページに飛ばされます。DRM は性質上一部端末では使えなかったり、対応しているブラウザでも複数のディスプレイを接続しているなどで HDCP の要件が守られていないと視聴できなかったりと機種依存が多めなので、このようなページを用意しているものと思われます。

AbemaTV の2つの配信形式

技術的な話になりますが、AbemaTV は HLS (HTTP Live Streaming) + AES-128 暗号化 と、MPEG-DASH or HLS + DRM (PlayReady・Widevine・FairPlay) という2種類の規格を併用して運用しているようです。

DRM は Netflix や Amazon Prime などのサービスも採用しているなど守りに関しては鉄壁ですが、一方で DRM による配信にはコストが掛かります。たとえば iOS 端末向けの PlayReady という DRM の場合、再生端末ごとに $0.35 (約38円) 掛かるとのこと。
Netflix のように有料課金が前提のサービスなら DRM の使用料を賄えますが、無料配信を行っている AbemaTV の収益モデルとは相性が悪そうです。
また、テレビや古い端末では DRM に対応していない場合があるため、全ての端末で再生できる訳ではありません。

一方、HLS + AES-128 暗号化 はこの記事でダウンロードできているように守り自体は脆弱です。
それでも VideoDownloadHelper といったブラウザの拡張機能では正常にダウンロードできなかったり、開発者ツールから .ts ファイルを直接 DL しても再生できないなど、(Streamlink のような玄人向けソフトを使ってようやく保存できるあたり)コンテンツ保護には一定の効果があると考えられます。さらにゲーム機や古いブラウザでは対応していない事がありますが、それ以外の端末では概ね対応している形式といえます。

DRM と AES-128 暗号化の違いは復号鍵が隠されているか、公開されているかの違いです。

DRM は暗号化された動画ファイルを復号して見れるようにするための鍵(復号鍵)、もしくはネットから DL してきた「暗号化された復号鍵」を復号して復号鍵として使えるようにするための鍵が、ブラウザなどの再生クライアント側に巧妙に隠されています。
当然復号鍵や復号アルゴリズムは非公開のため、技術的にも DRM の解除は困難を極めます。さらにすぐに対策されてしまうので、難易度が極めて高いです。加えて前述のように法に抵触します。

一方、AES-128 暗号化は動画ファイルを暗号化している「だけ」で復号鍵はネット上にそのまま公開されているため、FFmpeg などのツールを使えば、簡単に復号できてしまいます。
.ts ファイルを直接ダウンロードするといったカジュアルな DL 手法を防ぐくらいで、ツールを使えばすぐに迂回できてしまいます。コンテンツ保護してる「風」にするための技術といったところです。
ほとんどのサイトでは、m3u8 プレイリストファイルの中に復号鍵の URL が記載されているだけで、youtube-dl (yt-dlp) などのツールでいともたやすくダウンロードできてしまいます。

ニコニコ動画や AbemaTV のように、鍵の管理や生成を工夫して FFmpeg や youtube-dl (yt-dlp) に m3u8 プレイリストの URL を指定しただけでは DL できないよう対策しているサイトもいくつかあります。ただブラウザで DRM を使わずに復号し動画を再生できている以上、ブラウザ上で動作している再生までの処理をエミュレートすれば、理論上はダウンロードできてしまいます。
そして、それを実装したツールが youtube-dl (yt-dlp) や Streamlink というわけです。

こうした背景から、AbemaTV では基本は HLS + AES-128 暗号化 を利用し、コンテンツの提供元からの要望があった場合のみ DRM を利用するようにしていると考えられます。

DRM が掛かっている動画をダウンロードすると「お使いの端末では再生できないコンテンツです」という動画がダウンロードされるのも、DRM 非対応の端末向けのダミーファイルと考えるのが自然でしょう。

余談

ちなみに、ニコニコ動画の一部の公式配信(製作委員会に角川が入っているもの)は、2019 年から HLS + AES-128 暗号化 で保護されるようになりました。さすがに DRM を掛けるほどでもないが、野放しにはしたくないという判断からなのでしょうか。

HLS + AES-128 暗号化が行われている公式動画は、動画を右クリックで表示されるメニューに [視聴方法の切り替え (hls > http)] が表示されないことで判別できます。それより前は画質悪いとはいえ簡単にダウンロードし放題だったので、今までがルーズすぎたともいえます。

そうしたコンテンツ保護が掛けられている公式動画は、更新が停止した youtube-dl のフォーク、yt-dlp を使うことでダウンロードできます。私が公式動画をダウンロードできるように変更したコードを他の方がさらに改善し、yt-dlp にマージして頂いたものです ( Issue#171, Pull Request#49 )。
インストール・利用方法はここでは説明しません。わかる方のみ使ってください。

AbemaTV では DRM がかかっているコンテンツがニコニコでも配信されている場合は、ニコニコからダウンロードするのも一つの手でしょう。もっとも「ニコニコチャンネル」のロゴ入りでよければですが。

コメント

  1. いま(2020/01/03)ではできなくなったかもです。
    APIにアクセスするとBadRequestを返してしまうので。

    • まじすか… 確認しておきます…

    • 確認しましたが、少なくともビデオ化された動画であれば Streamlink で正常にダウンロードできることを確認しました。
      宜しくお願いします。

  2. はじめまして、お聞きしてすみません。
    Streamlinkのexeを実行しようとするとセキュリティのエラーが出るのですが、ご紹介のリンク先からのファイルであれば実行して大丈夫でしょうか…?

    ttps://abema.tv/video/title/218-101

    このコンテンツのアーカイブを保存したいと思うのですが対応していますでしょうか…?

    • セキュリティに関しては大丈夫かと思います。
      ただ、記事内でも書いているように、現状、残念ながらプレミアム会員のみ視聴可能な動画(=無料では見れない動画)はダウンロードすることができません…
      ログインしない状態で見れる動画(あと○日間 と表示されているもの)であれば Streamlink でダウンロードできると思います。

      • 無料視聴可能ビデオはDLできないように対策がされました。
        (現在確認できているのは以下のみ)
        今後も増えていくと思われますので回避方法があれば、ご教示下さい。

        ttps://abe ma.tv/video/title/199-30

        ttps://abe ma.tv/video/episode/199-30_s3_p6

        ※DLが約9MBでストップします。
        ※サイトで再生直後に警告メッセージが表示されます。

        • あー…
          どうも超電磁砲だけ DRM (WideVine) が掛かっているらしく、Streamlink で DL しようとすると「お使いのデバイスでは視聴できないコンテンツです」というメッセージが表示された動画が DL されます。
          DLが9MBで終了するのもそのメッセージ動画を DL しているからでしょう。
          再生直後のDVDみたいな警告メッセージはおそらく関係ないと思いますが、製作委員会の方針なのかもしれません。

          残念ながら DRM で保護されているコンテンツは基本的に DL できませんし、DL できたとしてもおそらく法に触れます…
          今後増えていくのか、それとも特定のアニメのみなのかはわかりません。
          ニコニコチャンネルの方は 私が改良した youtube-dl を使うことでダウンロードできることを確認しました(何故か本家が Merge してくれなくてつらみ…)。

          • 確認ありがとうございます。
            DRMが掛かっていたとは思いもよりませんでした・・・・。

            tsukumi さんが改良されたyoutube-dlからexeを作成し、
            「youtube-dl –version」を実行しましたがエラーとなりました。

            <エラー>
            Traceback (most recent call last):
            File “youtube-dl”, line 3, in
            ModuleNotFoundError: No module named ‘youtube_dl’
            [8976] Failed to execute script youtube-dl

            Pythonの知識がないため、ビルドのやり方が
            間違っていると思うので確認させて下さい。

            exe作成には/bin配下のyoutube-dlを以下コマンドで
            ビルドする事で間違いないでしょうか。

            <コマンド>
            pyinstaller youtube-dl –onefile

          • わっかんないですね… Python はあまり詳しくないので…
            No module named ‘youtube_dl’ なので、恐らく youtube-dl 本体が読み込めてない状態だと思います。
            どうにかして youtube-dl 本体のパスを指定できれば exe 化できるかと…

  3. ありがとうございます。
    exe作成はもう少し調べてみます。

    ニコニコチャンネルからのDL確認はどのようにされたのか教えて下さい。

    tsukumiさんが改良されたyoutube-dlを使用するためには
    exeを作成が必要と考えていました。

    • >>ニコニコチャンネルからのDL確認
      どういう意味かよくわかりませんが、期間限定で公開中のアニメの URL を指定してみたらいいんじゃないんでしょうか
      PC に Python の実行環境をいれれば exe 化しなくても実行できるような気がします

  4. 簡単にフルHD画質でDLできて助かりました。
    アーカイブ動画について質問があります。
    プレミアム会員になって、URLを使ったとしても、Streamlink内のabematv.pyの書き換えが必要という意味でしょうか?

    • そういうことになりますね(Python書ける人じゃないと難しいですが)
      書き換え、というより、現状の abematv.py はログインに対応していないので、ログインに対応できるよう改造すればいけるんじゃないですか、程度です
      AbemaTV の会員ではないのでなんとも

  5. Abema-DL.bat を実行すると『エラーコード:9009』と表示され、ダウンロードに失敗してしまいます。
    念のため他の動画でも実行してみたのですが、同様のエラーが表示されてしまいます。
    Streamlinkは1.3.1、ffmpegは4.2.2をインストールしました。
    現在はこのダウンロード方法は利用できないのでしょうか。
    何か解決策がございましたらご教示頂ければ幸いです。

    • 少なくともうちの環境と https://abema.tv/video/episode/54-43_s1_p12 で試してみたところ普通にダウンロードできることを確認しました。
      エラーコード:9009とのことなので、ファイルの読み書き周りのエラーなんだと思いますが…謎…
      AbemaTV では DRM がかかった動画も確認している(DRM のかかっているものはダウンロードできない)のでそれかもしれません。

  6. Abea-DL.bat(v2.1)を実行すると、エラーが出てDLできませんでした。
    導入したStreamlinkは1.4.1、ffmpegは4.2.3です。
    エラー文は、
    「’Streamlink’は内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されていません」
    「ダウンロードに失敗しました…エラーコード:”9009″」
    です。
    なお、環境変数にStreamlinkとffmpegを登録し、コマンドプロンプトより直接呼び出しを行ってDLをしたところ、
    Streamlinkを利用してDLでき、ffmpegを利用して変換できましたので、2つは正常に導入できていると思われます。
    教示されたとおり、C:\ApplicationsにStreamlinkとffmpegをDLしてあります。
    何か解決法はありますでしょうか。

    • もしかして、Abema-DL.bat を実行した際の環境変数に Streamlink が登録されていなかったとかではないでしょうか…?
      「’Streamlink’は内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されていません」のエラーが出ているということは streamlink.exe がどこにあるか見つけられていないので、
      最悪バッチファイル内の Streamlink “%URL%” “%quality%” -o “%folder%%out%.ts” の部分を
      C:\Applications\Streamlink\bin\streamlink.exe “%URL%” “%quality%” -o “%folder%%out%.ts” のように変更して、
      フルパスで streamlink.exe を指定してあげれば動くはずです。

      • ありがとうございます。
        自分で環境変数にStreamlinkとffmpegを登録しようとした際、C:\ApplicationsのパスでStreamlinkは登録されていたんですよね。
        (exeでインストールした際に登録された?)
        自分で登録したのは、ffmpegのみでした。

        「’Streamlink’は内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されていません」
        のエラーは、見つけられないときに出てくるエラーなんですね。
        (当方バッチファイルに詳しくなく…)
        ご指示通り、バッチファイル内のStreamlinkのところでフルパスを指定したところ、エラーも出ずに正常に動くようになりました。
        大変ありがとうございます。

        これについて何かわかりましたら、情報提供としてコメントさせていただくかもしれません。
        今後ともよろしくおねがいします

  7. たいへん重宝しております。感謝感謝

  8. streamlink、ffmpegともに最新のものをダウンロードしました。
    ダウンロードが終わってから、「指定したパスが見つかりません」と出るため保存できません。
    いろんなフォルダ、ほかの動画でも試してみたのですがどれも同じでした。
    パスはあっているはずなのですが…。
    解決策など何かご存知でしたらご教示頂けたら幸いです。

    • >>「指定したパスが見つかりません」と出るため保存できません
      streamlink.exe と ffmpeg.exe のパスがシステム環境変数に登録されていないことが考えられます。
      システム環境変数に登録されているか、コマンドプロンプト上で streamlink や ffmpeg と入力して何かメッセージが返ってくるかを確認してください。
      最悪、バッチファイル内の streamlink や ffmpeg をフルパスで指定すれば動くと思います。

      • 【追記】ffmpeg はシステム環境変数に追加する手間を避けるため、バッチファイル内の変数でファイルパスを定義しています。
        このため、デフォルトで設定されている C:¥Applications¥ffmpeg¥bin¥ffmpeg.exe に ffmpeg.exe がない場合は実行ファイルを見つけられません。
        バッチファイル内の ffmpeg のパスを設定し直せばいけるはずです(言葉足らずですみません…)

        • 詳しい解説ありがとうございます。自分も同様の現象でダウンロードできません。「C:¥Applications¥」とはどこの部分でしょうか?入れてもエラーになります。例えば、デスクトップだと「C:\Users\ユーザー名\Desktop」となると思いますが、「エクスプローラーのオプション→隠しファイル、隠しフォルダおよび隠しドライブを表示する」をチェックしても出てきません。お手すきの時に教えて頂けるとありがたいです。

          • あー…
            C:\Applications は私の環境で独自に作成しているフォルダです。C:\Program Files 以下に置くと何かと不具合が出ることがあるため、新しく C:\ 直下に Applications フォルダを作成し、そこに各種ソフトを配置することをおすすめしています。

      • IT版はよく知らないのに誹謗中傷や教えてクレクレおじさん、文句ばかり言う人が多いなか、本当に親切に教えて頂いてありがとうございます。無事ダウンロードできました。
        お忙しい中、無料で、このようなソフトの配布と教えて頂き感謝してます。

        ちなみに、「エラーコード:9009」はほかのところでご指摘のように「Streamlink」周りを設定していないからだと思います。

        アベマでニュースソースを保存するために必要で本当に助かりました。ありがとうございます

        • いえいえ… お役に立てたようで幸いです。
          元々自分用のメモ書きだったのですが、いつのまにか検索で上位に来てしまったようで…
          DRM 化されてる動画も含め、一部 DL できない動画もあるようですが、ほとんどの動画はこの方法でダウンロードできるんじゃないかと思います。

  9. 「指定されたパスが見つかりません」と出るため保存できません。

    [cli][info] Found matching plugin abematv for URL https://abema.tv/video/episode/90-63hxm8u6w4rp_s0_p1308
    [cli][info] Available streams: 180p (worst), 240p, 360p, 480p, 720p, 1080p (best)
    [cli][info] Opening stream: 1080p (hls)
    [download][Abema.ts] Written 3.43 GB (13m4s @ 4.4 MB/s)
    [cli][info] Stream ended
    [cli][info] Closing currently open stream…
    指定されたパスが見つかりません。

    環境変数編集でstreamlink、 ffmpegともにパス指定いたしました。
    ダウンロード中はデスクトップ上に保存ファイルが現れますが失敗後は消えてしまいます。

    お力添えお願いいたします。

    • fmpeg はシステム環境変数に追加する手間を避けるため、バッチファイル内の変数でファイルパスを定義しています。
      このため、デフォルトで設定されている C:¥Applications¥ffmpeg¥bin¥ffmpeg.exe に ffmpeg.exe がない場合は ffmpeg コマンドを見つけられず、上記のエラーが発生するものと思われます。
      C:¥Applications¥ffmpeg¥bin 以下に ffmpeg.exe を配置するか、バッチファイル内の ffmpeg のパス設定を変更すればダウンロードできるはずです(記事が言葉足らずですみません…)
      最悪、バッチファイル内にある TSdelete の設定を 1 → 0 に変更すると ダウンロードした元の .ts ファイルを削除しなくなるので、折角 DL したのにファイルが消える、という事態は避けられるはずです。

  10. はじめまして。いつも役立つ情報をありがとうございます。「Abema-DL.bat」の方は無事に実行できたのですがtsukumiさんが改良された「youtube-dl」も使用したいと思いダウンロードしたところ普通の「youtube-dl」にはあるはずの「youtube-dl.exe」(実行ファイル)がなかったのでうまく実行することができませんでした。自分でもいろいろ調べたのですがどうにも技術が足りないのかよく分からない状況です。どうかご教授いただけないでしょうか?

    • youtube-dl は元々 Python で開発されているソフトで、youtube-dl.exe はそれを exe 化したものになります。
      Python はインタプリタ型言語のため、exe 化しなくても実行することができます。ただし、pip のパッケージからインストールしたものではないため(bin/youtube-dl は import youtube_dl するときにパッケージでインストールされている方の youtube-dl を読み込んでしまう)、
      実行する場合は確か youtube_dl/__main__.py を直接 python youtube_dl/__main__.py のように指定する必要があったと思います。
      このあたりは Python に触れていないと難しいかもしれません。自力で exe 化することも可能だとは思いますが、やり方を知らないのでなんともいえないです… すみません…
      私は pip でパッケージ管理された youtube-dl に改良した部分を上書きして使っています(荒業ではある)。

      • 返信ありがとうございます!
        早速Pythonをインストールしました。ですが先程のtsukumiさんメッセージでよくわからない部分があったので確認のためいくつか質問をさせてください。まずtsukumiさんの言う「youtube_dl/__main__.py」というのは「youtube_dl」というファイルの中の「__main__.py」のことを指しているのでしょうか?

        それからtsukumiさんが言ったように「python youtube_dl/__main__.py」という風にファイルを指定し直したあとは普通のyoutube-dlのようにその指定し直したファイルを「ffmpeg.exe」と同じフォルダーに入れれば改良されたyoutube-dlを使用することができるということでいいのでしょうか??

        知識が足らず誠に申し訳ないのですがどうかご教授いただきたいです。よろしくおねがいいたします。

        • >>「youtube_dl」というファイルの中の「__main__.py」のことを指しているのでしょうか?
          そうです。 python __main__.py で実行できるはずです。

          …説明するのが面倒になってきたので、py2exe で exe 化したものを配布しておきます(なぜか SSL 関係の DLL を bundle してくれなくて本家のように1ファイルにできなかったのが悔やまれる)。
          Zip ファイルを解凍して適当なフォルダに配置、必要ならシステム環境設定で Path を登録するだけです。多分動くと思います(自分の環境以外検証してないけど)。
          exe 化の方法ですが、予め Python 3.7 をインストールした上で、https://note.com/noelrecords/n/n0dc600acf1c0 を参考に Python 3.7 対応の py2exe をインストールし、youtube-dl フォルダ内で python setup.py py2exe を実行すると作成できました。参考までに…
          https://github.com/tsukumijima/youtube-dl/releases

          • 連絡が遅くなり申し訳ありません。tsukumiさんのおかげでniconico動画からも動画をダウンロードすることができるようになりました。この度は本当にありがとうございました。たださすがに公式チャンネル(アニメなど)の動画は無料・有料にかかわらずダウンロードできないんですね。

          • できないってことはないと思いますが…
            私のフォークは主に KADOKAWA 系の暗号化されている公式動画を DL できるようにしたものなので…
            有料動画は試していませんが、youtube-dl のログインオプションを指定してみたらいけそうな気もします

  11. はじめまして。
    Fatal error in launcher: Unable to create process using ‘”C:\Applications\Python\python.exe” “C:\Applications\Streamlink\bin\streamlink.exe
    エラーコード:”1″と出てアベマからダウンロードできません。
    恐らく、URL周りが仕様変更されたと思います。

    • 少なくともエラーからして Streamlink を立ち上げる以前の問題ですね… Python を複数入れている場合にそうなることがあるようです。
      https://qiita.com/Hibikine_Kage/items/3feffdf467c6ac5bd43b あたりを参考に PATH を整理したりしてみてください。

      • とりあえず一旦、ffmpeg、Streamlinkを最新にしてから整理していたら何とか動くようになりました。お騒がせしましたw
        あと、上のffmpegのリンク先閉鎖した様です
        7z必要ですが私はhttps://www.gyan.dev/ffmpeg/builds/から落としました

        • Zeranoe 閉鎖しちゃったんですよね…
          Wayback Machine にアーカイブが残っているので、しばらくはそれのリンクを貼っておこうかと思います(一応代替はできたものの、正直 Zeranoe のときよりわかりにくくなっているのが)

  12. 初めまして。

    スクリプト等に全然詳しくなくて申し訳ないのですが、エラーコード9009というのが出るのはDL無理という意味なのでしょうか?
    途中まではできていると思うのですが最後の最後でできない状況です。

    • バッチファイル上の %errorlevel% に 9009 が入る場合は、コマンドを見つけられないので実行できないといった場合が多いようです。
      途中まではうまく行っている、というと streamlink は実行できているような気がします。ffmpeg のパスの設定が間違っているのだと思うので、バッチファイル内の ffmpeg.exe のパスを確認してください。
      最悪、バッチファイル内の「TSを削除する」を 0 に設定すると ffmpeg での無劣化変換に失敗してもファイル自体は残るので、ダウンロードはうまくできたのに ffmpeg が実行できないせいで折角ダウンロードできたファイルが消えてしまう、という事態は避けられます。

  13. 参考にさせてもらいました。ありがとうございます。方法は違いますがandroidのABEMAアプリをroot化したNoxPlayerにいれてそれでダウンロードした動画の場所は特定しました。ただしexoというファイルになっておりまた一つ一つが分割されているようです。なかなかむずかしいですね。まあたぶんネットの配信みたいにtsファイルのようにたくさん分けているんだと思います。

    • そうなんですかー
      やってみるとしたらとりあえず PC にファイル持ってきて ffmpeg に食わせてみるとかでしょうかねー
      ffmpeg に食わせてみてエラーが出たら暗号化されてるか DRM が掛かってるとかな気がします。

  14. 動画全体ではなく、一部を時間指定してダウンロードすることはできますか?可能であれば、その方法を詳しく紹介してもらえるとありがたいです。

    • 動画の一部を時間を指定して切り取ることはストリーミングの仕組みからして難しいです。
      ただし、ダウンロード後に時間を指定してカットすることは可能です。コマンドラインで行う方法であれば ffmpeg などが利用できますし、LosslessCut といった無劣化でカットできるソフトもあります。
      ffmpeg で動画を切り取る方法に関しては nico-lab さんの こちら の記事が参考になります。

  15. Abema-DL.batをメモ帳などのテキストエディタで開いて、
    4行目(空行も含めると6行目)の
    set ffmpeg_path=C:\Applications\ffmpeg\bin\ffmpeg.exe
    を書き換えれば上手く行くと思います。

    同梱のffmpegでもmp4動画は作れるので、Streamlinkのインストール先を書かれてはどうでしょうか?

    例えば、
    set ffmpeg_path=C:\Applications\Streamlink\ffmpeg\ffmpeg.exe
    とか
    set ffmpeg_path=C:\Program Files(x86)\Streamlink\ffmpeg\ffmpeg.exe
    と書き換えれば大丈夫だと思いますよ。

  16. 早めに返信をいただきありがとうございます。ストリーミングの仕組みのことはよく知りませんが、難しいようなので、無劣化で切り取りが簡単な解決策のようですね。また質問があればよろしくお願いいたします。

  17. 素晴らしい仕組みをありがとうございます!
    コマンドで確認しながら実行しましたが、batで一発変換とか捗りすぎて大感謝です!

    • いえいえ、適当に作ったバッチですが好評いただいてるようで何よりです(?)

  18. >私が改造した youtube-dl を使うことでダウンロードできます(本家にプルリクしたけど Merge してくれな>い…・ついでに TVer もダウンロードできるようにした)
    >インストール・利用方法はここでは説明しません。わかる方のみ使ってください。
    >一応 exe 化したものを配布しているので、それを使えば比較的簡単に利用できるとは思います。

    この、exe、エラーがでます。

    C:\Users\salerno\Downloads\tmp\youtube-dl-2020.11.01.1-fork2\youtube-dl>youtube-
    dl.exe https://tver.jp/corner/f0060730
    [TVer] f0060730: Downloading webpage
    [TVer] ref:6207564999001: Downloading webpage
    [TVer] ref:6207564999001: Downloading JSON metadata
    ERROR: Unable to download JSON metadata: HTTP Error 404: Not Found (caused by ); please report this issue on https://yt-dl.org/bug .
    Make sure you are using the latest version; type youtube-dl -U to update. Be
    sure to call youtube-dl with the –verbose flag and include its complete output.

    C:\Users\salerno\Downloads\tmp\youtube-dl-2020.11.01.1-fork2\youtube-dl>

    所望のhtmlが、取得できていない模様。
    アンケートなどの、ポップアップ?クロームの64bitじゃだめとか?

    よろしくおねがいします。

    • 確認したところ、TVer が内部で利用している Brightcove のプレイヤー ID の仕様がなぜか動画によってまちまちらしく、プレイヤー ID の前に ‘ref:’ という接頭辞がつく動画とそうでない動画が混在しており、このうち ‘ref:’ がつかない動画でダウンロードに失敗していました。両方の動画を想定し、404 エラーが返ってきたときにプレイヤー ID から ‘ref:’ を外すように変更することで解決しました。
      修正したバージョンをリリースしましたので、更新していただければと思います。報告ありがとうございました。
      https://github.com/tsukumijima/yt-dl/releases

  19. はじめまして。
    実行時のエラーについて、解決方法をご教示お願い致します。

    ========================================================
    [cli][info] Found matching plugin abematv for URL https://abema.tv/channels/payperview-1/slots/AakjKLgTGb6msu
    error: Unable to open URL: https://api.abema.io/v1/media/slots/AakjKLgTGb6msu (404 Client Error: Not Found for url: https://api.abema.io/v1/media/slots/AakjKLgTGb6msu)
    ========================================================
    ダウンロードに失敗しました… エラーコード:”1″
    URLが正しいかどうか、正しく入力されているかどうか、確認してください。
    ========================================================

    • 既に視聴期限が切れているためなんともいえませんが、URL に payperview とあることから課金型の番組と思われます。
      今のところ abematv.py には Abemaプレミアムやその他課金・ログインが必要な番組をダウンロードする機能はありません。

  20. 情報報告です
    現在(2020/11/26)でもつかえます。
    またあんていしております。

    • 報告ありがどうございます!

  21. 期間限定で無料のアニメなどはダウンロードできないのでしょうか??

    • 基本的にはダウンロードできるはずです。ただし、記事の後半にあるように DRM のかかっている一部の動画は無理です。
      とりあえず対象のアニメの URL を入れてみて、ダウンロードできるか確認してみるのがよいでしょう。手を動かさない限り何も始まりませんから。

  22. 記事中に
    “ もし 1080p で配信されていれば地上波で放映されているもの(1440×1080)よりも多い画素数(1920×1080)でダウンロードできる上(当然局ロゴは入らない)、
    (無料では1週間の期間限定ですが)公式で配信されている動画なので、合法的に 1080p の綺麗なアニメをダウンロードする方法、という意味ではある意味唯一と言えるかもしれません。”

    とありますが、他に「GYAO!」とかいうサービスもありますね。そちらもm3u8のHLS配信形式です(しかも暗号化されてない)
    Abemaの30分アニメは1080pで770MB程度ですが、GYAOの方は1080pで880MBと少し大きいんですけどね…
    Abemaと違ってGYAO!は表に出ているものは殆どが無料(有料はストアに誘導されるので表にはあまり表示されない)なので「あぁプレミアムなのか」と落胆することがなく気に入ってます。

    • あーGYAO!もありましたね…!(失念してました)
      GYAO! の方は youtube-dl が対応していたと思います。
      ただ Abema に比べ見れるアニメが少ないのが欠点かもですね。
      Abema や GYAO! でも権利者側の都合か画質が悪い作品もあったりするので、一概にはなんともいえなさそうです。

  23. はじめまして!30分弱のアニメは問題なくDLできるのですが、一挙放送の長い動画だとエラーコード:1と出て何度トライしてもDLできません・・・

    ちなみにhttps://abema.tv/channels/abema-anime-2/slots/8o4q8V8shYXGw9この動画で
    毎回1分だったり20分程だけ保存でき、エラーコード:1になってしまいます。

    • 試してないですが、長過ぎるとタイムアウトになってしまうかもですね…
      コマンドから直接 streamlink を実行してみた方がいいかもしれません。

      • ご返信ありがとうございます。streamlinkで直接トライしてみたところ、no space left on deviceと出てエラーになってしまい(空き容量は4.45gbあり)、保存先を15gbのクラウドドライブにしたのですが結果は変わらなくまた空き容量もあったためクラウドドライブ側の問題かと思い、次はほぼ空の16gbのUSBに保存されるようにしたのですが、こちらもまだ空き容量に余裕があるにもかかわらず、同じno space left on deviceでエラーになります・・自分で調べたりもしてみたのですがヒットせず、、何が原因として考えられるのでしょうか?

        • no space left on device はディスク容量がないときに発生する一般的なエラーだと思います。UNIX 系 OS を使われている場合は容量が足りていても inode?が足りない時にも発生するようですが、Windowsならいまいち原因がわかりません。
          残り4.45GBあるとのことですが、途中まで書き出されたファイルはありますか?もしないのであれば、4.45GBで足りず書き出しに失敗したとかな可能性もありそうです。
          あと、USBはリムーバブルディスクとして認識されていないと正常に保存できないでしょうし、クラウドドライブ(OneDriveのこと?)はもっての外です。

  24. 素晴らしいツールありがとうございます。
    質問なのですが、tverで使おうとした場合に一部のセグメントが取得できないようで、
    Error in the pull function.
    unable to open resource: ~~.ts
    failed to open segment of playlist 0
    のようなエラーが出て取りこぼしてしまっているようなのですが、解決方法ありますでしょうか?

    • うーん、私はそういう症状に遭遇したことがないですね…
      youtube-dl に Chrome Dev Tool から見つけた m3u8 ファイルの URL を直接入れてみてどうかってところでしょうか

  25. こんにちは。最近こちらのページを見つけ、とても愛用させていただいております、ありがとうございます!長めの動画を保存する時、紫と黄色とピンクの字でエラーなのか分からないのですが、
    [mpegts @ 000001a69ab0c6c0] Packet corrupt (stream 0, dts : 126571069).3kbits/s speed 17.3x

    [mp4 @ 000001a69ab0c6c0] Non-monotonous DTS in output stream 0:1; previous: 61962240, current: 61959929; chang nc to 61862241. This may result in incorrect timestamps in the output file. edif Ac0] Non-monotonous DTS in output stream 0:1; previous: 81982241, current: 61960947: changing to S242. This may result in incorrect timestamps in the output file.

    Non Monotonous DTS in output stream 0:1; previous: 61982242, current: 61961971; chang ne te 1962243, This may result in incorrect timestamps in the output file.

    Packet corrupt (stream 0, dts 127918666).

    こんなのが40列近く出て、とても目につき何なのかも気になります。どうにかする方法はあるのでしょうか?

    • ffmpeg の「パケットが破損してます」というエラーみたいです。
      ダウンロード自体が失敗するわけではないと思うので、極論ダウンロードしたファイルが正常に再生できて、ブロックノイズみたいなのが入っていなければ大丈夫じゃないかなーと思います(なんでそんなエラーがでるのかはよくわからない)。

  26. 私は、Streamlinkを外付けハードディスク(仮にD)に入れて
    Abema-DL.batのFFmpegのパスを変えてやっていました。
    が、ある時Streamlinkを認識できないというエラーメッセージが何度も出てきたので
    全てやり直すも同じエラーを吐きました。
    仕方なくAbema-DL.batの
    rem // Streamlink を実行
    D:n\streamlink.exe
    という感じで絶対パスに直してみたらうまくいきました。
    (ここまでたどり着くのに二日かかりましたで(( ´∀` )))

    ほかに悩んでいる方がいたら、環境に合わせて試してみては?
    (なんか似たようなコメントあったような気もするけど…)

    このようなツール、ほんとにありがとうございます。

  27. Chromeの拡張アプリを使ってます。DRM以外なら大体はOKみたいです。

    • Chrome の拡張機能は何を使われていますか? Chrome 拡張で DL できるならその方が楽かもしれませんね。

  28. 注意の部分では、「(読めば分かると思いますが)スマホからはこの方法は使えません。」と書かれていますが、androidでもこの方法は使えました。
    Termux上でPythonとstreamlink、ffmpegを入れて使えれるようにしました。
    コマンドとURLをコピペするだけで、簡単に復号しながらダウンロードできるので、助かってます。

    殆どの新作アニメはGYAO!でダウンロードできるのでそっちを使っていますが(しかも復号不要)、
    ABEMAのほうが「過去のアニメが一挙配信」されていることが多いので、その際はこの方法を使っています。

    GYAO!やABEMAからダウンロードした動画(24分アニメ)を分析・比較してみると、
    GYAO!のほうがABEMAより100MB程ファイルサイズが大きくなる。
    GYAO!はキーフレームが約1秒後ごとに入っている。(キーフレーム数がABEMAより多い)
    1080p動画のビットレートも、ABEMAは約4Mbps、GYAO!が約5MbpsとGYAO!の方が画質が高い。
    しかし、音声GYAO!が128kbps、ABEMAが195bpsとABEMAの方が音質が高いのですが…。

    • Android でも使えましたか…!
      Termux は実質ほぼ完全な Linux 環境なのでやろうと思えば動くんじゃないかなーとは思っていましたが、本当に動くとは…
      GYAO! はあんまり使ってないですが、地味にアニメの配信が多いみたいですね。画質が ABEMA より高いとは驚きです。
      GYAO! は youtube-dl でのダウンロードですかね…?
      音質に関しては正直 128kbps も 192kbps もエンコード前の音質が良ければそこまで変わらない(むしろサンプルレート 44100kHz と 48000kHz の違いの方が体感できる)ような気はしてます。

  29. はじめまして。
    ニコニコチャンネルに仕様変更があったのかダウンロード出来なくなりました。

    [niconico] Logging in
    [niconico] so38113564: Downloading webpage
    [niconico] so38113564: Downloading flv info
    ERROR: niconico reports error: unsupported_device

    • おそらくニコニコ動画の視聴ページの HTML 構造や仕様が削除跡地の終了などにより変わったことが原因かなと思います。
      長らく youtube-dl は触っておらず、更新もしていないので申し訳ありませんがすぐに対応する予定はありません。
      私のコードを元に、kurumigi さんがブラッシュアップして youtube-dlp という youtube-dlc のフォークにマージしてくれています。
      まだ対応はされていないんじゃないかと思いますが、私の youtube-dl よりもそちらもおすすめしておきます(動作確認はしていませんが、おそらく動くんじゃないかと)。
      https://github.com/yt-dlp/yt-dlp

      • ご回答ありがとうございます。
        yt-dlpを試してみましたが、最新の2021-3-15版ではダメでした。
        しばらく様子をみてみます。

        • 現在、https://github.com/yt-dlp/yt-dlp/issues/171 にて Issue が立てられています。1ヶ月以内には復旧するのではないかと踏んでいます。

          • 2021-3-21版がリリースされたけど、まだダメでした。
            https://github.com/yt-dlp/yt-dlp/issues/171 もクローズしていない状態なのでまだかかりそうですね。

          • https://github.com/yt-dlp/yt-dlp/issues/171 がマスターにマージされてクローズしたので試してみたところ無事ダウンロード出来るようになりました。
            なかなか修正が進まない中、最終的にはご対応いただいたようでありがとうございました。

          • 大きく壊れていた Extractor の大部分は有志によって修正されたのですが、暗号化された動画だけはまだ機能していなかった(あと日本だけでしか使えない)ため、最終的に私が変更を加えました。
            まだ yt-dlp の master の方にはマージされていないと思いますが、じきにマージされるかと。 追記:見落としていましたが、https://github.com/yt-dlp/yt-dlp/commit/2291dbce2a1aa9c5e9e060eb7ac306f037234eb1 にてマージされたようです。

  30. こんにちは、バッチファイル使わせていただきました。とても便利ですありがとうございます!
    自分の場合、画質と保存先をあらかじめ決めておけると嬉しいのですが可能でしょうか?
    もし可能ならやり方を教えていただけるとうれしいです!
    よろしくおねがいします!

    • Abema-DL.bat を改造すればいけると思います。
      あまり時間が取れないので手抜きですが、Abema-DL.bat 内の set /P quality=": 保存する動画の画質:"set quality="best"set folder=%~dp1set folder="C:\Your_Folder\" に書き換えれば常に固定値が使われるようにできると思います。ネットの情報が色々あるので、あとはご自分で頑張ってみてください。そこまで難しくはないはずです。

  31. 大変お世話になってます
    初カキコです
    このパッチファイルを改造してギャオにも転用できませんか?
    転用できればストレコより楽になりそうかと思いまして

    • できなくはないとは思いますが、Gyaoはすでにyoutube-dlでの対応が行われているので、youtube-dlのGUIフロントエンドを使うのが良いと思います。youtube-dl-guiとか、firedmとか。

  32. こちらを見てtermux使ってスマホだけで保存することができました
    コード?Python???状態だったので時間はかかりましたが何とかなりました
    ありがとうございました

    • そうなんですか…!試したことがあった訳ではありませんでしたが、使えているようで何よりです。

  33. 何度やっても↓のエラーが出てダウンロードできないのですが何が原因か分かりますか?

    ダウンロードに失敗しました… エラーコード:”2″

    URLが正しいかどうか、正しく入力されているかどうか、確認してください。

    • 私も分かりませんが、URLが正しいのであれば一度 Streamlink を CLI で使ってみる方がいいと思います。エラーがあればそれを表示されるはずですので。
      2 という数字はあくまでエラーコードですが、特殊なものを除けばエラーコードでエラーが特定できることはあまりありません。

  34. こちらのバッチで無事DLできました!

    質問なのですが、DL後のデータを再生するとCM部分で再生が止まってしまいます。
    何回かCM後の場所までシークして動かしたりすると再生できるのですが、CM部分はデータが壊れるんでしょうか?

    こらの対策とかありますでしょうか?

    再生はMPC-HCです。
    https://github.com/clsid2/mpc-hc/releases

    • 生放送の録画に関しては現状そうなってしまいます。理由はどうも CM になると低画質で解像度の動画が配信されてしまい、解像度の異なる動画が組み合わさっているため正常に再生できないというもののようです。
      これに関しては現状の Streamlink プラグインの仕様です。ビデオに残るものであれば極力そちらから DL することを推奨します。

      • ご返信ありがとうございます!
        なるほど。解像度が途中で変わるんですね。
        何個か他のプレイヤーで試しましたが、VLCならうまく再生できました!

        • VLCはこの世のほぼ全ての動画を再生できる万能なプレイヤーなので、確かに再生できるかもしれませんね。なにはともあれよかったです。

  35. お世話になっております。
    あべまの動画について。
    何個かまとめてbatでDL実行したり、回線が込み合っている?とエラーコード1で失敗するのは、
    そういう仕様でしょうか?
    昨晩失敗した動画を今朝再度やってみたところ動きました。

    ffmpegやstreamlinkのバージョンが古い可能性はありますでしょうか?
    PC自体は64bit win8.1 メモリ8GBでHDDの空きは57GB/848GBです。

    お時間のある際にお返事いただければ幸いです。

    • まず、ffmpeg のバージョンが古いからという可能性は低いと思います。バージョンが異なることで動作が変わるとはあまり考えにくいです。
      streamlink に関しても AbemaTV をダウンロードする部分のコードは長らく変わっていないはずなので、あまり感変えづらいです。
      一度 Abema-DL.bat を使わずにコマンドで実行してみることをおすすめします。そうすればエラーメッセージが表示されるので、何か問題解決の糸口が見つかるかもしれません。
      エラーコード:1 は一般的なエラーを示すもので、これだけからエラーの原因を特定することはできません。どちらかというと Abema-DL.bat の出来が悪いせいでもあるのですが、バッチファイルだとあれが限界で…

      • 早速のお返事ありがとうございます。
        回線が未だにADSLなので弱すぎるせいかとも思ったのですが、動画アクセス混んでいないときは大丈夫でしたので、こちらの回線のせいなのかもしれないですね…

        急ぎの保存が何件かあるのでPCがビジーでないときにコマンドで試してみます。
        またエラーコードがでましたらご相談させていただきます。ありがとうございます。

      • お世話になっております。
        win10とwin8にて、batファイルで今もAbema保存させていただいているのですが、ご相談失礼致します。

        見逃し配信のアーカイブファイルで20時間程ある配信の、欲しいところだけを指定して保存する方法はありますでしょうか?

        数時間のものであれば保存後に編集ソフトでカットしたりしているのですが流石に20時間はハードディスクも厳しくて…
        よい方法があればお伺いできれば幸いです。

        • 確かに 20 時間は厳しいですね…
          もともと Abema のダウンロードロジックは結構複雑なので、Streamlink でも yt-dlp でも一部分だけ指定してのダウンロードは難しいと思います。
          画質を下げて HDD に収まるサイズにするか、あとは HDD を買い増すかくらいしか思いつかないです…

  36. ライブ配信の録画ですが、TSファイルの解析ツール使って、バイナリエディタでちょっと一手間を加えると再生、mp4変換できるようになりました。CMを避けて録画しなくても良さそうです。

    • どんな解析ツールを使われていますか?
      あまり良い解析ツールを知らないもので、気になります。

  37. GitHubにある「MPEG-2-Transport-Stream-Packet-Analyser」というツールです。これで動画や音声データの連続性のチェックをするとCMが不連続として検知されるんです。(録画の環境によっては本物の欠損が検出されるかもしれませんが…)

    (P.S. それと、番組内容が切り替わる瞬間、例えば第一話から第二話に代わる瞬間もうまく変換されないことがあるのでそこも切り分けたほうが良さそうです。こちらはツールでも分かりますが、バイナリエディタの方がハッキリ分かります。)

    • なるほどーー!!!
      大変有益な情報をありがとうございます。
      そのツールを使えば非連続な部分を削除したりできるってところなのでしょうか。

      • いえ、検出までしかできないので削除の作業はバイナリエディタの方でやります。
        このツールだと「ところどころ途切れてるところがあるけど動画が切り替わっているわけではない」という判断になってしまうみたいです。

        • 割と高度な方法ですね…
          正常に視聴できなくなるのは CM の部分で映像の解像度が変わってしまうためのようなので、abematv.py の方で CM だけ弾いて TS に出力することができればそれが一番良いのですが…

  38. –hls-duration (https://streamlink.github.io/cli.html#cmdoption-hls-duration) を使用して、記録時間の指定機能を実装できませんか?コマンドライン上では、CM跨ぎの挙動はちょっと検証できてませんが、一応動いてるようでした。

    • そんな機能が実装されていたとは知りませんでした。確かに実装してみると便利かもしれませんね。
      ただ、こちらの環境だとCMを跨いだ時に動画と音声の再生速度が変になってしまう事がありました。
      原因は分かっていませんが、 CM をスキップした部分の PTS や DTS が破損してしまうこと、その状態の TS を MP4 に詰め直してしまう事が原因な気がしています。
      それもあって、生放送でしか放送しない番組以外はアーカイブとして公開されてからDLした方が安定しそうだな、というのが今の私の見解です。
      私自身現在では Abema の DL をほとんどやらなくなってしまった事もあり、そのあたりの検証ができていません。

  39. いつもお世話になっております。
    Abema-DL.jseにアップデートさせて頂いたのですが、私が使用しているサイトでは不安定になってしまったので、まだ残ってればAbema-DL.batをアップロードしていただけませんでしょうか?
    何卒宜しくお願いします。

    • 「私が使用しているサイト」といいますと…? AbemaTV ではなくてですか?
      記事にも書いてある通り、Abema-DL.jse は単に対話的に引数の値を取得し、それを用いて Streamlink のコマンドを実行するだけのスクリプトです。実際のダウンロードロジックには一切関わっていません。
      もし仮に不安定になったのだとしても、それは Streamlink 側のアップデートが原因ではないでしょうか? Abema-DL.bat に戻した所で解決するとは思えません。

      • そうですね、プロテクトがかかっているとあるサイトで使用していました。
        streamlinkのバージョンを戻して試しますね、アドバイス有難うございました!

  40. お世話になります。 スクリプトがリンク切れみたいですが、再ULしていただけますか?

    • Abema-DL.jse に関してですか?
      こちらで確認したところ正しくダウンロードできました。拡張子がテキストファイルなのはウイルスだと誤検知されてしまうのを避けるためで、意図的なものです。

  41. AbemaTVプレミアムの録画ができるようになったとのことですがダウンロードするためののコマンドはご存知でしょうか?

    • 最新版の yt-dlp で可能になっていると思います。

  42. yt-dlp で ABEMA プレミアムの動画をダウンロードする方法も解説していただけると嬉しいです。
    cookie を使う方法を試しましたがどうもうまくできませんでした…。

    • Abema プレミアムを契約していないのでなんともいえないですが、ソースコード を読む限りはユーザー名(メールアドレス or ユーザーID)とパスワード (ユーザー ID の場合はワンタイムパスワード) を指定してログインしているように見えます。
      おそらく yt-dlp のコマンドライン引数に –username “your_mailaddress or your_userid” –password “your_password or your_onetimepassword” を指定すれば、ログインできるのではないでしょうか(ユーザー名とパスワードは適宜書き換えて下さい)。
      ソースコードには Cookie に触れるコードはなかったので、おそらく Cookie でのログインに対応していないのでしょう。
      yt-dlp のオプション一覧は こちら の記事によくまとまっているので、参考にしてみてください。

      • ありがとうございます。
        ダウンロードすることができました。

        • 横から質問すみません。
          あべまのプレミアムで、コマンドを
          yt-dlp –username “ユーザーID” –password “パス” -f b 動画のURL
          にしたのですが下記のエラーが出てしまいました。

          Unable to download JSON metadata: HTTP Error 404: Not Found (caused by );

          コマンド表記が間違っているのでしょうか?

          • 続けてすみません。プレミアム以外の動画も

            ERROR: base None exceeds table length 58

            で保存できませんでした。
            ユーザーフォルダにffmpegとまとめて入れて実行試したのですが、指定コマンドが間違っているでしょうか?

          • 私の環境でも同じエラーが出てしまいダメですね… 以前はうまく DL できたはずで、おそらく Abema 側の仕様が変わったものと思います。
            yt-dlp の AbemaTV Extractor を書かれた方に連絡しておきますね。

          • 早速連絡をいただきました。いわく「コードのリファクタリングのタイミングで動かなくなってしまった」そうで、yt-dlp の最新の master ブランチでは修正されています。実際に master ブランチのコードで正しく DL できることを確認しました。
            新しい yt-dlp のリリースを待っていただくのがベターですが、待てないのであれば https://github.com/ytdl-patched/yt-dlp/releases からデイリービルドの yt-dlp を入手することで、再び DL できるようになると思います。お試しください。

      • こちらの情報を参考にyt-dlpにてログイン指定して、Abemaプレミアムの動画ダウンロードできました。
        ありがとうございます。
        しかし、2度目でダウンロードできない現象が出ていて解決できないでいます。

        家の環境ですと5台PCがあり、いずれも最初の1回は問題なくダウンロードできるのですが、
        ダウンロード完了後、URLを切り替えて次の動画をダウンロードしようとすると、一瞬ダウン
        ロードが始まるのですが1%も到達できず、すぐにエラーとなってしまいます。

        それ以降は何度試しても同じ現象になるのですが、別のPCを起動してそちら
        で実行するとすんなりダウンロードが成功します。
        しかし続けて2回目の実行ではやはりエラーとなります。
        5台すべて、基本的にそんな感じです。

        最初の1台めのPCでは何らかのタイミングで、ダウンロードできるようになったのですが、
        やはりその後も2回目でエラーとなります。
        (時間経過によるものなのか、ブラウザでプレミアムアカウントでログインした状態で何か
        をやったからなのか・・・?)

        エラーが出る際にも、一瞬ダウンロードが進行することからログイン自体はできていると思います。
        おそらくログイン以外の別の規制に引っかかっているのではないかと思っていますが、その場合でも
        別のPCに切り替えると正常にできているので、何らかのデバイス情報をチェックして、違うと
        いうことになれば規制を回避できているのでは?と思っています。

        プレミアムアカウントは2台まで同時視聴が可能という決まりのようですので、その絡みでそのよう
        な現象につながっている気がしています。

        そこでなのですが、yt-dlp側でデバイス情報を偽装して規制を回避するような事ってできたりしない
        でしょうか?
        もし何か思い当たるところなどあればご教授いただきたいです。

        • 最近もう Abema ダウンロードは試していないのでわからないですが、同一 IP からの複数セッションはダメとかがあるのかも知れません。
          認証情報を保持できればいいのですが、確かそういった機能はなかった気がします。yt-dlp 側でローカルのデバイス情報を取得・送信することは基本ないはずなので、規制されているとしたら IP (v6) アドレスベースでしょう。
          IPv4 だと基本家ごとに1つの IP ですが、IPv6 だと端末ごとに1つの IP が割り当てられるので、Abema が IPv6 に対応しているならそう言うこともあるかも知れません。

          • お返事ありがとうございます。

            こちらの件自己解決しました。yt-dlpのキャッシュが悪さをしているようでした。

            原因はよくわかっていないのですが、いろいろWebサーフィンをして調べていたところ、
            あるサイトでキャッシュフォルダクリアしないとダウンロードがうまくいかない場合がある
            というような記述があり、キャッシュフォルダクリアのコマンドを動画ダウンロード前に
            実行するようにしたら問題なくダウンロードできるようになりました。

            ありがとうございました。

  43. お世話になります。
    アニメ12話中の下記だけエラーコード1で何度やっても途中までしか保存できないのですが、
    ttps://abema.tv/video/episode/26-66_s1_p5

    なにか原因は考えられますか?
    win8.1です。
    配布の.batと.jseを試しましたが駄目でした。

    • こちらの Windows 10 の環境では、貼られている URL の動画を Abema-DL.jse・streamlink コマンド直叩きの両方で正しく最後まで DL できることを確認しました。
      「途中までしか保存できない」とありますが、まずはエラーログを提示していただけないと何とも言えません。

  44. ワールドカップがプラグインがないとダウンロードできません。無料公開なのでDRMではないと思うのですが、
    DRMという意見もあり、判断できません。DRMなしならabematv.pyの問題なのかとも思いますが、
    どうすればいいのかよくわかりません。

    abemaのほかの動画はダウンロードできています。

    • ワールドカップの動画に関しては残念ながら DRM が掛かっていたと思います。DRM か掛かっているかは、PC 版 Chrome で画面のスクショを撮ろうとしたときに映像が真っ黒に反転するかどうかで確認できます。DRM のかかっていない動画は普通にスクショが撮れます。

  45. 一部の動画で下に「視聴開始できない場合は~」と書かれている場合、スクショ出来てもDRMっぽいみたいです…

    • そうなんですね〜、確かに DRM がかかった動画は HDCP 非対応のディスプレイを使っているなどの場合は見れないこともあるので、そうした非対応環境向けの文言だと思います。

  46. お返事ありがとうございます。 ttps://abema.tv/video/episode/50-20_s1_p1 みたいな動画は画面録画するしかないんでしょうか?と言っても録画もアマレココしか出来なかったんですが(当方ド素人ですみません)

    • 基本的にはそうなると思います。一応 Widevine DRM を解除する方法もなくはないらしいのですが、今でも動くかわからない上に私も使ったことがないので、画面録画のほうが確実だと思います。

  47. いつもお世話になっております。

    2024年年明け後、急にABEMA無料動画のダウンロードが出来なくなってしまいました。
    別の無料動画などでも同様でした。
    お忙しいとは存じますが、原因等分かれば回答頂けると嬉しいです。よろしくお願いいたします。

    エラー時のメッセージを以下に記載いたします。
    [cli][info]Found matching plugin abematv for URL https://abema.tv/video/episode/54-60_s2_p1
    error:Unable to open URL: https://api.abema.io/v1/users (HTTPSConnectionPool(host=api.abema.io ,port=443):Max retries exceed with url: /v1/users(caused by NewConnectionError(:Failed to establish a new connection: [WinError 10061]対象のコンピュータによって拒否されたため、接続できませんでした。

    • ちょっと最近試していないのでわからないですが、Abema 側の仕様変更が原因の可能性はあると思います。いずれにせよ私は対応できないので、Streamlink 側の対応待ちになりますね…。

      • ご返信ありがとうございます。

        Streamlink 側の対応待ちなんですね。
        しばらく様子をみてみます。

  48. 最近になってbatからjseに変更しstreamlinkも最新のやつにダウンロードし直しましたが、久しぶり過ぎてさっぱりです。
    入力を済ましてダウンロードしようとしたら以下の通りで失敗します。
    Applications下にStreamlinkとffmpeg(Streamlinkのやつ)フォルダを分けています。環境変数のパスは以前のbat時はC:\Applications\Streamlink\bin C:\Applications\ffmpeg\bin でしたがjseでは変わりますか?その辺も含めてご教授お願いします。

    Traceback (most recent call last):
    File “”, line 198, in _run_module_as_main
    File “”, line 88, in _run_code
    File “C:\Applications\Streamlink\bin\streamlink.exe\__main__.py”, line 18, in
    File “C:\Applications\Streamlink\pkgs\streamlink_cli\main.py”, line 870, in main
    setup_config_args(parser, ignore_unknown=True)
    File “C:\Applications\Streamlink\pkgs\streamlink_cli\main.py”, line 697, in setup_config_args
    setup_args(parser, config_files, ignore_unknown=ignore_unknown)
    File “C:\Applications\Streamlink\pkgs\streamlink_cli\main.py”, line 640, in setup_args
    args, unknown = parser.parse_known_args(configs + arglist)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File “argparse.py”, line 1924, in parse_known_args
    File “argparse.py”, line 1938, in _parse_known_args
    File “argparse.py”, line 2201, in _read_args_from_files
    File “”, line 322, in decode
    UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0x83 in position 3635: invalid start byte

    ————————————————————————————————————–

    動画のダウンロードに失敗しました。

    • うーんちょっと謎なんですが、Streamlink 側で ShiftJIS (CP932) の解釈に失敗している可能性がありそうです。日本語を排除してアルファベットだけの状態でやってみるとうまくいくことがあるかもしれません(私はもう数年動かしていないのでわからず…)。

  49. Streamlinkのバージョン戻してjseでダウンロードを行ったら正常に作動しましたのでとりあえず解決しました。
    数年前の事なのにありがとうございました。