在 ffmpeg 中设置用户代理

KMG*_*KMG 5 ffmpeg pyffmpeg

如何在 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
Run Code Online (Sandbox Code Playgroud)

尝试过的格式:

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)'"
Run Code Online (Sandbox Code Playgroud)

小智 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
Run Code Online (Sandbox Code Playgroud)

  • 你应该解释你的答案。 (2认同)

林果皞*_*林果皞 5

首先,OP尝试破坏了引号:

"... "rtmp://172.20.1.10/live/testnew -user_agent 'FMLE/3.0 (compatible; FMSc/1.0)'"
Run Code Online (Sandbox Code Playgroud)

-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
Run Code Online (Sandbox Code Playgroud)

你需要-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
Run Code Online (Sandbox Code Playgroud)

如果添加-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
Run Code Online (Sandbox Code Playgroud)

但是,如果您在尝试添加多个标头时语法错误,-headers则将无法覆盖并仍然使用默认Lavf/-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
Run Code Online (Sandbox Code Playgroud)

仅当您在多个标头(即单个-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
Run Code Online (Sandbox Code Playgroud)

  • 在 `-i` 参数之后添加 `-headers "User-Agent: My User Agent"` **不会更改用户代理。可以肯定的是,添加“-headers”参数**作为第一个参数**! (3认同)

小智 0

-headers 'User-Agent: "FMLE/3.0 (compatible; FMSc/1.0)"'
Run Code Online (Sandbox Code Playgroud)

用户代理 - 维基百科

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

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

如何在 ffmpeg HLS 中启用 cookie