オープンソースカンファレンス2022 Online Springに参加しました.
ビデオミーティングソフトウェアのZoomとYouTube Liveを使っています.セッションは複数トラックあって同時に参加するのは難しいです.ほとんどのセッションは後日YouTubeで公開されますが,YouTube Liveの動画をリモートのサーバで録画しておいたのでこれをスマートフォンで移動中などに聞けるようにしてみました.
YouTubeの動画ダウンロードにはyoutube-dlやyt-dlpが便利です.セッション毎に起動しておきました.
$ youtube-dl ${URL} $ yt-dlp ${URL}
今回ダウンロードした動画はvp9+aacのようです.
$ ffprobe -i ./YOUTUBEFILE.mkv 2>&1 | grep ^Input -A99 Input #0, matroska,webm, from './YOUTUBEFILE.mkv': Metadata: HTTP://YOUTUBE.COM/STREAMING/OTF/DURATIONS/112015: Segment-Count: 6109 : Segment-Durations-Ms: 5067,5066,5067(r=1),5066,5067(r=1),5066,5067(r=1),5066,5067(r=1),5066,5067(r=1),5066,5067(r=1),5066,5067(r=1),5066,5067(r=1),5066,5067(r=1),5066,5067(r=1),5066,5067(r=1),5066,5067(r=1),5066,5067(r=1),5066,5067(r=1),5066,5067(r=1),506 : : ENCODER : Lavf58.20.100 Duration: 08:35:50.04, start: 0.000000, bitrate: 551 kb/s Stream #0:0(eng): Video: vp9 (Profile 0), yuv420p(tv, bt709/unknown/unknown), 1280x720, SAR 1:1 DAR 16:9, 30 fps, 30 tbr, 1k tbn, 1k tbc (default) Metadata: DURATION : 08:35:49.996000000 Stream #0:1(eng): Audio: aac (LC), 44100 Hz, stereo, fltp (default) Metadata: HANDLER_NAME : ISO Media file produced by Google Inc. DURATION : 08:35:50.040000000
ffmpegで音声だけを抜き出してみます.
$ ffmpeg -i ./YOUTUBEFILE.mkv -vn -acodec copy ./YOUTUBEFILE.aac
元ファイルが2GBほどに対して500MBほどのファイルになりました.
ちょっと大きいのでコーデックをopusに変更してみます.
$ ffmpeg -i ./YOUTUBEFILE.mkv -vn -acodec libopus -b:a 64k ./YOUTUBEFILE.opus
213MB程になりました.
これをローカルにダウンロードして再生してみるとセッション間の無音部分が気になります.無音部分をカットできないかなと探すと,ffmpegのフィルタにそれらしい silenceremove
というフィルタがあったので試してみました.
とりあえずexampleを真似して,先頭から最後までの間の1秒以上の無音部分をカットします.ついでにビットレートも32kに下げました.
$ ffmpeg -i ./YOUTUBEFILE.mkv -vn -af silenceremove=stop_periods=-1:stop_duration=1:stop_threshold=-90dB -acodec libopus -b:a 32k ./YOUTUBEFILE.opus
動画ファイルの長さが 08:35:50.040000000
から 07:55:03.66
になりました.ファイルサイズは107MB程です.
ついでにもう少し低いビットレートも試しました.
ビットレート | 容量 |
---|---|
32k |
107324kB |
24k |
82484kB |
16k |
56380kB |
少し聞いた感じでは16kでも問題無さそうな感じです.大本のZoomが確か24kなので24k以上はあまり意味がない気がします.
High Fidelity Audio mode – Windows, macOS
This option in Advanced Audio enhances “Original Audio” mode, allowing for disabling echo cancellation & post-processing, while raising audio codec quality to 48Khz, 96Kbps mono/192kbps stereo for professional audio transmis
sion in music education and performance applications. Professional audio interface, microphone, and headphones required.
2020 – Zoom Support https://support.zoom.us/hc/en-us/articles/360048388632-New-Updates-for-September-1-2020
ということで他のセッションも同様に変換してAndroidスマートフォンに転送してVLCで1.5倍再生してみて画面スリープで再生できるのを確認しました.これで空き時間に聞けるようになりました :)
応用としてYouTubeのRSSから動画をダウンロードして音声のみにしてその音声をRSSに埋め込んで公開するとPodcastアグリゲーターで購読できるので便利かもしれません.人の動画を勝手に一般公開するとまずいでしょうが.
$ youtube-dl --version 2021.12.17 $ yt-dlp --version 2022.03.08.1 $ dpkg-query -W ffmpeg ffmpeg 7:4.1.8-0+deb10u1 $ lsb_release -dr Description: Debian GNU/Linux 10 (buster) Release: 10 $ arch x86_64