ffmpeg使用PUT作为输出方式时如何设置自定义HTTP头?
问题原因
该问题不是ffmpeg的已知问题,绝大多数场景下由参数配置顺序和转义错误导致。
ffmpeg的参数有严格的作用域划分,-headers、-method这类属于HTTP输出目标的专属配置参数,必须放在对应输出URL的前面,放在全局参数位置或者输入参数位置都不会生效。
你之前的两种配置写法都存在错误:
- 使用
-http_opts时多嵌套了一层引号,导致参数解析失败,正确的-http_opts写法应为-http_opts "headers=AccessKey: mykey",不需要额外的嵌套引号。 - 直接使用
-headers的语法本身没有问题,失效原因大概率是参数位置放置错误,比如放在了输入文件或编码参数的前面,没有紧跟输出URL。
正确配置示例
完整的命令结构参考如下:
ffmpeg \ # 全局参数 -v trace \ # 输入参数+输入源 -i 你的输入文件/输入流地址 \ # 音视频编码参数(根据自身需求调整) -c:v libx264 -crf 28 -c:a aac -b:a 128k \ # 输出格式参数 -f dash \ # HTTP输出专属参数,必须放在输出URL之前 -method PUT \ -headers "AccessKey: mykey" \ # 最后放置输出地址 https://storage/store/stream.mpd
附加说明
- 如果需要传递多个请求头,用
\r\n分隔不同的头即可,示例:-headers "AccessKey: mykey\r\nContent-Type: application/dash+xml" - 如果使用的ffmpeg版本低于4.0,建议升级到较新的稳定版,旧版本确实存在HTTP头配置不生效的已知兼容问题。
内容的提问来源于stack exchange,提问作者Nikki Heald
相关产品推荐
相关产品推荐

