ネット見てると ffmpeg に複数の -headers を指定してる記事がちらほらあるのだが……

[ ffmpeg 3.4.8-0ubuntu0.2 ]

-loglevel debug をつけて聞いてみろ。

ffmpeg \
  -headers 'X-Hogehoge: hogege' \
  -headers 'X-Piyopiyo: piyoyo' \
  -i 'http://example.com/path/to/playlist.m3u8' \
  -loglevel debug
  -acodec copy output.aac
ログ抜粋
request: GET /path/to/playlist.m3u8 HTTP/1.1
User-Agent: Lavf/57.83.100
Accept: */*
Range: bytes=0-
Connection: close
Host: example.com
Icy-MetaData: 1
X-Piyopiyo: piyoyo

ついてないじゃん X-Hogehoge がァ!!!

後から指定した -headers 'X-Piyopiyo: piyoyo' に上書きされてしまったのだ。

X-Hogehoge X-Piyopiyo ともつけたければ、以下のように単一の -headers オプション中で改行コード (CRLF) で区切って指定する必要がある。(bashの場合)

ffmpeg \
  -headers 'X-Hogehoge: hogege'$'\r\n''X-Piyopiyo: piyoyo' \
  -i 'http://example.com/path/to/playlist.m3u8' \
  -loglevel debug
  -acodec copy output.aac
ログ抜粋
request: GET /path/to/playlist.m3u8 HTTP/1.1
User-Agent: Lavf/57.83.100
Accept: */*
Range: bytes=0-
Connection: close
Host: example.com
Icy-MetaData: 1
X-Hogehoge: hogege
X-Piyopiyo: piyoyo

このことは下記のコメントで見て知った。


なお、同じことをコマンドプロンプト (Windows) でやるのは面倒な模様。改行コードをコマンドライン引数で渡すのが難しいようだ。

以上!