2
2

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 3 years have passed since last update.

streamlinkをjupyterで実行する場合に躓いたこと

Last updated at Posted at 2021-01-31

streamlinkをコマンドから実行する場合は例えばこのように書きます。

streamlink --username=xxxx --password=xxx https://crunchyroll.com/a-crunchyroll-episode-link"

同様のことをjupyterで実行する場合へのパラメータの渡し方は上のような簡便なやり方がわからなかったため、迂遠なやり方を書いておきます。

from streamlink import Streamlink

st=Streamlink()
plugin = st.resolve_url("https://crunchyroll.com/a-crunchyroll-episode-link")

params={"username":"xxxx","password":"xxx"}
plugin.options.update(params)
stream_streamlink =plugin.streams()

resolve_urlはplugin クラスを返すのですが、そこにoptionパラメータを渡してくれる方法が分からなかったのでstreams()を実行する前にupdate(params)をしています。

import streamlink
stream_url = streamlink.streams("https://crunchyroll.com/a-crunchyroll-episode-link")

optionがいらない場合は上記のような書き方で大丈夫です。

import urllib.request
import ffmpeg

stream_url = stream_streamlink['best'].url

try:
    urllib.request.urlretrieve(stream_url ,'vod.mp4')
except Exception as e:
    print(e)

stream = (
    ffmpeg.input('vod.mp4')
    .output(stream, r'C:\\path\\to\\save\\file.avi' )
)

try:
    ffmpeg.run(stream,capture_stdout=True, capture_stderr=True) 
except ffmpeg.Error as e:
    print('stdout:', e.stdout.decode('utf8'))
    print('stderr:', e.stderr.decode('utf8'))
    raise e

そして上記のようにffmpeg等を使うと好きな形式で保存できます。ちなみにpythonのffmpegはいくつか種類があるようですが、pip install ffmpeg-pythonでないとエラーが起きる場合がありました。
ところでexceptの使い方が良くないと指摘されていたサンプルを用いているのですが、元のページを忘れてしまったため修正していません。
また、['best']は時々取得できないときがあるようなので、stream_streamlinkをprintなどで確認して['720p']のように指定してください。

2
2
2

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
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?