ffmpeg 无法下载 content-type 为 image 的 m3u8,有什么参数可以绕过并下载? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
estk
V2EX    程序员

ffmpeg 无法下载 content-type 为 image 的 m3u8,有什么参数可以绕过并下载?

  •  
  •   estk 2022 年 12 月 20 日 3514 次点击
    这是一个创建于 1167 天前的主题,其中的信息可能已经有所发展或是发生改变。
    起因:某个视频网站把切片以 image 文件的形式放别人图床上,运行 ffmpeg -i m3u8_url -c copy dl.mp4 无法下载,猜测是 ffmpeg 检测到 content-type 为 image 就不下载了

    m3u8 文件 URL Base64: aHR0cHM6Ly9jMi5tb25pZGFpLmNvbS8yMDIyMTEyOC9rTTlRakQwcS9pbmRleC5tM3U4
    curl m3u8_url 可以看到切片文件是.png 结尾

    但是在他们网页可以正常播放,网页 URL Base64: aHR0cHM6Ly9kaWFueWkubmcvcGFseS05VWpxQ1MtMS0xLmh0bWw=
    可能是 html video 标签不检测切片的 content-type 吧?

    发这个帖子的目的不是为了下载这个视频,想讨论一下 ffmpeg 遇到这种 m3u8 有什么什么参数可以让它顺利下载?
    15 条回复    2023-01-04 13:06:44 +08:00
    ysc3839
        1
    ysc3839  
       2022 年 12 月 21 日 via Android
    改代码?
    icoming
        2
    icoming  
       2022 年 12 月 21 日
    你访问那个图片 URL 看看,提示找不到。
    mikewang
        3
    mikewang  
       2022 年 12 月 21 日   1
    链接已经失效了。换了一集试了下,这个视频站非常的狡猾,在 TS 片段前加上了 PNG 头部,迷惑图床,从而利用 CDN 的流量。
    显然 ffmpeg 是被骗了,无法解码;而 Chromium 没有被骗,所以浏览器可以正常播放。

    这个时候,需要手动下载 m3u8 的内容,然后向 FFmpeg 指定格式即可。

    wget https://....../../index.m3u8
    grep '.png' index.m3u8 | xargs curl > video.ts
    ffmpeg -f mpegts -i video.ts -codec copy video.mkv
    mikewang
        4
    mikewang  
       2022 年 12 月 21 日
    estk
        5
    estk  
    OP
       2022 年 12 月 21 日 via iPhone
    @mikewang #3
    所以只能手动下载所有切片,没有 ffmpeg 的其它参数可以让它忽略这个 content-type 直接下载?
    jiulang
        6
    jiulang  
       2022 年 12 月 21 日
    反向代理来修改
    jifengg
        7
    jifengg  
       2022 年 12 月 21 日   3
    我碰到过一些网站是这么搞的,但是,他不仅仅是只动了 content-type ,他文件存储的时候,就是在前面加了固定字节的 png 内容,所以 ffmpeg 去解码的时候会认为这是一个 png 图片。网页可以正常播放应该是内嵌的播放器做了处理。

    我以前写过一个下载的脚本,用的笨方法就是自己解析 m3u8 文件,下载里面的文件,截掉前面的 n 个字节,再用 ffmpeg 合并。
    Administrat0r
        8
    Administrat0r  
       2022 年 12 月 21 日   2
    可以试试我蹭的这个项目 也是解决 png 的问题 https://github.com/orestonce/m3u8d
    novolunt
        9
    novolunt  
       2022 年 12 月 21 日 via iPhone   1
    反向代理图床,改请求头。另外 视频存什么操作
    jeesk
        10
    jeesk  
       2022 年 12 月 21 日
    简单的就是楼上的。否则直接去修改 ffmpeg 源码处理 reponse 的部分 。
    mikewang
        11
    mikewang  
       2022 年 12 月 22 日
    @estk #5 不能,FFmpeg 对于 m3u8 要使用 HLS 这个 demuxer ,而内部 segment 的 demuxer 则是自动判断的,没有提供指定 demuxer 的方法。如果一定要使用 ffmpeg ,则需要修改源码重新编译了。
    Slurp
        12
    Slurp  
       2022 年 12 月 22 日
    PR is welcome.
    estk
        13
    estk  
    OP
       2022 年 12 月 22 日
    @Slurp #12
    官方会决绝说:如果用户传个.exe 是否也需要下载?
    Kobayashi
        14
    Kobayashi  
       2022 年 12 月 22 日 via Android
    给个地址?
    AngryFootHair
        15
    AngryFootHair  
       2023 年 1 月 4 日
    @mikewang @estk @jifengg

    刚刚试了下,123llq.com 123 浏览器 打开 网页 URL Base64: aHR0cHM6Ly9kaWFueWkubmcvcGFseS05VWpxQ1MtMS0xLmh0bWw= 这个页面,成功嗅探到了 m3u8 资源,点击就可以下载了。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3408 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 35ms UTC 11:22 PVG 19:22 LAX 03:22 JFK 06:22
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86