パイプ入力の FFmpeg ではダウンローダーがプロキシを所有する
FFmpeg がバイトのパイプだけを受け取るときは、メディアを取得するプログラム側にプロキシを設定します。
FFmpeg が pipe:0 を読むとき、その入力プロトコルはパイプです。メディアを取得したのが curl なら、ネットワーク接続を開いたのは curl であり、プロキシ設定を受け取る必要があるのも curl です。
連続した MPEG-TS 入力の場合、Bash のパイプラインは次のように書けます。
set -o pipefail
curl --fail --silent --show-error \
--proxy http://proxy.example.net:8080 --noproxy "" \
'https://media.example.net/stream.ts' |
ffmpeg -i pipe:0 -c copy output.ts
許可された公開メディアのダウンロードでは、HTTP プロキシ一覧が curl のプロキシ URL の候補を提供します。バイパス一覧を空にすると、この curl リクエストは選択した仲介者を使います。pipefail は上流のダウンロード失敗をパイプラインの終了ステータスにも保持します。
FFmpeg の http_proxy オプションは、対応している HTTP ネットワーク入力に属します。あるプログラムの出力がパイプで FFmpeg に渡されているというだけの理由で、その別のプログラムを設定することはできません。
ダウンロードを FFmpeg が担う場合は、メディアの URL を直接渡し、選択したプロトコルとビルドが対応するオプションを使ってください。HTTP 入力の場合は、FFmpeg のプロキシオプションをその入力より前に置きます。パイプには通常のファイルシークもないため、URL とパイプ入力の間で切り替えるときは既存のワークフローの形式要件を維持してください。