作 ▸
ffmpeg で複数の headers を指定するにはCRLFで区切らないといけない
ネット見てると ffmpeg に複数の -headers を指定してる記事がちらほらあるのだが……
Ubuntu 20.04ffmpeg 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.aacrequest: 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.aacrequest: 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このことは下記のコメントで見て知った。
video - ffmpeg - How to pass http headers? - Stack Overflow
なお、同じことをコマンドプロンプト (Windows) でやるのは面倒な模様。改行コードをコマンドライン引数で渡すのが難しいようだ。
以上!
キリウ君が読まないノート