V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
magic3584
V2EX  ›  FFmpeg

请教大佬们,在线网站抓到 m3u8 能播放,但是用 ffmpeg 下载的时候 “403 forbidden” 或者 “Output file #0 does not contain any stream” 应该怎么解决

  •  
  •   magic3584 · 2023-01-03 10:24:45 +08:00 · 6119 次点击
    这是一个创建于 694 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有的网站能正常下,有的就会报错。

    使用命令如下: ffmpeg -i url -c copy output.mp4

    第 1 条附言  ·  2023-01-03 13:47:41 +08:00
    还有个问题就是,有的网站我把调试打开后,直接进入断点无法正常操作。
    不了解前端,不知道怎么做可以跳过这个
    36 条回复    2023-01-04 17:32:09 +08:00
    ysc3839
        1
    ysc3839  
       2023-01-03 10:33:57 +08:00
    需要 cookie 等额外信息吧
    singerll
        2
    singerll  
       2023-01-03 10:34:57 +08:00   ❤️ 2
    我只想问,你说的在线 m3u8 网站是 91 吗
    lakehylia
        3
    lakehylia  
       2023-01-03 10:38:42 +08:00
    用网页音视频资源下载插件啊,需要 cookie 的
    mobaijun
        4
    mobaijun  
       2023-01-03 10:40:06 +08:00
    @singerll 哈哈哈
    estk
        5
    estk  
       2023-01-03 10:45:49 +08:00 via iPhone
    @singerll
    也可能是 hub 或者 5278
    magic3584
        6
    magic3584  
    OP
       2023-01-03 10:52:22 +08:00
    @ysc3839 #1
    @lakehylia #3
    用了 --header $'Cookie:' 然后把浏览器里的东西拷贝进去也不行,可能我哪里没弄对
    magic3584
        7
    magic3584  
    OP
       2023-01-03 10:54:28 +08:00
    @singerll #2
    @mobaijun #4
    @estk #5
    没,看的剧集。不讨论盗版,求大佬专注于技术问题。用的 mac
    fqzz
        8
    fqzz  
       2023-01-03 11:55:52 +08:00   ❤️ 2
    可能有三个原因:
    1. 没有拿到真正的 ts 文件,比如 cookie
    2. m3u8 本身支持加密,可以搜下 EXT-X-KEY
    3. 有些网站会给每个 ts 套壳,比如加上 png header ,用 file 命令看他是个 png 文件
    bxb100
        9
    bxb100  
       2023-01-03 11:58:37 +08:00   ❤️ 1
    我用这个 N_m3u8DL-RE
    gam2046
        10
    gam2046  
       2023-01-03 12:33:45 +08:00
    @fqzz #8 第三种是标准行为嘛,因为我遇到过一些网站是这样的,我自己把 PNG 头去掉了。但是我不确定他自己的 web 播放器是不是也是这么做的,还是说这是 M3U 的标准行为,可以自己把这个头去掉?
    learningman
        11
    learningman  
       2023-01-03 13:38:15 +08:00
    @gam2046 #10
    他们的播放器是这么做的
    不是标准行为,他们这么干是为了蹭公共图床
    0xsui
        12
    0xsui  
       2023-01-03 13:39:49 +08:00
    去 52pojie 找 m3u8 的下载工具下载
    magic3584
        13
    magic3584  
    OP
       2023-01-03 13:42:37 +08:00
    @fqzz #8
    感谢大佬。我是在剧集播放的时候,只显示 m3u8 类型的文件,然后拷贝的 url 地址去下载。有个网站之前是这种方式可以下载,后来就 403 forbidden 了,折腾了没弄好,就又转到别的网站去下载了 [笑哭]
    magic3584
        14
    magic3584  
    OP
       2023-01-03 13:44:34 +08:00
    @fqzz #8

    @gam2046 #10
    另外想请教下,我把 m3u8 内容保存到本地,然后去用相同命令去下载,好像不行。。。
    tmtstudio
        15
    tmtstudio  
       2023-01-03 13:46:08 +08:00
    用猫抓,chrome 应用商店就有
    churchmice
        16
    churchmice  
       2023-01-03 13:53:23 +08:00 via Android
    @singerll 91 有 chrome 插件可以直接下,不过没开 vip 清晰度太差
    sobev
        17
    sobev  
       2023-01-03 13:53:46 +08:00
    控制台调试有个按钮可以停用断点
    snowlyg
        18
    snowlyg  
       2023-01-03 14:05:27 +08:00
    xvideo?
    blankmiss
        19
    blankmiss  
       2023-01-03 14:07:27 +08:00
    token 过期了 有的 m3u8 有 token 时效性的
    blankmiss
        20
    blankmiss  
       2023-01-03 14:07:41 +08:00
    要么可能就是有防盗链
    zapper
        21
    zapper  
       2023-01-03 14:15:20 +08:00
    403 就是状态错乱问题,你得走他那套标准流程,不能直接弄 m3u8 。如果你只是想下点剧集,还是找个 web 插件之类比较好。你先在开发者模式下看看 m3u8 请求头带不带其他参数
    duan602728596
        22
    duan602728596  
       2023-01-03 14:29:34 +08:00 via iPhone
    有可能 m3u8 里面的 ts 文件地址验证了 referrer ,你在命令行设置的 headers 只是在请求 m3u8 文件时添加了 header ,并没有在下载 ts 文件时设置了 header
    magnetar
        23
    magnetar  
       2023-01-03 17:51:07 +08:00
    可以完整看下 m3u8 的请求携带的东西,一般有 cookie 或者 token 校验或者还有恶心的加密
    关闭调试断点:Chrome 控制台的 Source Tab 页点击 Deactivate breakpoints 按钮或者按下 Ctrl + f8
    b821025551b
        24
    b821025551b  
       2023-01-03 18:37:12 +08:00
    直接打开 m3u8 抓里面的分片文件;
    m3u8 保存到本地大概率是不行的,很多时候用的是他们域名下的相对路径,需要你自己替换一下;
    chrome 断点问题有两种解决办法,1 是禁用断点,直接点 source 里面倒数第二个,缺点是会造成死循环,页面过一会就卡死了; 2 是找到带 debugger 的那个函数,console 里把这个函数置空:你找到的那个函数=function(){};
    iamben
        25
    iamben  
       2023-01-03 19:41:37 +08:00 via iPhone
    用 yt-dlp 试试?
    ik
        26
    ik  
       2023-01-03 19:45:23 +08:00 via iPhone
    还有可能在浏览器用了代理访问, 单独请求的时候直连了
    sunwei0325
        27
    sunwei0325  
       2023-01-03 20:35:41 +08:00
    可能是 CDN 设置了 cookie, 比如 aws 的 cloudfront 可以设置 signed cookies
    systemcall
        28
    systemcall  
       2023-01-04 01:11:34 +08:00
    先分析一下请求头,一般的小网站多半是请求头的问题
    遇到难搞的就麻烦了,有些甚至还会检测心跳包的
    wedfds
        29
    wedfds  
       2023-01-04 08:50:52 +08:00
    N_m3u8DL-CLI-SimpleG
    deali
        30
    deali  
       2023-01-04 10:16:04 +08:00
    @bxb100 我也是,这个真不错
    puzzle9
        31
    puzzle9  
       2023-01-04 10:44:27 +08:00
    通常是 m3u8 文件带校验 里面的 ts 没有
    或许你可以尝试把 m3u8 先保存起来 再用命令去下载

    断点那个 浏览器有个跳过断点功能
    magic3584
        32
    magic3584  
    OP
       2023-01-04 11:14:54 +08:00
    @bxb100 #9
    试了下, ffmpeg 403 的连接用这个能下,太 NB 了。
    请问大佬知道这个软件在其中做了什么吗?
    magic3584
        33
    magic3584  
    OP
       2023-01-04 11:15:21 +08:00
    @ik #26
    也不是,我终端也设置 proxy 了
    magic3584
        34
    magic3584  
    OP
       2023-01-04 11:21:06 +08:00
    @puzzle9 #31
    本地的 m3u8 文件怎么去下载呢?搜了下没找到。
    断点那个,我记得之前点了好几个按钮都是不行的
    AngryFootHair
        35
    AngryFootHair  
       2023-01-04 17:23:05 +08:00
    @magic3584 试试 123 浏览器 https://v2ex.com/t/906468
    m8syYID5eaas8hF7
        36
    m8syYID5eaas8hF7  
       2023-01-04 17:32:09 +08:00
    ffmpeg 输入参数里把 cookies 和 headers 加上
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1385 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 17:36 · PVG 01:36 · LAX 09:36 · JFK 12:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.