ねこにコベイン

にゃーにゃーにゃー

WSL(Bash on Ubuntu 20.04 on Windows)向けにffmpegをビルドしてみる話

CompilationGuide/Ubuntu – FFmpegを元ネタにWSL1のUbuntu用にビルドするテスト。
20.04出たばかりのWSL2出る直前でタイミングとかすごい悪い気がするが、気にしない。
…WSL2でも動いたな、これ。当たり前か。
あとffmpeg脆弱性ガー、みたいな記事を2020.5.25にニュースサイトで見たので注意。

さいしょに

結論(ここを適切にコピペすれば以下は読まなくてよい)

YouTubeとラジコをダウンロードしたい人のためのffmpegビルド方法。
エラーが出ないように適当に切り貼ってください。
その他、目次【オマケ】は上記に対応するツール等の紹介・導入・設定・用法です。御笑覧。

sudo apt-get update -qq && sudo apt-get -y install autoconf automake build-essential cmake \
  git-core libass-dev libfreetype6-dev libtool libvorbis-dev pkg-config texinfo wget zlib1g-dev
sudo apt -y install nasm yasm libx264-dev libnuma-dev libx265-dev libvpx-dev libfdk-aac-dev libmp3lame-dev libopus-dev libaom-dev \
 libssl-dev libogg-dev libtheora-dev libopencore-amrnb-dev libopencore-amrwb-dev libgme-dev libmodplug-dev
mkdir -p ~/ffmpeg_sources ~/bin
cd ~/ffmpeg_sources/ && \
wget -O ffmpeg-snapshot.tar.bz2 https://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2 && \
tar xjvf ffmpeg-snapshot.tar.bz2 && \
cd ffmpeg && \
PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure \
  --prefix="$HOME/ffmpeg_build" \
  --pkg-config-flags="--static" \
  --disable-ffplay \
  --extra-cflags="-I$HOME/ffmpeg_build/include" \
  --extra-ldflags="-L$HOME/ffmpeg_build/lib" \
  --extra-libs="-lpthread -lm" \
  --bindir="$HOME/bin" \
  --enable-gpl \
  --enable-libaom \
  --enable-libass \
  --enable-libfdk-aac \
  --enable-libfreetype \
  --enable-libgme \
  --enable-libmodplug \
  --enable-libmp3lame \
  --enable-libopus \
  --enable-libvorbis \
  --enable-libvpx \
  --enable-libtheora \
  --enable-libx264 \
  --enable-libx265 \
  --enable-nonfree  \
  --enable-libopencore-amrnb \
  --enable-libopencore-amrwb \
  --enable-openssl \
  --enable-version3 &&\
PATH="$HOME/bin:$PATH" make -j4 && \
make install && \
hash -r

趣旨

ステイホームで暇なのでffmpegのドキュメントを読んだ結果をアウトプットした備忘。
公式wikiCompilationGuide/Ubuntu – FFmpegGeneral Documentation、及びconfigureのソース以外読む努力をする積りはない。
早い話が他人に見せないで自分だけキモチヨクなればいい、あれだ。*1
apt使ったインストールで済ませられるところは極力済ませる。
問題の切り分け?にもなりそうじゃん。
オマケで自分の興味のあるところはffmpeg関係なく足していきたい。その際は明記する。

目的

Windowsに付いてくるオマケのLinux(WSL1)用。タイミング的にWSL2という大幅刷新が控えていますが、私は今欲しいので。
こないだpkgsrcと一緒に導入する方法を整理してみた*2んだけど、pkg_rolling-update掛けたらエラー出て止まったので、一からやり直すことにした。バイバイpkgsrc。

というわけで以下のようなスタンスの下、この記事は継ぎ足されていくのであった…

  • rtmpdumpと繫げてradikoで民放ラジオの録音がしたい。
  • ffmpegを使ってNHKラジオの録音がしたい。SSL対応。
  • youtube-dlで使えるようm4aとmp4くっつけたい。
  • 思いついたコーデックは極力導入し、「ぼくのかんがえたさいきょうのffmpegを作りたい。

元ネタの文書、CompilationGuide

CompilationGuide/Ubuntu – FFmpegは、「コンパイルしたくない人とかできない人向けにstaticビルドがUbuntuにはあるんだけどさあ、非フリーのエンコーダーってそこには入れられねえじゃん?ビルドエラー潰す楽しみも味わえねえし。*3」から始まる有名なビルド手順である。
その他「Ubuntuのaptで入るやつとか、極力邪魔したくねえんだよなあ」的な公式FAQ回答のスタンスを把握しながら、自分のスタンス(↑)を固めて折り合いを付ける。
つまり「いったん自分のホームディレクトリにインストールして、必要なら/usr/local/binにcpすれば?」という公式FAQ回答のとおりで進める。

閑話:今後の変更点の見直し

2020.5.10時点で「Last modified 12 months ago」だった。枯れた文書なんで、鬼フォローしなくてよさそうな。
HTML文書右上の方に「History」があるので、変更点はそこで辿れる。大きく変わったところはここで確認するといいんではないだろうか。

2020.5.15更新
書いた2日後にmodifiedされている。主な変更点は「yasmじゅうぶん枯れちゃったからaptでよくね?」というのと「gnutls対応にすんべ」という方針への変更に合わせた文書の平仄合わせ。
やっぱ週イチ位チェックすんべえか。
でもなんかlibgnutls28-dev入れて--enable-opensslを--enable-gnutlsに替えたら「ERROR: gnutls not found using pkg-config」エラーが出る気がするんだけどコレ…

必要なパッケージの導入・ディレクトリの作成

ffplayを削る

「サーバーユーザーでffplayが要らない人はさあ、」で始まるNoteを採用し、x11grabの依存関係のパッケージを導入しない*4
具体的には後述のffmpegのconfigureで「--disable-ffplay」を指定している。
なお、以下sudoのあとに投入されるコマンドでは、あなたのパスワードを訊かれるので答えていただきたい。

$ sudo apt-get update -qq && sudo apt-get -y install \
  autoconf \
  automake \
  build-essential \
  cmake \
  git-core \
  libass-dev \
  libfreetype6-dev \
  libtool \
  libvorbis-dev \
  pkg-config \
  texinfo \
  wget \
  zlib1g-dev

削ったffplayを再度オンにするときは以下のとおり。(ffmpegのconfigure時、--disable-ffplayも削る。)

$ sudo apt -y install libsdl2-dev libva-dev libvdpau-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev

次のエラーが出て再生できなかったよorz
なんかめんどくさそう…

error: XDG_RUNTIME_DIR not set in the environment.
Could not initialize SDL - No available video device
(Did you set the DISPLAY variable?)

ディレクトリの作成

ホームにビルド用ディレクトリと、実行ファイルを置くディレクトリを切る。既にあるならば作らないでもよい。

$ mkdir -p ~/ffmpeg_sources ~/bin

必要なコンポーネントのビルドと導入

驚いたことにUbuntu20.04を使う分にはコンポーネント関連はほぼ野良ビルド不要…
でも少しでも新しいものを使いたい方は公式wikiを見て0.001でも新しい野良をぶち込むといいと思う。
そういう御仁のため、スクリプトを作ってくれている先人が居るので、紹介する。*5
LinuxでFFmpegをほぼ全自動でビルドする(CentOS、Ubuntu等に対応) | 自分に負けないラボラトリー

nasm、yasm、x264、x265、libvpx、libfdk-aac、libmp3lame、libopus、libaom

本稿時点のaptで導入されるバージョンが要件を満たしているのでaptから導入してよいハズ。
libaomもなんかstableなAPIがないのよね、みたいなコメントがあって、しばし待っとくれ、的なNoteがなされていたけど*6、パッケージがUbuntuにあるので入れたら通った。
たぶん大丈夫なんだろう。

$ sudo apt -y install nasm yasm libx264-dev libnuma-dev libx265-dev libvpx-dev libfdk-aac-dev libmp3lame-dev libopus-dev libaom-dev

openssl

NHKのラジオ放送を録音するスクリプトを利用する場合はこちらか。

$ sudo apt -y install libssl-dev

theora

Ogg Vorbis作ってるとこの非可逆動画圧縮フォーマットらしい。あと、たぶんlibvorbisかlibopus導入時に入ってると思うけど気持ち悪いのでliboggも明示的に導入しておこう。

$ sudo apt -y install libogg-dev libtheora-dev

amr

Wikipedia情報によれば、FOMAの着うたフォーマットとして、マイナーながらもメジャーらしい。
しかもこいつはLGPL3を要求するようなので、対応してやるならconfigureに--enable-version3も足してやらんといかんみたい。

$ sudo apt -y install libopencore-amrnb-dev libopencore-amrwb-dev

gmeとmodplug

ピコピコ系2種。nsfとかが開けるGME(game music emu)とs3mやitも開ける(たぶん)なmodplug。
ライセンスについてはgmeはLGPLでmodplugはわからん。
ライセンスのオプションは上記amrの段で全通しになっているので、ビルド自体はたぶん通るんでないか。
…しかしffplayが欲しくなってくるなコレ。コマンドラインからmod聴けたらステキやん。

$ sudo apt -y install libgme-dev libmodplug-dev

FFmpeg

ビルドする。
下から3行目に-jオプション追加、「PATH="$HOME/bin:$PATH" make -j4 && \」などとすると4多重で並列でコンパイルが進んで終わるのが早くなる、のは、ご存じのとおりでは、ないでしょうか。

$ cd ~/ffmpeg_sources/ && \
wget -O ffmpeg-snapshot.tar.bz2 https://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2 && \
tar xjvf ffmpeg-snapshot.tar.bz2 && \
cd ffmpeg && \
PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure \
  --prefix="$HOME/ffmpeg_build" \
  --pkg-config-flags="--static" \
  --disable-ffplay \
  --extra-cflags="-I$HOME/ffmpeg_build/include" \
  --extra-ldflags="-L$HOME/ffmpeg_build/lib" \
  --extra-libs="-lpthread -lm" \
  --bindir="$HOME/bin" \
  --enable-gpl \
  --enable-libaom \
  --enable-libass \
  --enable-libfdk-aac \
  --enable-libfreetype \
  --enable-libgme \
  --enable-libmodplug \
  --enable-libmp3lame \
  --enable-libopus \
  --enable-libvorbis \
  --enable-libvpx \
  --enable-libtheora \
  --enable-libx264 \
  --enable-libx265 \
  --enable-nonfree  \
  --enable-libopencore-amrnb \
  --enable-libopencore-amrwb \
  --enable-openssl \
  --enable-version3 &&\
PATH="$HOME/bin:$PATH" make -j4 && \
make install && \
hash -r

いったんログアウトさせて、新たに開いたWSLでffmpegを開くと、ffmpegができているのが確認できる。以下のとおり動いているみたい。

$ ffmpeg
ffmpeg version N-97687-gd0705ec Copyright (c) 2000-2020 the FFmpeg developers
  built with gcc 9 (Ubuntu 9.3.0-10ubuntu2)
  configuration: --prefix=/home/tangerine/ffmpeg_build --pkg-config-flags=--static --disable-ffplay --extra-cflags=-I/home/tangerine/ffmpeg_build/include --extra-ldflags=-L/home/tangerine/ffmpeg_build/lib --extra-libs='-lpthread -lm' --bindir=/home/tangerine/bin --enable-gpl --enable-libaom --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libgme --enable-libmodplug --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libtheora --enable-libx264 --enable-libx265 --enable-nonfree --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-openssl --enable-version3
  libavutil      56. 43.100 / 56. 43.100
  libavcodec     58. 83.100 / 58. 83.100
  libavformat    58. 43.100 / 58. 43.100
  libavdevice    58.  9.103 / 58.  9.103
  libavfilter     7. 80.100 /  7. 80.100
  libswscale      5.  6.101 /  5.  6.101
  libswresample   3.  6.100 /  3.  6.100
  libpostproc    55.  6.100 / 55.  6.100
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...

Use -h to get full help or, even better, run 'man ffmpeg'

ちなみにパスが通っていないため、man ffmpegをこの時点でするとドキュメントは出ずエラーになる。
ドキュメントをmanで出す設定等も公式wikiにあるが、~/ffmpeg_build/share/doc/ffmpegディレクトリをテキトーにWindowsから開きやすい所にコピってブラウザで開いた方が楽なんでないか。

再ビルド

アップデートほかffmpegを再ビルドしたい時は、前にビルドしたやつが残っているとうまくない場合があるのか、中間生成物等を削除する。

$ rm -rf ~/ffmpeg_build ~/bin/{ffmpeg,ffprobe,ffplay,x264,x265}

更にffmpegほか、各ディレクトリをmake cleanした後にmakeを始めんといかんのでは、ないだろうか…

$ cd ~/ffmpeg_sources/ffmpeg
$ make clean
(このほかにビルドしたコンポーネントがあれば各々のディレクトリでmake cleanを実行する。)

【オマケ】youtube-dl

GitHub - ytdl-org/youtube-dl: Command-line program to download videos from YouTube.com and other video sites

本体スクリプトの導入

しれーっとpython3周りの設定を導入している。Ubuntu20.04てpython2に関しては消極的だったと思うのと、ytdl自体はpython3でも動くので。

$ sudo apt -y install python-is-python3
$ sudo wget https://yt-dl.org/downloads/latest/youtube-dl -O /usr/local/bin/youtube-dl
$ sudo chmod a+rx /usr/local/bin/youtube-dl

オマケスクリプトと実行結果。

コケるときはコケるんであんまり信用しないこと。

$ cat mux.sh
#!/bin/bash
youtubename=`youtube-dl --get-filename $1`
echo $youtubename

videoname=`echo "$youtubename" | sed -e 's/webm\$/mp4/g'`
#videoname=`basename "$youtubename" .e`.mp4
echo $videoname

audioname=`echo $videoname | sed -e 's/mp4\$/m4a/g'`
#audioname=`basename "$youtubename" .e`.m4a
echo $audioname

muxname=`echo $videoname | sed -e 's/mp4\$/mux.mp4/g'`
#muxname=`basename "$youtubename" .e`.mux.mp4
echo $muxname

youtube-dl -F $1

echo -n "-f option [137,140]: "
read optcodec
if [ "$optcodec" = "" ]; then
   optcodec="137,140"
fi

youtube-dl -f $optcodec $1

ffmpeg -i "$videoname" -i "$audioname" -c:v copy -c:a copy "$muxname" && \
rm "$videoname" && rm "$audioname"
$ sudo chmod +x mux.sh 
$ ./mux.sh https://www.youtube.com/watch?v=_ZRp7KYXM1A
#StayHome #GWも家で一緒に-_ZRp7KYXM1A.mp4
#StayHome #GWも家で一緒に-_ZRp7KYXM1A.mp4
#StayHome #GWも家で一緒に-_ZRp7KYXM1A.m4a
#StayHome #GWも家で一緒に-_ZRp7KYXM1A.mux.mp4
[youtube] _ZRp7KYXM1A: Downloading webpage
[info] Available formats for _ZRp7KYXM1A:
format code  extension  resolution note
249          webm       audio only tiny   55k , opus @ 50k (48000Hz), 358.71KiB
250          webm       audio only tiny   72k , opus @ 70k (48000Hz), 471.76KiB
140          m4a        audio only tiny  130k , m4a_dash container, mp4a.40.2@128k (44100Hz), 950.87KiB
251          webm       audio only tiny  137k , opus @160k (48000Hz), 939.03KiB
278          webm       256x144    144p   97k , webm container, vp9, 30fps, video only, 611.20KiB
160          mp4        256x144    144p  111k , avc1.4d400c, 30fps, video only, 482.46KiB
133          mp4        426x240    240p  191k , avc1.4d4015, 30fps, video only, 796.20KiB
242          webm       426x240    240p  221k , vp9, 30fps, video only, 1.03MiB
134          mp4        640x360    360p  343k , avc1.4d401e, 30fps, video only, 1.39MiB
243          webm       640x360    360p  406k , vp9, 30fps, video only, 1.78MiB
135          mp4        854x480    480p  571k , avc1.4d401f, 30fps, video only, 2.04MiB
244          webm       854x480    480p  677k , vp9, 30fps, video only, 2.66MiB
136          mp4        1280x720   720p  818k , avc1.4d401f, 30fps, video only, 3.19MiB
247          webm       1280x720   720p 1289k , vp9, 30fps, video only, 4.43MiB
248          webm       1920x1080  1080p 2483k , vp9, 30fps, video only, 11.15MiB
137          mp4        1920x1080  1080p 2670k , avc1.640028, 30fps, video only, 10.69MiB
18           mp4        640x360    360p  457k , avc1.42001E, mp4a.40.2@ 96k (44100Hz), 3.28MiB
22           mp4        1280x720   720p  575k , avc1.64001F, mp4a.40.2@192k (44100Hz) (best)
-f option [137,140]:
[youtube] _ZRp7KYXM1A: Downloading webpage
[info] _ZRp7KYXM1A: downloading video in 2 formats
[download] Destination: #StayHome #GWも家で一緒に-_ZRp7KYXM1A.mp4
[download] 100% of 10.69MiB in 00:01
[download] Destination: #StayHome #GWも家で一緒に-_ZRp7KYXM1A.m4a
[download] 100% of 950.87KiB in 00:00
[ffmpeg] Correcting container in "#StayHome #GWも家で一緒に-_ZRp7KYXM1A.m4a"
ffmpeg version N-97687-gd0705ec Copyright (c) 2000-2020 the FFmpeg developers
  built with gcc 9 (Ubuntu 9.3.0-10ubuntu2)
  configuration: --prefix=/home/tangerine/ffmpeg_build --pkg-config-flags=--static --disable-ffplay --extra-cflags=-I/home/tangerine/ffmpeg_build/include --extra-ldflags=-L/home/tangerine/ffmpeg_build/lib --extra-libs='-lpthread -lm' --bindir=/home/tangerine/bin --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree --enable-openssl
  libavutil      56. 43.100 / 56. 43.100
  libavcodec     58. 83.100 / 58. 83.100
  libavformat    58. 43.100 / 58. 43.100
  libavdevice    58.  9.103 / 58.  9.103
  libavfilter     7. 80.100 /  7. 80.100
  libswscale      5.  6.101 /  5.  6.101
  libswresample   3.  6.100 /  3.  6.100
  libpostproc    55.  6.100 / 55.  6.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '#StayHome #GWも家で一緒に-_ZRp7KYXM1A.mp4':
  Metadata:
    major_brand     : dash
    minor_version   : 0
    compatible_brands: iso6avc1mp41
    creation_time   : 2020-05-02T11:24:31.000000Z
  Duration: 00:01:00.06, start: 0.000000, bitrate: 1492 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 1920x1080 [SAR 1:1 DAR 16:9], 106 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default)
    Metadata:
      creation_time   : 2020-05-02T11:24:31.000000Z
      handler_name    : ISO Media file produced by Google Inc.
Input #1, mov,mp4,m4a,3gp,3g2,mj2, from '#StayHome #GWも家で一緒に-_ZRp7KYXM1A.m4a':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2mp41
    encoder         : Lavf58.43.100
  Duration: 00:01:00.12, start: 0.000000, bitrate: 129 kb/s
    Stream #1:0(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 127 kb/s (default)
    Metadata:
      handler_name    : ISO Media file produced by Google Inc.
Output #0, mp4, to '#StayHome #GWも家で一緒に-_ZRp7KYXM1A.mux.mp4':
  Metadata:
    major_brand     : dash
    minor_version   : 0
    compatible_brands: iso6avc1mp41
    encoder         : Lavf58.43.100
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 106 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 30k tbc (default)
    Metadata:
      creation_time   : 2020-05-02T11:24:31.000000Z
      handler_name    : ISO Media file produced by Google Inc.
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 127 kb/s (default)
    Metadata:
      handler_name    : ISO Media file produced by Google Inc.
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #1:0 -> #0:1 (copy)
Press [q] to stop, [?] for help
frame= 1800 fps=0.0 q=-1.0 Lsize=   11923kB time=00:01:00.09 bitrate=1625.4kbits/s speed=2.09e+03x
video:10921kB audio:939kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.525545%

何回試してもダウンロードできなくなる日が来たとき(原理上よく起こる)

次の二つを対応

  1. スクリプト本体の更新(「導入」をもっかいやる。)
  2. キャッシュ削除(以下のコマンド投入。)
$ youtube-dl --rm-cache-dir

【オマケ】rec_radiko.sh

簡易Radiko録音スクリプト · GitHub

rtmpdump、xmllintの導入

$ sudo apt -y install rtmpdump libxml2-utils

swfextractの野良ビルド

いつの間にか*7Ubuntuのレポジトリーからswftoolsが消えていたため、こいつはビルドしてやらないといけない。
SWFTOOLS
zlib1g-devが必須だったような気がするが、上の方で明示的に導入しているので、順番に試してる人は引っ掛かることはないと思う。
なお、従前に導入したライブラリの関係で全部乗せに近いconfigureをかけている場合、ビルドの途中でxpdf云々でエラーが出る場合がある。
しかしこれは既知のMakefileのエラーなので、怯まずもう一回makeコマンドを投入すると最後まで通る。
数年前にissuesで議論されてるが、ここ数年、誰かがMakefileを治した形跡はない。
Compiling fails · Issue #12 · matthiaskramm/swftools · GitHub

$ git clone git://github.com/matthiaskramm/swftools
$ ./configure
$ make
$ sudo make install

rec_radiko.sh

$ wget https://gist.githubusercontent.com/matchy2/3956266/raw/371be42108ea0c4a96c488f36a44b98deb17008f/rec_radiko.sh
$ chmod +x rec_radiko.sh
$ ./rec_radiko.sh INT 1
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = (unset),
        LC_ALL = (unset),
        LANG = "ja_JP.utf8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = (unset),
        LC_ALL = (unset),
        LANG = "ja_JP.utf8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = (unset),
        LC_ALL = (unset),
        LANG = "ja_JP.utf8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = (unset),
        LC_ALL = (unset),
        LANG = "ja_JP.utf8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = (unset),
        LC_ALL = (unset),
        LANG = "ja_JP.utf8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
RTMPDump v2.4
(c) 2010 Andrej Stepanchuk, Howard Chu, The Flvstreamer Team; license: GPL
WARNING: No application or playpath in URL!
Connecting ...
WARNING: Trying different position for server digest!
INFO: Connected...
Starting Live Stream
For duration: 60.000 sec
INFO: Metadata:
365.704 kB / 60.03 sec
Download complete

【オマケ】rec_radiko_ts.sh

GitHub - uru2/rec_radiko_ts: Radiko timefree program recorder
タイムフリーが使いやすいのはこっち。
以下の-uで指定するURLはradiko.jp公式のタイムフリーで聴きたい番組を選んで、アドレスバーからコピペすればよい。

$ wget https://raw.githubusercontent.com/uru2/rec_radiko_ts/master/rec_radiko_ts.sh
$ chmod +x rec_radiko_ts.sh
$ rec_radiko_ts.sh -u 'http://radiko.jp/#!/ts/INT/20200510200000'

【オマケ】らじるらじる

らじるらじる m3u8 を ffmpeg で録音する(8放送局)2017/9 以降対応 · GitHub
以下のコマンドのffmpegの-iオプションのURLは、M3U8というもので各(地方の)ラジオ局を表す。test.m4aが出力ファイル名なので併せて適宜変更されたい。

$ ffmpeg -i https://nhkradioakfm-i.akamaihd.net/hls/live/512290/1-fm/1-fm-01.m3u8 -t 15 -c copy test.m4a
ffmpeg version git-2020-04-05-bef3c14 Copyright (c) 2000-2020 the FFmpeg developers
  built with gcc 9.3.0 (GCC)
  configuration: --prefix=/usr/local/ffmpeg_build --extra-cflags=-I/usr/local/ffmpeg_build/include --extra-ldflags=-L/usr/local/ffmpeg_build/lib --extra-libs='-lm -lpthread' --bindir=/usr/local/ffmpeg_build/bin --pkg-config-flags=--static --enable-gpl --enable-nonfree --enable-libfreetype --enable-openssl --enable-pic --enable-libx264 --enable-libx265 --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libtheora --enable-libvpx --enable-libass
  libavutil      56. 42.102 / 56. 42.102
  libavcodec     58. 77.101 / 58. 77.101
  libavformat    58. 42.100 / 58. 42.100
  libavdevice    58.  9.103 / 58.  9.103
  libavfilter     7. 77.101 /  7. 77.101
  libswscale      5.  6.101 /  5.  6.101
  libswresample   3.  6.100 /  3.  6.100
  libpostproc    55.  6.100 / 55.  6.100
[hls @ 0x324f140] Skip ('#EXT-X-VERSION:2')
[hls @ 0x324f140] Opening 'https://nhkradioakfm-i.akamaihd.net/hls/live/512290/1-fm/1-fm-20200320T020228-01-215/1190.ts' for reading
[hls @ 0x324f140] Opening 'https://nhkradioakfm-i.akamaihd.net/hls/live/512290/1-fm/1-fm-20200320T020228-01-215/1191.ts' for reading
Input #0, hls, from 'https://nhkradioakfm-i.akamaihd.net/hls/live/512290/1-fm/1-fm-01.m3u8':
  Duration: N/A, start: 24975.284811, bitrate: N/A
  Program 0
    Metadata:
      variant_bitrate : 0
    Stream #0:0: Audio: aac (HE-AAC) ([15][0][0][0] / 0x000F), 48000 Hz, stereo, fltp
    Metadata:
      variant_bitrate : 0
Output #0, ipod, to 'test.m4a':
  Metadata:
    encoder         : Lavf58.42.100
    Stream #0:0: Audio: aac (HE-AAC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp
    Metadata:
      variant_bitrate : 0
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
Press [q] to stop, [?] for help
[https @ 0x327bec0] Opening 'https://nhkradioakfm-i.akamaihd.net/hls/live/512290/1-fm/1-fm-20200320T020228-01-215/1192.ts' for reading
size=      87kB time=00:00:14.97 bitrate=  47.6kbits/s speed= 802x
video:0kB audio:88kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown

*1:ほかのpostもそうなんですが。

*2:mk.confに一行足して、多めに待つだけで超イージー。うまくいけば、だけど…

*3:微妙にずれるかもだが、この辺のスタンスや、事情については、界隈を追っかけていた人(ほんとうはそういう変人呼ばわりしてはいけない位のエラいもんの様である。)の記事が端正な日本語で読めるので、紹介する。本の虫: ffmpegとlibavの背景事情。お家騒動、覚えてる人にとっては、嫌な事件だったね…

*4:前提がWindowsなんだし、そもそもWSL上で音鳴るのか?

*5:もちろんこの投稿の元ネタもここだ。盛大にパクっているつもりなのに、志が全然違うんで全然違う結果になっているのはご愛敬。

*6:上述のとおり12か月音沙汰がないようにも見える。

*7:19.10からのようです。swftools : Eoan (19.10) : Ubuntu