6

How to set useragent in ffmpeg ?.

I implemented SWF verification in Media server and allowed some user agents for not to check SWF. But Problem is, I'm unable to set useragent in FFMPEG. As I need to repubish one of my stream with low bit rate to core server using ffmpeg.

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

SWF verification enabled in 172.20.1.10 server

Tried formats :

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)'"
Emii Khaos
  • 9,983
  • 3
  • 34
  • 57
KMG
  • 889
  • 2
  • 14
  • 36

4 Answers4

13

First thing first, the OP attempts has broken quotes:

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

The -user-agent option is deprecated, it will shows warning:

$ 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

You need -user_agent (i.e. underscore _, not dash -):

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

If you added -headers 'User-Agent: ', it will override -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

But if your syntax is wrong when trying to add multiple headers, then -headers will not able to override and still using default 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

Only if you using correct syntax on multiple headers (i.e. single -headers + \r\n), then -headers 'User-Agent: will able to override default Lavf/ or -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
林果皞
  • 7,539
  • 3
  • 55
  • 70
  • 3
    Adding `-headers "User-Agent: My User Agent"` **after** the `-i` param will not change the user agent. To be sure, add the `-headers` parameter **as the first argument**! – Nioooooo Jan 27 '22 at 13:56
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
too
  • 61
  • 1
  • 2
0
-headers 'User-Agent: "FMLE/3.0 (compatible; FMSc/1.0)"'

User agent - Wikipedia

Also, you might need to include CRLF:

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

How to enable cookies in ffmpeg HLS

0

this worked for me:

-user-agent "Mozilla/5.0 (compatible; Companybot/1.0; +http://www.Thecompany.com)"
Robocide
  • 6,353
  • 4
  • 37
  • 41