ユーザ用ツール

サイト用ツール


サイドバー

最新の10件
一覧
linux:video_download

Video Download

Web上のLiveStreamingを後で見たい,デモなどで使うのでVODをofflineで見たい.回線が低速で低画質しか見られない.回線の質が悪くよく止まる. とかとかのときに助かるツールとか.

大体youtube-dlかそれでサポートされていない場合はStreamlinkでという感じで使っている。

自分は自宅回線では画質悪くよく止まるのでこれらを使って一手間かけて動画視聴しているが、視聴管理などもされず面倒なので通常はあまり必要ないと思う……。

Video DownloadHelper

ダウンロードした動画に音声が含まれていない

$ ffprobe -i 放課後ていぼう日誌\ アニメ\ 無料動画GYAO\!.mp4 2>&1 |grep -i stream
    Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709), 854x480 [SAR 1:1 DAR 427:240], 1495 kb/s, 29.97 fps, 29.97 
tbr, 90k tbn, 59.94 tbc (default)

Video DownloadHelper で動画を確認して解像度の書かれていない動画が音声のみのデータなのでそれもダウンロードする.

$ ffprobe -i 放課後ていぼう日誌\ アニメ\ 無料動画GYAO\!-1.mp4 2>&1 |grep -i stream
    Stream #0:0(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 127 kb/s (default)

結合する.

$ ffmpeg -i 放課後ていぼう日誌\ アニメ\ 無料動画GYAO\!.mp4 -i 放課後ていぼう日誌\ アニメ\ 無料動画GYAO\!-1.mp4 -c:v copy -c:a copy 放課後ていぼう日誌.mp4

youtube-dl

Youtube以外にも様々なsiteに対応している. 詳細は別ページに

nicovideo-dl

ダウンロードにはログインが必要

  -u USERNAME, --username=USERNAME
                        account username
  -p PASSWORD, --password=PASSWORD
                        account password

netrc も使える

  -n, --netrc           use .netrc authentication data

netrcのmachineは nicovideo

$ echo "machine nicovideo
login $USER
password $PASSWORD" >> ~/.netrc

ダウンロードファイル名はID担って分かりづらいので -t オプションでタイトルをファイル名にする.

  -t, --title           use title in file name
$ nicovideo-dl -n -t $URL

認証に使ったアカウントが無料アカウントだと時間帯により制限を受けるので制限を受けない時間に動くようにしておくといい.

(youtube-dlもニコニコ動画に対応しているのでそっちのほうが便利かも)

Niconicome

ffmpeg

動画URLがわかっているならffmpegでもダウンロードできる.回線が細いときにリモートのサーバで高画質ダウンロードするなどできる. (Video DownloadHelperでcopy urlしたものも使える)

$ ffmpeg -i $URL -movflags faststart -c copy $TITLE.mp4

livestreamer

ライブ外リーミングを視聴するのに特化したコマンドラインツール.

対応site

URLとstreamを指定する.streamは一度なしで実行すると取得できる,以下の例では 144p, 240p, 360p, 480p, 720p が選べる.若しくは worst or best この2つはいつでも指定できる.

$ streamlink 'https://www.youtube.com/watch?v=kL090M6qtXQ' 
[cli][info] Found matching plugin youtube for URL https://www.youtube.com/watch?v=kL090M6qtXQ
Available streams: 144p (worst), 240p, 360p, 480p, 720p (best)

480pで再生

$ streamlink 'https://www.youtube.com/watch?v=kL090M6qtXQ' 480p

360pの解像度をmpvを使いフルスクリーンで開く例

$ streamlink -p "mpv --fs" 'https://www.youtube.com/watch?v=kL090M6qtXQ' 360p

360pの解像度をvlcを使い壁紙として開く例

$ streamlink -p "vlc --video-wallpaper" 'https://www.youtube.com/watch?v=kL090M6qtXQ' 360p

-o オプションでファイルへの書き出しが可能

$ streamlink 'https://www.youtube.com/watch?v=kL090M6qtXQ' 360p -o ISS.mp4

-r オプションでファイルへの書き出ししつつストリーミング再生が可能

$ streamlink 'https://www.youtube.com/watch?v=kL090M6qtXQ' 360p -r ISS.mp4

--hls-live-restart でYoutubeLiveを最初から再生する.プレイヤーで速度を早くして追っかけ再生も.

$ streamlink --hls-live-restart https://www.youtube.com/watch?v=brrm328XItM 360p --player="mpv --speed=1.5"

※abema.tvをPCのウェブブラウザで見るとしょっちゅう解像度変更→映像と音が途切れて辛い→ウェブブラウザからは解像度指定できない(◞‸◟) Streamlinkで解像度を下げて再生すると止まらず快適.とか.(Androidアプリ版にはいくつかの解像度の選択が可能)
※EDの途中で勝手に次話に強制スキップされるの対策にもいい.

abema.tv は動画のURLが連番なのでこんな感じでシリーズ動画を順に再生できる.

$ EP=1; while :;do if ! streamlink https://abema.tv/video/episode/25-59_s1_p$EP 240p;then break;fi ;EP=$(( $EP + 1 ));done

twspace-dl

Twitter spacesからダウンロード

$ bin/twspace_dl -h                                                   
usage: twspace_dl [-h] [-v] [-s] [-k] [-l] [--input-cookie-file COOKIE_FILE] [--username USERNAME] [--password PASSWORD] [--output-cookie-file OUTPUT_COOKIE_FILE] [-i SPACE_URL | -U USER_URL] [-d DYN_URL] [-f URL] [-M PATH]
                  [-o FORMAT_STR] [-m] [-p] [-u] [--write-url URL_OUTPUT]

Script designed to help download twitter spaces

optional arguments:
  -h, --help            show this help message and exit
  -v, --verbose
  -s, --skip-download
  -k, --keep-files
  -l, --log             create logfile
  --input-cookie-file COOKIE_FILE

input:
  -i SPACE_URL, --input-url SPACE_URL
  -U USER_URL, --user-url USER_URL
  -d DYN_URL, --from-dynamic-url DYN_URL
                        use the dynamic url for the processes(useful for ended spaces) example: https://prod-fastly-ap-northeast-1.video.pscp.tv/Transcoding/v1/hls/zUUpEgiM0M18jCGxo2eSZs99p49hfyFQr1l4cdze-
                        Sp4T-DQOMMoZpkbdyetgfwscfvvUkAdeF-I5hPI4bGoYg/non_transcode/ap-northeast-1/periscope-replay-direct-prod-ap-northeast-1-public/audio-space/dynamic_playlist.m3u8?type=live
  -f URL, --from-master-url URL
                        use the master url for the processes(useful for ended spaces) example: https://prod-fastly-ap-
                        northeast-1.video.pscp.tv/Transcoding/v1/hls/YRSsw6_P5xUZHMualK5-ihvePR6o4QmoZVOBGicKvmkL_KB9IQYtxVqm3P_vpZ2HnFkoRfar4_uJOjqC8OCo5A/non_transcode/ap-northeast-1/periscope-replay-direct-prod-ap-
                        northeast-1-public/audio-space/master_playlist.m3u8
  -M PATH, --input-metadata PATH
                        use a metadata json file instead of input url (useful for very old ended spaces)

output:
  -o FORMAT_STR, --output FORMAT_STR
  -m, --write-metadata  write the full metadata json to a file
  -p, --write-playlist  write the m3u8 used to download the stream(e.g. if you want to use another downloader)
  -u, --url             display the master url
  --write-url URL_OUTPUT
                        write master url to file

login:
  --username USERNAME
  --password PASSWORD
  --output-cookie-file OUTPUT_COOKIE_FILE
$ bin/twspace_dl -i https://twitter.com/i/spaces/1ypKdEXLdLqGW

2022-03-16 15:42:16,496 [INFO] ./tmp6swcs0w5/(辻 伸弘 (nobuhiro tsuji))ゆくアレ、くるアレ #セキュリティのアレ-1ypKdEXLdLqGW.m3u8 written to disk
[hls @ 0x55f2ea4a9800] Changing ID3 metadata in HLS audio elementary stream is not implemented. Update your FFmpeg version to the newest one from Git. If the problem still occurs, it means that your file has a feature which has not been implemented.
size=   51141kB time=01:13:21.68 bitrate=  95.2kbits/s speed=10.6x
2022-03-16 15:49:14,334 [INFO] Finished downloading
$ ffprobe -i ./\(辻\ 伸弘\ \(nobuhiro\ tsuji\)\)ゆくアレ、くるアレ\ #セキュリティのアレ-1ypKdEXLdLqGW.m4a 
ffprobe version 4.4.1-3+b2 Copyright (c) 2007-2021 the FFmpeg developers
  built with gcc 11 (Debian 11.2.0-18)
  configuration: --prefix=/usr --extra-version=3+b2 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librabbitmq --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-pocketsphinx --enable-librsvg --enable-libmfx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
  libavutil      56. 70.100 / 56. 70.100
  libavcodec     58.134.100 / 58.134.100
  libavformat    58. 76.100 / 58. 76.100
  libavdevice    58. 13.100 / 58. 13.100
  libavfilter     7.110.100 /  7.110.100
  libswscale      5.  9.100 /  5.  9.100
  libswresample   3.  9.100 /  3.  9.100
  libpostproc    55.  9.100 / 55.  9.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from './(辻 伸弘 (nobuhiro tsuji))ゆくアレ、くるアレ #セキュリティのアレ-1ypKdEXLdLqGW.m4a':
  Metadata:
    major_brand     : M4A 
    minor_version   : 512
    compatible_brands: M4A isomiso2
    title           : ゆくアレ、くるアレ #セキュリティのアレ
    artist          : 辻 伸弘 (nobuhiro tsuji)
    encoder         : Lavf58.76.100
    episode_id      : 1ypKdEXLdLqGW
  Duration: 01:13:21.71, start: 0.000000, bitrate: 95 kb/s
  Stream #0:0(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 93 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
      vendor_id       : [0][0][0][0]

tiktik

プレイリスト作成

順番にダウンロードした(順番に作成された)ならls -1tr で済むことも多い.

%02dみたいな一番助かるパターン

$ ls -1 未確認で進行形 #*.mp4| sort -n | tee 未確認で進行形.m3u8
未確認で進行形 #01 何事も最初が肝心です.mp4
未確認で進行形 #02 ロリ小姑ってのも悪くないわ.mp4
未確認で進行形 #03 ラブコメの波動を感じる.mp4
未確認で進行形 #04 あれはただのへんたいです.mp4
未確認で進行形 #05 これが経産婦だと.mp4
未確認で進行形 #06 そうだ、小姑でうめよう.mp4
未確認で進行形 #07 それはそれ、これはこれ.mp4
未確認で進行形 #08 妹の悲しみをいやすのは、妹.mp4
未確認で進行形 #09 くつじょくです、はずかしめをうけました.mp4
未確認で進行形 #10 デレ期という単語を調べたら.mp4
未確認で進行形 #11 ハンカチを楽しんでるのよ.mp4
未確認で進行形 #12 わかってる? ……わかってる.mp4

%dみたいな桁上がりだと単純にsortすると10話が先頭に来るので sort -V で並べる.

$ ls -1 メイドインアビス 第*.mp4 | sort -V | tee メイドインアビス.m3u8
メイドインアビス 第1話 大穴の街.mp4
メイドインアビス 第2話 復活祭.mp4
メイドインアビス 第3話 出発.mp4
メイドインアビス 第4話 アビスの淵.mp4
メイドインアビス 第5話 火葬砲.mp4
メイドインアビス 第6話 監視基地(シーカーキャンプ).mp4
メイドインアビス 第7話 不動卿.mp4
メイドインアビス 第8話 生存訓練.mp4
メイドインアビス 第9話 大断層.mp4
メイドインアビス 第10話 毒と呪い.mp4
メイドインアビス 第11話 ナナチ.mp4
メイドインアビス 第12話 呪いの正体.mp4
メイドインアビス 第13話 挑む者たち.mp4

利用規約違反?

動画のダウンロードと視聴は私的複製の範囲なら問題ないと思うが,サービスの規約には違反してしまいそう.

例えばYoutubeはこの辺?

本サービスの利用には制限があり、以下の行為が禁止されています。

本サービスまたはコンテンツのいずれかの部分に対しても、アクセス、複製、ダウンロード、配信、送信、放送、展示、販売、ライセンス供与、改変、修正、またはその他の方法での使用を行うこと。ただし、(a)本サービスによって明示的に承認されている場合、または(b)YouTube および(適用される場合)各権利所持者が事前に書面で許可している場合を除きます。
本サービスのいずれかの部分を迂回、無効化、不正利用、またはその他の方法で妨害すること(またはこれらのいずれかを試みること)。なお、この「本サービスのいずれかの部分」には、セキュリティ関連の機能、または(a)コンテンツのコピーもしくはその他の利用法を防止もしくは制限する機能、もしくは(b)本サービスもしくはコンテンツの利用を制限する機能が含まれます。
自動化された手段(ロボット、ボットネット、スクレーパなど)を使用して本サービスにアクセスすること。ただし、(a)公開されている検索エンジンを YouTube の robots.txt ファイルに従って使用する場合、または(b)YouTube が事前に書面で許可している場合を除きます。

その他CMの挟まるサービスやコンテンツでもそれが再生されないという問題もある.

URL

鹿児島Linux勉強会 2020.01での発表スライド

コメント

コメントを入力. Wiki文法が有効です:
   __ __   ____   ____   ___   _   __
  / //_/  / __/  / __/  / _ \ | | / /
 / ,<    _\ \   _\ \   / , _/ | |/ / 
/_/|_|  /___/  /___/  /_/|_|  |___/
 
linux/video_download.txt · 最終更新: 2022/03/16 17:25 by matoken