首页 > 其他分享 >如何实现播放器缩略图功能

如何实现播放器缩略图功能

时间:2023-05-04 15:12:16浏览次数:30  
标签:播放器 功能 缩略图 解码 位置 YUV SEEK

1 如果你的播放器有 SEEK 功能,有 getJPEG抓图 功能 就可以直接开发了

缩略图功能:

当鼠标悬停在某个位置,显示一下这个位置的播放画面;很多娱乐行业播放器都有此功能;

1 一路点播,或者直播(直播不能看后续缩略图)画面,播放状态

2另开一路,不要播放,只负责去存储器(远程服务器,NVR,本地文件。。。。)读固定位置的视频数据,也就是你鼠标悬停位置。当然前提是你的是视频码流建立了帧索引,这样seek才能找到悬停位置所在的GOP;【是否在开一路,依赖于你的播放器SEEK功能是否会立即跳转播放,就是说你调用seek,是否会影响原先正在播放的画面的进度】

3 可以选择显示粗略位置和精确位置的缩略图(粗略位置:悬停位置附近的I帧。精确位置:悬停位置对应的那帧数据【可能是P帧,B帧】);播放器解码后可以判断下该帧时间戳是不是SEEK的那个时间点(正负一帧的偏差);

4等拿到了SEEK的时间点的那帧数据,就是解码后的YUV,把这帧数据保存成JPEG供应用层显示即可,一般缩略图都是JPEG格式。因为缩略图比较小,所以拿到YUV后还要resize一下改一下分辨率;

5 如果想要缩略图直接显示在指针悬停位置,就直接吧YUV数据给应用层,应用层创建个临时的VIew去承接这个YUV进行显示,这个都有现成的函数;


关于SEEK功能

1 直播是没办法seek的,即便可以seek也只能向前SEEK,因为后边的画面内容是实时的,还没有发生,是不会有视频的;所以我们一般说的seek都是针对回放流,文件流;而不是实时流;

2 seek 跳转,需要的条件:有文件索引,如MP4前置索引,M3U8文件片段索引;本地文件的话,你需要提前遍历一遍文件,建立I帧索引【常规操作】;

3 有了视频帧索引之后,跳转就相当于去索引记录中寻找那个时间点对应的GOP,从那个GOP位置开始拉流,或者读文件;

4定位一般分为精确定位和粗略定位,就看你的播放器是从SEEK的那个时间点附近的I帧开始显示,还是解码到【定位的时间点的】那帧,开始显示;精确定位的大致实现方案就是先到seek的位置去找GOP,然后肯定从I帧开始读数据(一般的索引也是记录的I帧的位置),读数据解封装,解码,之后送渲染之前要注意,如果解码后的这帧画面还没到SEEK的那个时间点就不送显示,直接丢弃就好,直到解码输出你SEEK的那个时间点的帧数据YUV,再送去显示;【解码GOP需要I帧,但是渲染不需要I帧,渲染只需要YUV】;


关于抓图

1抓图一般可以从解码组件输出的位置上判断是否需要抓图,也就是直接取解码后的YUV,然后你可以利用一些开源code,把YUV转成BMP,JPEG,RGB等等;保存成图片;

2 抓图还可以从渲染组件的位置开始,因为渲染组件可以做叠图,立体显示,三维矫正,resize,MVP变换,叠字,YUV转RGB,还能拿GPU的数据,所以有些播放器做的抓图是从渲染模块抓的,可以抓一些合成图像;

 

标签:播放器,功能,缩略图,解码,位置,YUV,SEEK
From: https://www.cnblogs.com/8335IT/p/17371284.html

相关文章

  • 后台管理功能
    后台管理页面搭建"""当一个文件夹下文件比较多的时候你还可以继续创建文件夹分类处理templates文件夹backend文件夹应用1文件夹应用2文件夹bbs后天管理页面用到了分页器在app01应用下创建utils文件夹,在该文件夹下创建mypage.py文件""" ......
  • SAP PP 并行工序和替代工序功能介绍及测试
    SAPPP并行工序和替代工序功能介绍及测试概念介绍并行工序(Parallelsequence):并行的意思就是同时进行互不影响,例如下图,在进行工序80,90,时,还有一个另外的生产工序在进行70,80,这两部分工序同时进行互不影响互不影响。使用业务场景:比如:假如生产线有OPR10至OPR100的工序,但......
  • 增强金蝶云星空的数据分析能力,实现BI 分析功能
    小编最近在研究金蝶云星空中如何将已有的BI工具集成进去,对于BOS开发毫无经验的我,就这么开始了从0到1的过程。在实现功能过程中,也踩了很多坑,接下来看如何避坑。那么具体如何实现,根据下面的步骤来看。 话不多说直接上操作步骤,篇幅较长,这是一篇教程贴,分享给需要的用户 1. ......
  • Python实现艾宾浩斯背单词功能
    本项目主要是通过在事先准备好的excel单词文件中每天抽取单词,并反复使用QQ邮箱发送到自己的邮箱里提醒自己有一定规律的背单词,项目最大的难点有三。对于csv文件的对应切片任务等操作对于日志的记录艾宾浩斯记忆法是一个周期性的过程,需要反复的计算。当然,由于这个项目的文件还是......
  • 园子的现代化建设-复活:沉睡2年多的新闻评论功能重新开放
    首先非常感谢大家对园子的支持!在困境求助发出后,收到了很多园友的捐助,也收到了不少园友在付款备注中的鼓励留言。大家的支持是强大动力,我们会加倍努力尽快让园子走出困境,并加快园子的现代化建设步伐。2021年突如其来的危机,给园子来了个措手不及,让园子陷入一片狼藉,新闻评论功能就......
  • 音乐播放器
    usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Windows.Forms;usingSystem.IO;usingWMPLib;namespace......
  • kissat分析02_主要功能函数01_propagate
    传播函数分布在propsearch.h、propsearch.c和proplit.c文件之中 propsearch.h #ifndef_propsearch_h_INCLUDED#define_propsearch_h_INCLUDEDstructkissat;structclause;structclause*kissat_search_propagate(structkissat*);#endif   ......
  • 七、使用调度框架quartz,为12306系统增加定时调度功能
    为什么要有定时调度定时调度在企业级系统中非常重要(统计报表、功能补偿、不紧急的大批量任务)12306每天都需要生成15天后的车次数据本章内容集成quartz,比较SpringBoot自带定时任务喝quartz的区别使用控台来操作定时任务:新增、暂停、重启、删除项目中增加batch定时调度......
  • 万众期待的FL Studio 2023最新发布的21版本新功能介绍/主题包/下载安装激活教程
    FLStudio21国人也叫它水果编曲软件,是一款有着25多年历史的经典音乐创作软件。全球已有上千万的用户每天在使用水果编曲创作自己的音乐。它被公认为最适合新手的编曲软件之一,有着业内领先的工作流,以及丰富的生产力插件,同时也是唯一一款支持终生免费升级的DAW软件。来自DJMAG评选的......
  • 高颜值在线绘图平台ImageGP系列教程 - 功能介绍
    在线平台BIC是ImageGP的重构升级版,重构于2020年初。该平台采用配置文件快速部署工具、生成结果或结果报告。其绘图和分析基于R语言(ImageGP包,在早期ImageGP脚本的基础上重新进行了封装,GitHub,Gitee)、Python语言。左侧导航目前包括:1.Professionalplotsinseconds;2.......