首页
学习
活动
专区
圈层
工具
发布

Rust 赋能前端: 视频抽帧

在我们系统中,有一个需求就是视频抽帧。也就是对一个视频资源基于某些特征将其关键帧抽离成图片信息。然后对其进行OCR识别,并且基于关键字标注处理。...我们今天就来讲讲如何使用WebAssembly对视频资源进行抽帧处理。对于OCR部分我们会单开一篇。...技术选择的初衷 其实呢,针对视频抽帧的需求,我们可以不用WebAssembly来处理。直接使用浏览器原生API就可以实现。...然后,我们继续来说另外一个我选择使用Rust+WebAssembly处理视频抽帧的。...能达到抽帧的效果,但是有几点瑕疵。 只有在视频解析完成后,我们才会拿到最后的数据信息,也就是我们页面中有很长的一段空窗期。

67001
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    视频抽帧实践---openCV和decord视频编解码

    背景: 剪辑平台中需要处理大量的视频,对视频内容的理解,离不开对视频的降维操作,一般流程是进行抽帧。...抽帧操作是很多视频处理的第一步,也是基础数据的一步,大量算法模型离不开帧数据的训练,而高质量的视频,它的fps(每秒帧数)很大,这就造成了处理高清视频时,抽帧速度会成为整个视频处理的瓶颈,本文将对比目前主流的两个视频读取库...图片 一.使用opecv 进行抽帧 cap = cv2.VideoCapture(ts_url) fra_num = cap.get(cv2.CAP_PROP_FRAME_COUNT)...if rval: cv2.imwrite(os.path.join(pic_folder, image_name), frame) 二.使用decord进行抽帧...,使用opecv抽帧裁剪保存图片大概需要20mins,而使用decord处理这个过程只需要2mins,基本也是符合官方10倍这个数量级的benchmark.

    5.9K41

    python将视频抽帧的的多种方式

    最近有一个需求是将视频抽取为一个个的帧图片,使用python很方便实现,而且有多种方式;#### 视频转换为帧的三种方式**第一种:使用open-cv** OpenCV是一个基于BSD许可(开源)...开始编码:**具体思路是:使用cv2中的VideoCapture函数加载视频,然后按帧读取,使用read方法;``` vidcap = cv2.VideoCapture(video_path)...success, image = vidcap.read()```read方法返回两个参数,一个是读取结果是否成功,一个是图片帧;读取结果为True,则保存图片帧为图片,需要使用cv2.imwrite方法...```**使用FFmpeg抽帧**FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序;使用ffmpeg命令可以很快的抽取视频帧;python在使用ffmpeg命令时,只需要调用内置库...os;> os.system('ffmpeg -***")使用os.system执行命令行窗口命令;具体抽帧函数,可以参考ffmpeg官网命令;---在抽取视频帧时,有时需要获取指定分辨率的图片,那就需要先裁减原视频

    3.7K21

    Android FFmpeg系列09--抽帧与快速抽帧

    视频抽帧的实现方式是seek+解码的结合,在剪辑软件和播放器中都存在不少应用场景,比如剪辑软件导入视频后展示的封面图、视频时间轴等 (剪映导入演示视频oceans.mp4) 本篇文章基于之前的Demo...工程实现一个抽帧的utils并仿照系统相册展示一个视频缩略图轨道 (系统相册导入演示视频oceans.mp4) 抽帧实现 FFMpegUtils.kt 对外工具类 object FFMpegUtils...,返回待抽帧的pts arr,单位为s */ fun onFetchStart(duration: Double): DoubleArray /**...* 每抽帧一次回调一次 */ fun onProgress(frame: ByteBuffer, timestamps: Double, width:...不同的应用场景有不同的优化思路,针对上面的视频缩略图抽帧的场景,我们的优化方向有两个 缩略图size小,那么可以充分利用缓存; 抽帧的时间戳是可预测的,那么可以利用预解码、多解码器分段解码、seek跳过非参考帧等手段

    2K30

    视频抽帧的全流程GPU异构加速实践

    背景 视频已成为内容和广告的主要媒介形式,但目前的视频内容理解或审核等AI能力,主流依然是先抽帧,再基于图像帧做特征提取和预测。抽帧由于步骤多、计算重,在视频AI推理场景很容易成为性能瓶颈。...因此,有必要使用硬件加速等手段,来对视频抽帧做极致的性能优化。...在腾讯广告的流量中也是如此,视频所占比例逐年快速提升,视频抽帧这里如果出现时耗或吞吐瓶颈(特别是针对高FPS抽帧的情况),很容易影响到后续的特征提取以及模型预测性能,以及整体的GPU利用率。...在当前的广告视频AI推理服务中,抽帧往往占据了其中大部分时耗,因此,视频抽帧的性能对于视频内容理解服务的时耗和整体资源开销,有着举足轻重的地位。...视频抽帧的几个步骤,计算量非常大,传统的CPU方式抽帧往往受限于CPU整体的计算吞吐,很难满足低时延高性能要求。

    7.9K205

    四、小程序如何抽帧

    一、微信小程序抽帧相关API微信小程序抽帧需要用到Camera组件和CameraContext组件,可以参考官网文档:1.1、Camera组件https://developers.weixin.qq.com...四、抽帧的注意事项4.1 抽取的帧图像大小与camera组件大小是不一致的!!!这是微信小程序的官方提示,并未说明具体的原因。...至于导致这个问题的原因,我们认为是抽帧相接口,需要根据相机支持的分辨率,匹配相应的视频格式,进行视频流编码后返回给抽帧接口。4.2 全屏适配的问题。...我们建议在实际场景应用中,特别是要开启视频骨骼图的场景,camera及骨骼图canvas保持与帧大小的同比绽放。所以如果要使用全屏,需要自己做适配。...4.3 抽帧参数选择建议将frame-size设为small,resolution设为high,抽帧FPS设为12即可满足大部分场景应用。下篇我们将为您介绍如何进行人体识别,敬请期待...

    60110

    视频数据处理方法!关于开源软件FFmpeg视频抽帧的学习

    文本将讲解视频抽帧的几种方法,具体包括以下几种抽帧方式: 抽取视频关键帧(IPB帧) 抽取视频场景转换帧 按照时间进行均匀抽帧 抽取制定时间的视频帧 在进行讲解具体的抽帧方式之前,我不得不介绍下FFmpeg...抽取视频关键帧(IPB帧) 视频关键帧(Video Keyframes)是用于视频压缩和视频编解码的帧,视频关键帧是包含了完整信息的帧,其他的非关键帧将会使用与关键帧的差值进行压缩。...视频帧具体可以分为IPB帧三种: I帧表示关键帧,是最完整的帧画面,一般视频封面都选择I帧; P帧单预测帧,利用之前的I帧或P帧,采用运动预测的方式进行帧间预测编码; B帧双向预测帧,利用双向帧进行预测编码...在视频检索和视频分类任务中一般都借助`I帧`来完成,在一个时长60s的视频中,可以抽取得到16个I帧、84个P帧和184个B,I帧数量少包含的信息却是最多的。...均匀抽帧 # -r 指定抽取的帧率,即从视频中每秒钟抽取图片的数量。1代表每秒抽取一帧。

    4.6K20

    视频抽帧完全指南:使用PowerShell批量提取与优化图片序列

    前言:什么是抽帧?为什么需要抽帧?抽帧(Frame Extraction)是指从视频文件中按一定间隔提取静态图片的过程。...这在很多场景下都非常有用: 视频剪辑预览:快速浏览视频关键画面 机器学习:为AI训练准备图像数据 视频分析:分析镜头变化、运动轨迹 存储优化:用关键帧代表整个视频内容 艺术创作:将视频转化为序列图片进行二次创作本文将教你如何使用...(用于从视频直接抽帧)方案一:基础抽帧与压缩脚本完整代码# 抽帧压缩大师 v1.0# 功能:智能保留25%图片 + 画质压缩param( [string]$FolderPath = "C:\Your...FFmpeg# Windows使用choco安装choco install ffmpeg# 或手动下载添加到PATH直接从视频抽帧function Extract-FramesFromVideo {...# 监控视频通常帧率较高,需要大幅抽帧.

    45010

    性能测试-Jmeter Xhub抽帧压测

    前段时间做了抽帧的一个项目,现在想验证下对同一时间段的视频文件进行抽帧指令下发压测,看抽帧结果是否符合预期结果 1、准备环境 >token---当前token的值有效时长为2h >新建btime、etime...>jmeter压测工具 >接口文档(包含请求方式、请求接口、请求格式和返回值等数据) 2、压测 >打开jmeter工具,新建线程组,改名为xhub抽帧压测 ? >新增HTTP请求 ?...a.改名为:测试环境数据采集 b.输入请求协议和IP(即接口地址) c.输入请求方法和请求路径(请求路径中需加上申请的token值) d.在消息体数据中写抽帧指令的请求格式 >添加HTTP信息头管理...CSV数据文件设置并更改名为btime、etime、seqid >添加聚合报告、查看结果树等 3、结果 由于是在家验证,token值已失效,故这边结果无法生成显示 >通过压测结果,符合当前需求,没有出现花帧、...漏帧、水印丢失情况

    62630

    编写批处理文件,调用ffmpeg抽帧

    有需求如下: 一个文件目录下有多个视频,需要对每个视频进行抽帧,并保存到图片文件夹内; 需求分析: 对视频抽帧可以使用ffmpeg,遍历文件目录可以使用批处理; 功能实现: 编写批处理文件,遍历文件夹下所有视频文件...,然后对每个视频调用ffmpeg抽帧; 遍历文件夹下所有mp4文件:使用for循环set src_dir=J:\Download\post for %%a in (%src_dir%\*.mp4) do...调用ffmpeg抽帧ffmpeg -i "%%a" -r 5 -vf scale=-1:960 "%srcdir%/png/!COUNT!...创建文件夹 echo '开始抽帧' rem echo ffmpeg -i "%%a" -r 5 -vf scale=-1:960 "%src_dir%/png/!...而echo off命令则表示关闭其他所有命令(不包括本身这条命令)的回显,@的作用就是关闭紧跟其后的一条命令的回显; 抽帧处理的图片: 图片 发现一个问题: 原视频大小时500k,而抽帧出来后,每个图片大概有

    1.3K40

    音频帧、视频帧及其同步

    今天介绍下音频帧、视频帧的主要参数和分析方法,以及音视频的同步等,主要内容如下: 音频帧 视频帧 PTS与DTS 音视频同步 音频帧 音频帧的概念没有视频帧那么清晰,几乎所有视频编码格式都可以简单的认为一帧就是编码后的一副图像...视频帧 在视频压缩技术中,视频帧采用不同的压缩算法来减少数据量,通常只编码图像之间的差异之处,相同的元素信息则不必重复发送,视频帧的不同算法一般称之为图片类型(picture types)或者帧类型(frame...、视频解码,然后音视频独立播放,因为播放速率的差异就会出现音视频不同的问题,音频和视频播放对应的两个指标如下: 音频:采样率 视频:帧率 声卡和显卡一般是按照每帧数据进行播放的,所以要计算音频和视频每帧的播放时长...从上文中已知采样率为 44.1KHz 的 MP3 音频文件的每帧持续时长为 26 ms,如果此时视频的帧率为 30fps,则视频帧的每帧持续时长为 1000 / 30 ≈ 33ms,如果在理想情况下能够按照计算出了数值进行播放...实际情况是因为各种原因导致音视频不同步,如每帧解码和渲染的时长有差别,色彩丰富的视频帧可能就比色彩单一的视频帧解码渲染更慢以及计算的误差等,音视频同步方式主要有三种: 视频同步到音频 音频同步到视频 音视频同步到外部时钟

    5.1K10

    实现一个抽帧算法+双目相机原理

    众所周知1秒24帧图像,如果你的单帧分辨率小点还好,大了肯定卡顿。...那解决方案其实比较固定的: 增加机器算力,以前1帧时间1,现在0.1,那就是提升了10倍 或者使用ROI,就是分辨率变小,也相对的算起来轻松 或者抽帧,也就是我用的方法,我一秒处理4帧,这个效率最高的...使用了一个try和finally来控制下面的帧 等待视频框架发一个完整的帧,将两个帧进行一次对齐操作 获得两个帧,然后确保两种视频流都读取到,接着把图像帧转换一下数据类型 深度图不方便显示,可以用...() # 设置视频流的分辨率,格式大小,帧数 config = rs.config() config.enable_stream(rs.stream.depth, 640, 480...= np.hstack((color_image, depth_colormap)) # 展示视频流 cv2.namedWindow('realsense

    1.2K30

    视频中的 I 帧,P 帧,B 帧

    视频传输原理 视频是由一幅幅帧图像和一组音频构成的,视频的播放过程可以简单理解为一帧帧的画面按照时间顺序呈现出来的过程。...但是在实际应用中,并不是每一帧都是完整的画面,因为如果每一帧画面都是完整的图片,那么一个视频的体积就会很大。...由于压缩处理的方式不同,视频中的画面帧就分为了不同的类别,其中包括:I 帧、P 帧、B 帧。I 帧是内部编码帧(也称为关键帧),P 帧是前向预测帧(前向参考帧),B 帧是双向内插帧(双向参考帧)。...在视频画面播放过程中,如果 I 帧丢失了,则后面的 P 帧也就随着解不出来,就会出现视频画面黑屏或卡顿的现象。...P 帧是差别帧,P 帧没有完整画面数据,只有与前一帧的画面差别的数据。 若 P 帧丢失了,则视频画面会出现花屏、马赛克等现象。

    5K20

    视频帧里的I帧、P帧、B帧是什么?

    5)视频流中的PTS和DTS又是什么?什么是I帧、P帧、B帧?I帧:intra picture,帧内编码帧。...* I帧自身可以通过视频解压算法解压成一张单独的完整视频画面,所以I帧去掉的是视频帧在空间维度上的冗余信息。...* B帧需要参考其前一个I帧或者P帧及其后面的一个P帧来生成一张完整的视频画面,P帧与B帧去掉的是视频帧在时间维度上的冗余信息。...比如在对同一个视频进行多码率转码时,如果指定 IDR 帧对齐(IDR Frame Alignment),则意味着所有输出视频的 IDR 帧在时间点、帧内容方面都保持精确同步,此时播放器便可实现多码率视频平滑切换...对于视频来说,AVFrame就是视频的一帧图像,这帧图像什么时候显示给用户,取决于它的PTS。

    1.9K11

    【音视频原理】视频帧的 I P B 帧概念 ① ( 码率 帧率 分辨率 视频信息 | I 帧 - 内部编码帧 | I 帧 - 关键帧压缩法 | P 帧 - 前向预测帧 )

    一、 视频帧分析 1、MediaInfo 显示视频信息 使用 MediaInfo 软件 打开一个 mp4 文件 , 查看其属性 ; 2、码率 / 帧率 / 分辨率 视频信息 该视频的属性如下 : 码率...: 212kb/s , 这是 视频文件 的 视频信息 在 单位时间内的 数据流量 , 码率越大 , 单位时间内采样率越大 , 数据流精度越高 , 视频质量越高 ; 视频帧率 : 5fps , 1 秒中有...5 帧的信息 , 帧率越高 , 视频越流畅 ; 视频分辨率 : 1364*788 , 该视频 宽度 1364 像素 , 高度 788 像素 , 分辨率越高显示效果越好 , 占用的码率也就越高 ; 二、...I 帧 - 内部编码帧 1、I 帧简介 I 帧 , 完整名称是 " Intra Coded Frames " , " 内部编码帧 " , 指的是 不需要 参考 其它 视频帧 , 就可以 独立进行解码...P1 帧 , 但是 如果 P2 帧 与 P1 帧 出现颠倒 , 解码出来的视频信息 , 就会出现部分区域乱码或马赛克 ;

    2.8K12

    视频编码的三种帧:I帧,B帧,P帧

    在视频压缩编码中,所有的帧被分成了三个种类,I帧,B帧和P帧,其实就是Intra-Prediction帧,Bi-prediction帧和Prediction帧。...顾名思义,就是帧内预测帧,双向预测帧以及(单向)预测帧。...(inter prediction),帧内预测的话就是在找参照块的时候,只在当前帧内寻找;而帧间预测的话,找参照块的时候会在相邻的帧之间去找相似块。...因此,基于上述所说, 如果说当前帧是只在当前帧内寻找参照块的话,那么该帧就是I帧 如果在已经编码的帧里面寻找参照块的话,那么它是P帧 如果既在已编码的帧里去寻找参照块,又在未来将要被编码的帧里去寻找参照块的话...,那么该帧就是B帧。

    2.8K20
    领券