Unity 获得视频的某一帧,生成缩略图
Unity 并无直接获取视频某一帧图像的API,所以想要生成缩略图就要自己写方法了,
图片和视频都可以用这种方式生成缩略图,另,转载请标明出处,谢谢。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Video;
using System.IO; public class NewBehaviourScript : MonoBehaviour { VideoPlayer vp;
Texture2D videoFrameTexture;
RenderTexture renderTexture;
void Start()
{
videoFrameTexture = new Texture2D(, );
vp = GetComponent<VideoPlayer>();
vp.playOnAwake = false;
vp.waitForFirstFrame = true; vp.sendFrameReadyEvents = true;
vp.frameReady += OnNewFrame;
vp.Play(); }
int framesValue=;//获得视频第几帧的图片
void OnNewFrame(VideoPlayer source, long frameIdx)
{
framesValue++;
if (framesValue==) {
renderTexture = source.texture as RenderTexture;
if (videoFrameTexture.width != renderTexture.width || videoFrameTexture.height != renderTexture.height) {
videoFrameTexture.Resize (renderTexture.width, renderTexture.height);
}
RenderTexture.active = renderTexture;
videoFrameTexture.ReadPixels (new Rect (, , renderTexture.width, renderTexture.height), , );
videoFrameTexture.Apply ();
RenderTexture.active = null;
vp.frameReady -= OnNewFrame;
vp.sendFrameReadyEvents = false;
}
} void OnDisable()
{
if (!File.Exists(Application.persistentDataPath+"/temp.jpg")) {
ScaleTexture (videoFrameTexture, , , (Application.persistentDataPath+"/temp.jpg"));
}
}
//生成缩略图
void ScaleTexture(Texture2D source, int targetWidth, int targetHeight,string savePath)
{ Texture2D result = new Texture2D(targetWidth, targetHeight,TextureFormat.ARGB32, false); for (int i = ; i < result.height; ++i)
{
for (int j = ; j < result.width; ++j)
{
Color newColor = source.GetPixelBilinear((float)j / (float)result.width, (float)i / (float)result.height);
result.SetPixel(j, i, newColor);
}
}
result.Apply();
File.WriteAllBytes(savePath, result.EncodeToJPG());
} }
Unity 获得视频的某一帧,生成缩略图的更多相关文章
- php 使用 ffmpeg 转换视频,截图,并生成缩略图
		
http://blog.csdn.net/toss156/article/details/7003059 把ffmpeg 和 生成缩略图整合了一下. include("ImageResiz ...
 - 使用AVFoundation仅仅生成缩略图,不进行播放视频(本地和网络文件都可以创建视频缩略图)
		
使用MPMoviePlayerController来生成缩略图足够简单,但是如果仅仅是是为了生成缩略图而不进行视频播放的话,此刻使用 MPMoviePlayerController就有点大材小用了.其 ...
 - C#:获取视频某一帧的缩略图
		
读取方式:使用ffmpeg读取,所以需要先下载ffmpeg.网上资源有很多. 原理是通过ffmpeg执行一条命令获取视频某一帧的缩略图. 首先,需要获取视频的帧高度和帧宽度,这样获取的缩略图才不会变形 ...
 - php如何截取出视频中的指定帧作为图片
		
php如何截取出视频中的指定帧作为图片 一.总结 一句话总结:截取视频指定帧为图片,php ffmpeg扩展已经完美实现,并且php ffmpeg是开源的 二.php如何截取出视频中的指定帧作为图片 ...
 - 从H264码流中获取视频宽高 (SPS帧) 升级篇
		
之前写过 <从H264码流中获取视频宽高 (SPS帧)> . 但发现很多局限性,而且有时解出来是错误的. 所以重新去研究了. 用了 官方提供的代码库来解析. 花了点时间,从代码库里单独把解 ...
 - Avi视频生成缩略图时,提示“尝试读取或写入受保护的内存。这通常指示其他内存已损坏”
		
需求:录制Avi格式视频成功后,使用DirectShow生成缩略图,由于视频录制时,宽高分辨率可调节,所以有些情况下,生成缩略图会抛出异常“尝试读取或写入受保护的内存.这通常指示其他内存已损坏”. 异 ...
 - PHP -- 七牛云 在线视频 获取某一帧作为封面图
		
### 最近碰到视频处理,需要视频封面? 但用的是七牛云存储视频,索性搜了一下,怎么获取视频的某一帧作为视频的封面图... 发现了七牛官网又自身的接口 ### https://developer.qi ...
 - 【matlab】使用VideoReader提取视频的每一帧,不能用aviread函数~
		
这个问题是matlab版本问题,已经不用aviread函数了~ VideoReader里面没有cdata这个函数! MATLAB不支持avireader了,而且没有cdata这个属性了,详情去官网ht ...
 - 通视频URL截取第一帧图片
		
为了方便直接给UIImage加个类别,以后什么时候使用可以直接调用. #import <UIKit/UIKit.h> @interface UIImage (Video) /** 通过视频 ...
 
随机推荐
- php正则检测字符串由单一字符组成
			
$str = 'aaa' $firstChar = substr($str , 0, 1); $pattern = "/^[$firstChar]+$/"; $ret = preg ...
 - error C2504: 未定义基类
			
出错的情况为: type.h 文件中定义了一个结构体,但只给出了声明 namespace pcl { struct CSDDSignature; } 其定义在type.hpp文件中给出 namespa ...
 - STM8S103之中断优先级设置
			
STM8S的中断由中断控制器(ITC)控制.STM8所有IO都支持中断,分为PA~PE 5个组,每组IO对应一个中断服务函数(也就是每组IO只有一个向量).STM8没有专门的中断状态寄存器,所以只能通 ...
 - 一个php处理图片裁剪,压缩,水印的小代码
			
插件地址:https://github.com/cigua/imagefilter
 - [SCOI2009]windy数 数位dp
			
Code: #include<cmath> #include<iostream> #include<cstdio> using namespace std; con ...
 - [Python随笔]>>range()函数?
			
因为自己在考核的时候没有记清range()函数的具体用法,所以特意去查了下 Python range() 函数用法 python range() 函数可创建一个整数列表,一般用在 for 循环中 函数 ...
 - Mybatis传递多个参数的解决办法(三种)
			
第一种方案 DAO层的函数方法 Public User selectUser(String name,String area); 对应的Mapper.xml <select id="s ...
 - [LOJ2607]【NOIP2012】疫情控制
			
题意: 题目描述 H 国有n个城市,这n个城市用n-1 条双向道路相互连通构成一棵树,1 号城市是首都,也是树中的根节点. H 国的首都爆发了一种危害性极高的传染病.当局为了控制疫情,不让疫情扩散到边 ...
 - (WC2016模拟十八)Gangsters of Treeland
			
HINT: $1\leq N,Q\leq 10^5$ 原题:CodeChef November Challenge 2013 - MONOPLOY 题解: 其实这题是[SDOI2017]树点涂色的弱化 ...
 - BZOJ 4453 cys就是要拿英魂!(后缀数组+单调栈+平衡树)
			
一开始的时候感觉就是一个主席树裸题. 然后发现自己错了. 首先建出后缀数组. 设\(i<j\) 如果\(rk[i]>rk[j]\)显然i更优. 如果\(rk[i]<rk[j]\)不一 ...