V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
fatDex
V2EX  ›  程序员

请教一个视频网站的设计方案

  •  
  •   fatDex · 20 小时 2 分钟前 · 594 次点击

    需求大致如下:

    1. 网站用于上传一个大小至少为 1GB 的视频文件;
    2. 上传成功后,需要能够在网站上逐帧回放这个视频,必须能精确到每一帧;
    3. 定位到某一帧后,可以在这一帧的画面里面绘制直线或者多边形用于标注;
    4. 标注完成后,再把视频和标注的数据统一发给另外一个服务器的 API 用于进一步解析;
    5. 解析后的结果返回到网站,提供在线查看与下载;
    6. 用户量暂时不大,同一时间最多不到 10 个人访问。

    这里面最大的难点可能就在前三项了,自己没有做过视频相关的产品,感觉有很多坑的样子。也问过 gpt ,但还是有些迷茫。想请教下各位,有没有什么比较推荐的解决方案呢,最好是成本低一些的,十分感谢!

    16 条回复    2025-01-21 11:42:56 +08:00
    humbass
        1
    humbass  
       19 小时 48 分钟前   ❤️ 1
    没啥难度,但是工作量还是有的

    帧操作肯定有一个定制版的滑动条,用来定位帧啥的;
    其次是多边形标注;
    至于说第 1 条,做个分片的断点续传
    linshuizhaoying
        2
    linshuizhaoying  
       19 小时 40 分钟前   ❤️ 1
    标注简单 canvas 定位 画图
    gaobh
        3
    gaobh  
       19 小时 34 分钟前 via iPhone   ❤️ 1
    你应该找视频解析编辑框架,比如这个 https://juejin.cn/post/7380702373570494490
    dejavuwind
        4
    dejavuwind  
       19 小时 31 分钟前   ❤️ 1
    第一条要考虑实际使用者的网络环境吧
    内网速度够快的话应该问题不大 公网的话是不是要考虑下断点续传?
    2 服务器拿到视频之后做切分转格式按需给前端

    标记数据看起来跟单个帧是绑定的 这块触及到知识盲区了 等下大佬们的回答
    fatDex
        5
    fatDex  
    OP
       19 小时 22 分钟前
    @dejavuwind 是公网环境,所以目前看下来肯定得做断点续传了。标记的话我觉得只需要记录下帧号以及在这个帧下的几个标记的位置就行了,这块并不需要对原始的视频数据做任何修改,所以应该相对容易实现。视频逐帧解析这块工作我目前打算放在前端,类似于用 ffmpeg.js 这种东西,但不知道前端做起来效率怎么样。
    fatDex
        6
    fatDex  
    OP
       19 小时 22 分钟前
    @gaobh 啊,这个看起来挺有启发的,我研究一下,感谢~
    fatDex
        7
    fatDex  
    OP
       19 小时 21 分钟前
    @linshuizhaoying 对,我目前也是这么想。
    fatDex
        8
    fatDex  
    OP
       19 小时 16 分钟前
    @humbass 没错,得有一个专门的进度条。
    iamzuoxinyu
        9
    iamzuoxinyu  
       18 小时 57 分钟前
    前端用 ffmpeg+wasm 挺合适的。wasm 虽然性能有点捉急,但你的场景似乎不用考虑 25+的帧率;其它的就是做好解码缓存就行,有 B 帧处理起来稍微麻烦一些。
    iamzuoxinyu
        10
    iamzuoxinyu  
       18 小时 54 分钟前   ❤️ 1
    另外 webcodecs 看主流版本浏览器也支持了,可以优先考虑这个。
    fatDex
        11
    fatDex  
    OP
       14 小时 15 分钟前
    @iamzuoxinyu 好的,我研究下,感谢~
    fatDex
        12
    fatDex  
    OP
       14 小时 13 分钟前
    @iamzuoxinyu 感觉思路一下子打开了
    wnpllrzodiac
        13
    wnpllrzodiac  
       13 小时 48 分钟前 via Android
    有个本地编辑视频的开源项目。electron 做的,逐桢编辑
    netnr
        14
    netnr  
       3 小时 55 分钟前 via Android   ❤️ 1
    用 Uppy.js TUS 协议上传

    前端处理视频要考虑超大视频文件是否支持,
    稳妥还是后台处理,拿到总帧数,然后弄个类似分页的组件,动态加载对应帧画面
    fatDex
        15
    fatDex  
    OP
       1 小时 30 分钟前
    @netnr 收到~ 关于前端处理的问题,昨天收到大家的建议之后我发现也可以考虑用 webcodecs 这样子的前端方案去先在本地处理好视频,再做后续调用 API 的工作,这样子的好处是可以少上传一次视频,并且也不需要专门用来存视频的服务器了,不过我自己试了下一些基于 webcodecs 的几个开源项目,包括 B 站的 WebAV 以及 3 楼兄弟推荐的 fly-cut ,都遇到了一个问题,就是如果视频有几百兆的话,处理起来都很慢,甚至看起来页面跟完全没反应一样,要等好久,我现在还不确定究竟是什么问题,但这可能就是你提到的超大视频文件支持的问题?考虑到我这边的需求,视频普通都是大于 1 GB 甚至几十 GB 的,或许真的不用考虑前端处理了。
    skallz
        16
    skallz  
       22 分钟前
    前端处理的话,web 的话大视频基本不太可能,内存捉急,electron 可以考虑下
    @fatDex
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4486 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 04:05 · PVG 12:05 · LAX 20:05 · JFK 23:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.