• 消息
  • 动态
  • 收藏
  • 历史
  • 创作中心
  • 投稿
  • 对没有回放的ins live 实时抓流的方法
    黄师傅甜品屋
    编辑于 2024年02月15日 04:21

    yt-dlp和streamlink目前都没有对应实时抓流Instagram live stream,pyinstalive又停止维护了(其实还没试),这几天自己开ins直播研究了一下,整出了个相对简单的方法。

    至于为什么要挑战live抓流,因为有人开ins live不留回放(悲),但大多数人都是会贴心地留回放的,基本上要应对的只有这种不留档的情况。

    准备三大件:ffmpeg、N_m3u8DL-RE、浏览器插件猫抓

    N_m3u8DL-RE要配合ffmpeg工作,ffmpeg记得加入系统变量或者和N_m3u8DL-RE放在同一文件夹下 或者可以加一行代码自定义ffmpeg的位置,下面有提

    首先等对方开播,打开https://www.instagram.com/coco_hayashi.official/live/,点击播放开播,然后查看猫抓,下载MPD文件

    猫抓的DASH部分文档:https://o2bmm.gitbook.io/cat-catch/docs/mpdparse

    选择mpd文件,点击这里解析

    右键复制这段链接

    在N_m3u8DL-RE所在的文件夹内打开CMD输入:

    N_m3u8DL-RE --save-name <保存文件名> --save-dir <你的保存路径> --download-retry-count 5 --auto-select --custom-proxy http://127.0.0.1:7890 --thread-count 16 --check-segments-count -H "referer: https://www.instagram.com/" --live-pipe-mux "<url>"

    命令内容解说:

    --save-name <保存文件名>
    --save-dir <你的保存路径>
    --custom-proxy http://127.0.0.1:7890 # 你的代理端口
    "<url>" # 输入刚才复制的mpd地址 url格式比较复杂,建议前后加上英文双引号

    不过我还挺意外的,ins直播这块访问MPD和视频切片本身不需要Cookie,只要加一下Referer就可以了。

    还有就是如果ffmpeg所在的路径没有加入系统变量,可以加入下面那一行

    --ffmpeg-binary-path <PATH> # 自定义ffmpeg文件的路径

    然而这里还没有结束,N_m3u8DL-RE在下载DASH直播这里有点小问题,ins直播流停止之后,N_m3u8DL-RE不会进入后续转码处理,所以这里我加入了「--live-pipe-mux」选项,让N_m3u8DL-RE在下载时可以实时把内容输入进<保存文件名>.ts文件(N_m3u8DL-RE文档里的描述:录制直播并开启实时合并时通过管道+ffmpeg实时混流到TS文件)

    当推流结束,N_m3u8DL-RE的下载流程卡住的时候,使用快捷键Ctrl+C强行关闭,然后查看<你的保存路径>下的文件夹,会有名称为<保存文件名> 的文件夹和<保存文件名> .ts文件,那个ts文件就是已经合并好的ins直播流文件了。这时候已经可以把缓存文件夹删掉了

    配合猫抓设置,一键复制下载命令

    打开猫抓的设置,找到这里:

    在DASH mpd文件这里输入:

    N_m3u8DL-RE --save-name "${title}_${now}" --custom-proxy http://127.0.0.1:7890 #记得换成你自己的代理端口 --download-retry-count 5 --auto-select --thread-count 16 --check-segments-count --live-pipe-mux ${referer|exists:'--header "referer: *"'} "${url}"

    以后在ins直播界面点击这里就可以直接复制了:

    复制完之后把这个往命令行界面里一丢(和minyami的情况有点类似)就OK了

    ONE MORE THING

    但这里还有个方法,就是手动合并缓存文件,使用这种方法的话可以把--live-pipe-mux给去掉,然后打开缓存文件夹,差不多是这么个格式:

    上面两个分别是音频和视频的文件夹

    音频和视频的文件夹差不多是这个格式:

    分别打开音频和视频的文件夹,按shift+文件夹空白处右键打开cmd,输入

    copy /b _init.mp4+*.m4s output.mp4

    这行内容对两个文件夹的效果是一样的

    这时候如果你点开output.mp4的话,虽然内容确实是合并了,但是是只有_init.mp4的2秒内容的,但别急,打开ffmepg把两个output.mp4复制流并合并:

    ffmpeg -i <音频mp4文件路径> -i <视频mp4文件路径> -c copy ins_stream.mp4

    这时候出来的视频就是完整内容长度的了。

    评论 13
    赞与转发