GYAOの動画をローカルに保存する

GYAOの動画をローカルに保存する

このページで利用方法を解説していたGyaO MMS URLは、9月末日をもって閉鎖されました。代替のダウンロード方法をお探しの方は、次のページをご覧ください。

手順は4ステップです。簡単なので誰でもできます。Windows環境のみで確認していますが、バッチファイルが実行できる環境なら他のOSでも大丈夫だと思います。

基本的な手順

  1. メモ帳などのテキストエディタを起動する。

  2. 1行目にchcp 65001と書く。

  3. 2行目以降に、動画をダウンロードするためのコマンド(あとで説明)を貼り付ける。

  4. 拡張子を.bat(バッチファイル)に、文字コードをUTF-8にして、動画のフォルダに保存する。

  5. 保存したファイルを実行する。

このような流れとなります。コピペでダウンロードできますので、知らないワードがあったとしても大丈夫です。意味を理解する必要はありません。

必要なもの

FFmpegをダウンローダーとして使用します。下からffmpeg.exeをダウンロードして下さい。下のリンク先の、オリジナル版の一般用をダウンロードします。ffmpeg.exeは、動画のフォルダに配置します。

解析サイトを使ってダウンロード

リンクするのは、先方の管理人様の意思にそぐわないようなので、サイトのURLは記載しません。「gyao url 解析」などで検索すると上位にヒットするはずです。

使い方

まず始めに、解析URLの入力欄に、保存したい動画ページのURLを貼り付けます。

下から保存したい動画形式に合った文字列をコピーします。

# mp4形式の動画を保存する場合
ffmpeg -timeout "120000" -user_agent "%UA%" -copyts -i "%PATH%" -codec "copy" -bsf:a "aac_adtstoasc" "%TITLE%.mp4"

# ts形式の動画を保存する場合
ffmpeg -timeout "120000" -user_agent "%UA%" -copyts -i "%PATH%" -codec "copy" "%TITLE%.ts"

コピーした文字列をフォーマット指定欄に貼り付けます。貼り付けたら、解析ボタンを押します。他にボタンやチェックボックスがありますが、使用しません。

ffmpeg…で始まる文字列がダウンロードコマンド

解析ボタンを押すと、各解像度のダウンロードコマンドが表示されます。BANDWIDTHの数値が大きい方が、画質の高い動画となります。

コマンドをメモ帳に貼り付ける

ダウンロードする解像度のコマンドをコピーしたら、あとは基本的な手順の項の手順に従って下さい。

コマンドを貼り付けるときは、1行に1コマンドずつです。

user.jsを使ってダウンロード (1)(公開停止)

バッチファイルを作成することも可

こちらのuser.jsを使用すると、GYAOの各ページにコマンド取得ボタンが表示されるようになります。ダウンロードしたい解像度のボタンを選択すると、コマンドがコピーされます。コピーされるコマンドは、解析サイトを使ってダウンロードの項と同じです。また、コマンドをストックして、最後にまとめてコピーする機能があるので、ひとつずつコピペする手間を削減できます。

タイトル一覧ページから、配信中の動画をリストアップすることもできます。

user.jsを使ってダウンロード (2)

同じくuser.jsを使用できるブラウザ拡張が必要です。こちらのスクリプトは、動画ページを開くだけで、自動的にダウンロードURLを解析してくれます。GYAOだけでなく、多数のサイトで動作します。

ただし、コピーできるのは解析URLだけなので、そのままではダウンロードすることはできません。オプションを組み合わせて、コマンドを作る必要があります。

解析URL→コマンドに整形するブックマークレット

試しに作ってみました。ブックマークレットを実行するだけでコマンドをコピーできるようにしたかったのですが、セキュリティ上の制約・その他の事情で無理でした。

コード

javascript:(e=>{e.style.position="absolute",e.style.top="0",e.addEventListener("change",()=>{e.value=`ffmpeg -loglevel "error" -timeout "120000" -user_agent "${navigator.userAgent}" -copyts -i "${e.value}" -codec "copy" -bsf:a "aac_adtstoasc" "${document.getElementsByTagName("h1")[0].innerText}.mp4"`,e.select(),document.execCommand("copy"),document.body.removeChild(e)}),document.body.appendChild(e)})(document.createElement("input"));

使い方

ファイル名をh1要素(動画プレイヤー下のタイトル)から取っています。動画ページで実行しないと、変なファイル名になりますのでご注意下さい。

  1. ブックマークレットを実行する

  2. ページ左上に現れる入力欄に解析URLを貼り付ける

  3. エンターキーを押す

  4. コマンドがコピーされる

補足

コード中のバッククオートで囲まれている箇所が、コマンドになります。コマンドを編集したい場合は、そこをイジって下さい。

バッチファイルについて補足

バッチファイルは、右クリックから編集することが可能です。最後の行にpauseと書くと、ダウンロード終了後ウィンドウが閉じません。

FFmpegコマンドの説明

このページで使用したコマンドは何を行っているのか、簡単に説明しておきます。

FFmpegでは、下のようなコマンドが基本形となります。

ffmpeg -i "入力.ts" "出力.ts"

ストリーミング動画を保存する場合は、次のような形になります。

ffmpeg -i "解析URL" -c copy "ストリーミング.ts"

-c copyは、入力動画の映像と音声を複製するオプションです。現在、主立った動画サイトでは、HTTP Live Streaming (HLS)という技術を使って動画が配信されています。HLSには、メディアファイルをTS形式(mpeg2-ts)にしなくてはならない、という規定があります。そのため、-c copyを付けて出力動画の拡張子をtsにすれば、理論上は入力動画を複製できます。

ですが、tsファイルはアプリケーション側で扱いにくい形式なので、tsからmp4形式に変換するのが一般的です。そのコマンドは次のような形になります。

ffmpeg -i "解析URL" -codec copy -bsf:a aac_adtstoasc "ストリーミング.mp4"

形式を変換すると劣化するのではないか、と心配になるかも知れません。

HLSには元のファイルにも規定があり、ts(コンテナの)の中にはmp4(コンテナに入れられるコーデックの映像・音声)が入っています。このような変換を上のコマンドで行った場合は、データの先頭にあるファイル情報(ヘッダ)のみが変更されます。映像・音声はそのままなので、劣化するということはありません。

各オプションの簡単な説明

-user-agent ""は、ブラウザの種類やバージョンを表す文字列です。ブラウザからのアクセスを偽装するために必要となります。-codec copyは、動画・音声を複製します。-c copyと書くこともできます。-copytsは、元動画ファイルのタイムスタンプをコピーするオプション。-bsf:a aac_adtstoascは、tsからmp4に変換するときに付けるオプション。…なのですが、今は付けなくてもよしなにやってくれるみたいです。-loglevel "error"は、プロンプトに表示されるログの設定になります。このオプションを付けると、エラーが起こったときのみログが表示されます。

スポンサードリンク
スポンサードリンク