【问题标题】:set useragent in ffmpeg在ffmpeg中设置用户代理
【发布时间】:2020-09-15 10:17:10
【问题描述】:

如何在 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)'"

【问题讨论】:

    标签: ffmpeg pyffmpeg


    【解决方案1】:

    首先,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/-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
    

    【讨论】:

    • 添加-headers "User-Agent: My User Agent" 之后 -i 参数不会改变用户代理。可以肯定的是,添加-headers 参数作为第一个参数
    【解决方案2】:
    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
    

    【讨论】:

    • 你应该解释你的答案。
    【解决方案3】:
    -headers 'User-Agent: "FMLE/3.0 (compatible; FMSc/1.0)"'
    

    User agent - Wikipedia

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

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

    How to enable cookies in ffmpeg HLS

    【讨论】:

      【解决方案4】:

      这对我有用:

      -user-agent "Mozilla/5.0 (compatible; Companybot/1.0; +http://www.Thecompany.com)"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-06-01
        • 1970-01-01
        • 2012-05-02
        • 2020-08-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多