做了个 chrome 插件实现 B 站视频截图功能,直接从当前视频帧无损复制 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
keepRun
V2EX    程序员

做了个 chrome 插件实现 B 站视频截图功能,直接从当前视频帧无损复制

  •  
  •   keepRun 2023-09-27 12:20:03 +08:00 1574 次点击
    这是一个创建于 744 天前的主题,其中的信息可能已经有所发展或是发生改变。

    起因是看 B 站视频想截个图很麻烦,右下角暂停按钮无法去除,于是写了一行代码把暂停按钮隐藏,帖子在这分享一行代码隐藏 B 站暂停时的按钮,解决截屏时按钮遮挡问题

    不得不说 v 站藏龙卧虎,经提醒,发现可以通过 canvas 获取视频帧来截取图片,于是写了如下代码完美获取视频帧。

     var v = document.querySelector(".bpx-player-video-wrap video"); var myCanvas = new OffscreenCanvas(v.videoWidth,v.videoHeight); var ctx = myCanvas.getContext('2d'); ctx.drawImage(v, 0, 0, v.videoWidth, v.videoHeight) myCanvas.convertToBlob().then(blob => { const fileName = 'screenshot.png'; const d = document.createElement('a') d.href = window.URL.createObjectURL(blob) d.download = fileName d.style.display = 'none' document.body.appendChild(d) d.click() document.body.removeChild(d) window.URL.revokeObjectURL(d.href) }) 

    用法:f12 打开 console 把这段代码粘贴回车执行即可下载视频帧。

    完成后又稍作改进,把这段代码转成 chrome 插件,可以通过右键来下载视频帧,也可以用快捷键下载。 https://github.com/Vant1032/BilibiliVideoCaptureImage

    各位可以去体验下这款插件,厚脸皮要个 star ,有什么问题也可以通过 issue 反馈。

    以下是我使用这款插件对 B 站不同分辨率视频在 HEVC 编码下最终插件保存的图片大小测试:

    分辨率 png
    4k 7MB
    1080p 高码率 2.8MB
    1080p 2.1MB
    720p 700KB

    对于用 1080p 、2k 显示器的人,看 4k 视频截屏无法截出 4k 的分辨率,受到了显示器分辨率限制,而使用我的插件就可以完美截取视频原始的分辨率的图片,画质党福音。

    另一方面开发过程中我就在想,既然可以这样,那将所有视频网站内容的视频保存下来也是类似的原理,我看到浏览器本身提供了视频编码的 api ,这样的话可以把那些视频帧再重新合成视频,视频下载器应该就是类似的道理,不过这样就涉及到版权问题了。

    8 条回复    2023-09-27 14:26:09 +08:00
    Shatyuka
        1
    Shatyuka  
       2023-09-27 13:07:13 +08:00
    yulon
        2
    yulon  
       2023-09-27 13:17:18 +08:00
    啊这,video 标签刚出来就有好多了,但是 Canvas 会有跨域问题,有些视频截不到
    keepRun
        3
    keepRun  
    OP
       2023-09-27 13:22:28 +08:00 via Android
    @yulon 啥问题,不太理解
    fdghjk
        4
    fdghjk  
       2023-09-27 13:24:26 +08:00
    泰酷辣 考虑多增加一些个网站吗
    keepRun
        5
    keepRun  
    OP
       2023-09-27 13:37:01 +08:00 via Android
    @fdghjk 哪些网站?要添加应该比较简单,通过选择器找到对应的 video 标签
    okakuyang
        6
    okakuyang  
       2023-09-27 13:45:34 +08:00 via iPhone
    新的 chrome 自带了这个功能 从视频上右键有复制图片
    jiyan5
        7
    jiyan5  
       2023-09-27 14:00:17 +08:00   1
    右键,右键,复制视频帧
    keepRun
        8
    keepRun  
    OP
       2023-09-27 14:26:09 +08:00 via Android
    @jiyan5 chrome 自带的复制功能以后不一定有效,可能 B 站后续不让这样,另一方面产品使用体验略有不同
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2349 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 15:48 PVG 23:48 LAX 08:48 JFK 11:48
    Do have faith in what you're doing.
    ubao 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