yt-dlpで動画をダウンロードすると既定値では視聴履歴に残りません.視聴履歴を残すようにしてみました.
タグ: youtube
yt-dlpでダウンロードしたYouTube動画を視聴履歴に
yt-dlpで動画をダウンロードすると既定値では視聴履歴に残りません.視聴履歴を残すようにしてみました.
yt-dlpでYouTubeで配信されているラジオをダウンロードして視聴する
YouTubeで配信されているラジオ番組の1話を視聴して面白かったのでダウンロードして移動中などに聞こうと思いました.ダウンロードにはyt-dlpを利用しました.
YouTube動画をダウンロードして無音部分をカットしたオーディオデータにして聞く
オープンソースカンファレンス2022 Online Springに参加しました.
ビデオミーティングソフトウェアのZoomとYouTube Liveを使っています.セッションは複数トラックあって同時に参加するのは難しいです.ほとんどのセッションは後日YouTubeで公開されますが,YouTube Liveの動画をリモートのサーバで録画しておいたのでこれをスマートフォンで移動中などに聞けるようにしてみました.
Youtube-dlコマンドで字幕をダウンロードする
以下の例では動画ファイルと字幕ファイルが別々に作成されます.動画に字幕ファイルを埋め込めないかなとオプションを確認したら
--embed-subs
というオプションがありました.これを利用したら1つの動画ファイルの中に字幕も埋め込めました :)$ youtube-dl --help|grep -- --embed --embed-subs Embed subtitles in the video (only for mp4, webm and mkv videos) --embed-thumbnail Embed thumbnail in the audio as cover art
ただし,Debian sid amd64環境では別途
atomicparsley
パッケージも必要でした.atomicparsley
パッケージを入れる前のエラーERROR: AtomicParsley was not found. Please install.
atomicparsley
パッケージの導入$ sudo apt install atomicparsley
480pでダウンロードして日本語機械翻訳字幕を埋め込み$ youtube-dl --write-auto-sub --sub-lang=ja --embed-subs -c -f 133 -o './%(title)s.%(ext)s' 'https://www.youtube.com/playlist?list=PLYUtdmpYPTTKgmkaIUFDiNvYPxQUzuY8y'
日本語の動画の場合はこれで問題ないのですが, id:naruoga/@naru0gaさんがLibreOffice Asia Conference 2019 Tokyo 基調講演の動画に日本語字幕を付けてくれました.OSSが興味ある人なら気になる感じの内容のようなので視聴したいけど字幕ダウンロードしたこと無いなと試してみました.
導入していない人はインストールしましょう.バイナリを1つダウンロードして実行権を付けるだけです.以下は ~/bin
に導入する例.
$ curl -L https://yt-dl.org/downloads/latest/youtube-dl -o ~/bin/youtube-dl
$ chmod +rx ~/bin/youtube-dl
先ずはhelpを確認します.
$ youtube-dl --help|grep 'Subtitle Options:' -A7
Subtitle Options:
--write-sub Write subtitle file
--write-auto-sub Write automatically generated subtitle file (YouTube only)
--all-subs Download all the available subtitles of the video
--list-subs List all available subtitles for the video
--sub-format FORMAT Subtitle format, accepts formats preference, for example: "srt" or "ass/srt/best"
--sub-lang LANGS Languages of the subtitles to download (optional) separated by commas, use --list-subs for available
language tags
結構シンプルな感じですね.早速試してみます.
先ずは --list-subs
で字幕の一覧を取得してみます.
$ youtube-dl --ignore-config --list-subs QS-Zz-2ovo0
[youtube] QS-Zz-2ovo0: Downloading webpage
[youtube] QS-Zz-2ovo0: Looking for automatic captions
[youtube] QS-Zz-2ovo0: Downloading MPD manifest
Available automatic captions for QS-Zz-2ovo0:
Language formats
gu vtt, ttml, srv3, srv2, srv1
zh-Hans vtt, ttml, srv3, srv2, srv1
zh-Hant vtt, ttml, srv3, srv2, srv1
gd vtt, ttml, srv3, srv2, srv1
ga vtt, ttml, srv3, srv2, srv1
gl vtt, ttml, srv3, srv2, srv1
lb vtt, ttml, srv3, srv2, srv1
la vtt, ttml, srv3, srv2, srv1
lo vtt, ttml, srv3, srv2, srv1
tt vtt, ttml, srv3, srv2, srv1
tr vtt, ttml, srv3, srv2, srv1
lv vtt, ttml, srv3, srv2, srv1
lt vtt, ttml, srv3, srv2, srv1
tk vtt, ttml, srv3, srv2, srv1
th vtt, ttml, srv3, srv2, srv1
tg vtt, ttml, srv3, srv2, srv1
te vtt, ttml, srv3, srv2, srv1
fil vtt, ttml, srv3, srv2, srv1
haw vtt, ttml, srv3, srv2, srv1
yi vtt, ttml, srv3, srv2, srv1
ceb vtt, ttml, srv3, srv2, srv1
yo vtt, ttml, srv3, srv2, srv1
de vtt, ttml, srv3, srv2, srv1
da vtt, ttml, srv3, srv2, srv1
el vtt, ttml, srv3, srv2, srv1
eo vtt, ttml, srv3, srv2, srv1
en vtt, ttml, srv3, srv2, srv1
eu vtt, ttml, srv3, srv2, srv1
et vtt, ttml, srv3, srv2, srv1
es vtt, ttml, srv3, srv2, srv1
ru vtt, ttml, srv3, srv2, srv1
rw vtt, ttml, srv3, srv2, srv1
ro vtt, ttml, srv3, srv2, srv1
bn vtt, ttml, srv3, srv2, srv1
be vtt, ttml, srv3, srv2, srv1
bg vtt, ttml, srv3, srv2, srv1
uk vtt, ttml, srv3, srv2, srv1
jv vtt, ttml, srv3, srv2, srv1
bs vtt, ttml, srv3, srv2, srv1
ja vtt, ttml, srv3, srv2, srv1
or vtt, ttml, srv3, srv2, srv1
xh vtt, ttml, srv3, srv2, srv1
co vtt, ttml, srv3, srv2, srv1
ca vtt, ttml, srv3, srv2, srv1
cy vtt, ttml, srv3, srv2, srv1
cs vtt, ttml, srv3, srv2, srv1
ps vtt, ttml, srv3, srv2, srv1
pt vtt, ttml, srv3, srv2, srv1
pa vtt, ttml, srv3, srv2, srv1
vi vtt, ttml, srv3, srv2, srv1
pl vtt, ttml, srv3, srv2, srv1
hy vtt, ttml, srv3, srv2, srv1
hr vtt, ttml, srv3, srv2, srv1
ht vtt, ttml, srv3, srv2, srv1
hu vtt, ttml, srv3, srv2, srv1
hmn vtt, ttml, srv3, srv2, srv1
hi vtt, ttml, srv3, srv2, srv1
ha vtt, ttml, srv3, srv2, srv1
mg vtt, ttml, srv3, srv2, srv1
uz vtt, ttml, srv3, srv2, srv1
ml vtt, ttml, srv3, srv2, srv1
mn vtt, ttml, srv3, srv2, srv1
mi vtt, ttml, srv3, srv2, srv1
mk vtt, ttml, srv3, srv2, srv1
ur vtt, ttml, srv3, srv2, srv1
mt vtt, ttml, srv3, srv2, srv1
ms vtt, ttml, srv3, srv2, srv1
mr vtt, ttml, srv3, srv2, srv1
ug vtt, ttml, srv3, srv2, srv1
ta vtt, ttml, srv3, srv2, srv1
my vtt, ttml, srv3, srv2, srv1
af vtt, ttml, srv3, srv2, srv1
sw vtt, ttml, srv3, srv2, srv1
is vtt, ttml, srv3, srv2, srv1
am vtt, ttml, srv3, srv2, srv1
it vtt, ttml, srv3, srv2, srv1
iw vtt, ttml, srv3, srv2, srv1
sv vtt, ttml, srv3, srv2, srv1
ar vtt, ttml, srv3, srv2, srv1
su vtt, ttml, srv3, srv2, srv1
zu vtt, ttml, srv3, srv2, srv1
az vtt, ttml, srv3, srv2, srv1
id vtt, ttml, srv3, srv2, srv1
ig vtt, ttml, srv3, srv2, srv1
nl vtt, ttml, srv3, srv2, srv1
no vtt, ttml, srv3, srv2, srv1
ne vtt, ttml, srv3, srv2, srv1
ny vtt, ttml, srv3, srv2, srv1
fr vtt, ttml, srv3, srv2, srv1
ku vtt, ttml, srv3, srv2, srv1
fy vtt, ttml, srv3, srv2, srv1
fa vtt, ttml, srv3, srv2, srv1
fi vtt, ttml, srv3, srv2, srv1
ka vtt, ttml, srv3, srv2, srv1
kk vtt, ttml, srv3, srv2, srv1
sr vtt, ttml, srv3, srv2, srv1
sq vtt, ttml, srv3, srv2, srv1
ko vtt, ttml, srv3, srv2, srv1
kn vtt, ttml, srv3, srv2, srv1
km vtt, ttml, srv3, srv2, srv1
st vtt, ttml, srv3, srv2, srv1
sk vtt, ttml, srv3, srv2, srv1
si vtt, ttml, srv3, srv2, srv1
so vtt, ttml, srv3, srv2, srv1
sn vtt, ttml, srv3, srv2, srv1
sm vtt, ttml, srv3, srv2, srv1
sl vtt, ttml, srv3, srv2, srv1
ky vtt, ttml, srv3, srv2, srv1
sd vtt, ttml, srv3, srv2, srv1
Available subtitles for QS-Zz-2ovo0:
Language formats
en vtt, ttml, srv3, srv2, srv1
ja vtt, ttml, srv3, srv2, srv1
大量に出てきましたが,上の方の Available automatic captions
の物はYoutubeの自動生成&自動翻訳されたもののようです.
Available subtitles
以下のものが人の手で翻訳されたものだと思います.今回の動画では en, ja
があるようです.
--write-sub --sub-lang=ja
で日本語の字幕を書き出すよう指定してみます.
$ youtube-dl --ignore-config --write-sub --sub-lang=ja QS-Zz-2ovo0
動画名.mp4
と 動画名.ja.vtt
というファイルが入手できました.動画名.言語.vtt
というファイルが字幕ファイルのようです.この2ファイルが同じディレクトリにある状態で動画プレイヤーで .mp4 を再生すると字幕が表示されました :)
Totemでは表示されませんでしたが,メニューから字幕ファイルを指定すると表示されました.
$ ls LibreOffice\ Asia\ Conference\ 2019\ -\ LibreOffice\,\ the\ many\ different\ faces\ of\ a\ global\ community.*
'LibreOffice Asia Conference 2019 - LibreOffice, the many different faces of a global community.ja.vtt'
'LibreOffice Asia Conference 2019 - LibreOffice, the many different faces of a global community.mp4'
$ mpv ./LibreOffice\ Asia\ Conference\ 2019\ -\ LibreOffice\,\ the\ many\ different\ faces\ of\ a\ global\ community.mp4
$ cvlc ./LibreOffice\ Asia\ Conference\ 2019\ -\ LibreOffice\,\ the\ many\ different\ faces\ of\ a\ global\ community.mp4
これでとりあえず目的は果たせました.
でもYoutubeでのみですが,自動生成翻訳字幕のダウンロードが気になるのでこれも試してみます.
今度は日本語字幕の存在しないDebconf19のもので日本語の自動生成字幕 --sub-lang=ja
--write-auto-sub
オプション&解像度を240pにしておきます.
$ youtube-dl --sub-lang=ja --write-auto-sub -f 'bestvideo[height<=240]+bestaudio/best[height<=360]' U17DID4vdpc
自動生成&機械翻訳なのでおかしなところはありますがいけたようです.
後はライブ動画やライブ音声のリアルタイム翻訳ができるといいなーと思ったりも.DeepSpeechで文字起こししてみんなの翻訳とかDeeplに都賀具感じでリアルタイムで出来ないかなとか.
$ youtube-dl --version 2020.05.03 $ dpkg-query -W mpv vlc totem firejail firejail 0.9.62-3 mpv 0.32.0-1 totem 3.34.1-2+b1 vlc 3.0.10-1
9