6

如何在 ffmpeg 中设置用户代理?

我在媒体服务器中实现了 SWF 验证,并允许一些用户代理不检查 SWF。但问题是,我无法在 FFMPEG 中设置用户代理。因为我需要使用 ffmpeg 将我的一个低比特率流重新发布到核心服务器。

FFMPEG Version : ffmpeg version 1.2.6-7:1.2.6-1~trusty1

SWF verification enabled in 172.20.1.10 server

尝试过的格式:

ffmpeg -re -i "rtmp://10.11.12.13/live/mystreams -c copy -f flv  "rtmp://172.20.1.10/live/testnew -headers "UserAgent: 'FMLE/3.0 (compatible; FMSc/1.0)'"

ffmpeg -re -i "rtmp://10.11.12.13/live/mystreams -c copy -f flv  "rtmp://172.20.1.10/live/testnew -user_agent 'FMLE/3.0 (compatible; FMSc/1.0)'"

ffmpeg -re -i "rtmp://10.11.12.13/live/mystreams -c copy -f flv  "rtmp://172.20.1.10/live/testnew -user-agent 'FMLE/3.0 (compatible; FMSc/1.0)'"
4

4 回答 4

9

首先,OP 尝试使用了断引号:

"... "rtmp://172.20.1.10/live/testnew -user_agent 'FMLE/3.0 (compatible; FMSc/1.0)'"

-user-agent选项已弃用,它将显示警告:

$ ffmpeg  -user-agent "using -user-agent UA"  -i 'https://example.com' -v trace |& grep -i user-agent 
Reading option '-user-agent' ... matched as AVOption 'user-agent' with argument 'using -user_agent UA'.
[https @ 0x55df7b9dc320] the user-agent option is deprecated, please use user_agent option
User-Agent: using -user-agent UA

您需要-user_agent(即下划线_,而不是破折号-):

$ ffmpeg  -user_agent "using -user_agent UA"  -i 'https://example.com' -v trace |& grep -i user-agent 
User-Agent: using -user_agent UA

如果您添加-headers 'User-Agent: ',它将覆盖-user_agent

$ ffmpeg -user_agent "using -user_agent UA" -headers 'User-Agent: using -headers UA'  -i 'https://example.com' -v trace |& grep -i user-agent 
Reading option '-headers' ... matched as AVOption 'headers' with argument 'User-Agent: using -headers UA'.
User-Agent: using -headers UA

但是,如果您在尝试添加多个标头时语法错误,-headers则将无法覆盖并仍使用默认值Lavf/or -user_agent

$ ffmpeg  -user_agent "using -user_agent UA" -headers 'User-Agent: using -headers UA' -headers 'Accept: */*' -i 'https://example.com' -v trace |& grep -i user-agent 
Reading option '-headers' ... matched as AVOption 'headers' with argument 'User-Agent: using -headers UA'.
User-Agent: using -user_agent UA

仅当您在多个标题(即单个-headers+ \r\n)上使用正确的语法时,-headers 'User-Agent: 才能覆盖默认值Lavf/-user_agent

$ ffmpeg  -user_agent "using -user_agent UA" -headers 'User-Agent: using -headers UA'$'\r\n''Accept: */*' -i 'https://example.com' -v trace |& grep -i user-agent 
Reading option '-headers' ... matched as AVOption 'headers' with argument 'User-Agent: using -headers UA
User-Agent: using -headers UA
于 2020-01-09T04:22:41.693 回答
6
ffmpeg -user-agent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3554.0 Safari/537.36" -headers "origin: https://glive.gaodun.com" -headers "referer: https://glive.gaodun.com/space.html?isV"  -i https://vod.gaodun.com/13p9Wv580v1a!!fs/SD/1.m3u8 -c copy demo.mp4
于 2019-01-12T13:45:20.223 回答
0

这对我有用:

-user-agent "Mozilla/5.0 (compatible; Companybot/1.0; +http://www.Thecompany.com)"
于 2016-12-27T12:36:12.953 回答
0
-headers 'User-Agent: "FMLE/3.0 (compatible; FMSc/1.0)"'

用户代理 - 维基百科

此外,您可能需要包括 CRLF:

-headers $'User-Agent: "FMLE/3.0 (compatible; FMSc/1.0)"\r\n'

如何在 ffmpeg HLS 中启用 cookie

于 2015-12-30T17:03:11.890 回答