写一个js正则表达式验证XX年xx月这种数据

JavaScript017

写一个js正则表达式验证XX年xx月这种数据,第1张

var reg = /^(([0-9])|([0-9][0-9])|([0-9][0-9][0-9])|([0-9][0-9][0][0-9])|([0-9][0-9][1][0-1]))$/

console.log(reg.test('0003'))  // true

console.log(reg.test('1212'))  // false

AviSynth(AVI合成器)是一个功能强大无比的基于avs脚本文件的视频处理与帧服务软件,建立.avs文件索引输出,还有强大的脚本滤镜功能,很多编辑软件可以支持。本文详细介绍了AviSynth的使用方法.

一、如何加载插件

1.SetWorkingDir() 指定插件路径 如:

SetWorkingDir("D:\AviSynth 2.5\plugins\")

2.LoadPlugin() 加载插件 如:

LoadPlugin("VSFilter.dll") 加载字幕插件

LoadPlugin("mpeg2dec3.dll") 加载DVD的mpeg2编码器插件

LoadPlugin("mpasource.dll") 加载mp3插件

二、源媒体怎么读取

1.DirectShowSource() 万能调用 如:

DirectShowSource("e:\vob\ss.VOB")

2.AVISource() avi文件调用 如:

AVISource(e:\avi\1.avi,false)

3.MPEG2source() 这个用于解码DVD的mpeg2格式的视频 如:

MPEG2source("XXX.d2v")

4.WAVSource("e:\vob\ss.wav") 读取wave音频

5.AC3Source("e:\vob\ss.ac3") 读取ac3音频

6.MPASource("e:\vob\ss.mp3") 读取mp3音频

7.Convertfps=true 转换帧率 如:

DirectShowSource("e:\vob\ss.vob",Conertfps=true) 表示不指定帧率,适用于RMVB、WMV

注:WAVSource和AVISource是属于核心脚本,无须读取插件,但AC3Source和MPASource需要读取AC3Source和MPASource插件

DirectShowSource的读取需要安装各种音频和视频的解码器

三、Crop()、LanczosResize()、SimpleResize()、AddBorders() 裁黑边、调整大小、调整大小、加黑边

1.Crop() 裁黑边 (左,上,长,宽) 如:

Crop(8,0,704,480) 左右各切去8像素,上下各切去0像素 原分辨率720*480

2.LanczosResize() 调整大小 (长,宽) 画质锐利、真实,适合普通电影 如:

LanczosResize(640,480)

3.SimpleResize() 调整大小 (长,宽) 画质柔和,适合动画 如:

SimpleResize(640,480)

4.AddBorders() 加黑边 (左,上,右,下) 如:

AddBorders(0,64,0,64)

四、画面滤镜

1.Levels() 层次 亮度、对比度(1.3~2之间较合适)、Gamma值(调节画面亮暗)如:

Levels(0,1.5,255,0,255)

2.Tweak() 调整 色度、饱和度、亮度、对比度

色度:-180.0~180.0 默认0.0 正数趋向红色,负数趋向绿色

饱和度:0.0~10.0 默认1.0 0.0为黑白

亮度:-255.0~255.0 默认0.0 一般调节在0~30之间,以15~20为宜

对比度:0.0~10.0 默认1.0 如:

Tweak(0,1,20,1)

3.FadeIn()、FadeOut() 淡入、淡出 (帧)如:

FadeIn(24)、FadeOut(24)

4.Trim() 截取 某段影片 (开始帧,结束帧)如:

Trim(240,480)

五、声音滤镜

1.AudioDub() 合并影音 (视频,音频)如:

Video=AVISource("xxx.avi",False,"YUY2") False为关闭视频中的音频 YUY2为色彩模式

Audio=WAVSource("xxx.wav")

AudioDub(Video,Audio)

2.GetChannel()、GetLeftChannel()、GetRightChannel() 获取声道 如:

Stereo=WavSource("test.wav")

Return GetChannel(stereo) 返回test.wav的左声道

Stereo=WavSource("test.wav")

Return GetLeftChannel(stereo) 返回test.wav的声道

3.DelayAudio() 延迟声音 由于从VOB里分离的AC3通常有延迟,所以用Azid转码得到的WAV也有延迟,在用AudioDub合并时就需要加上这个延迟 如:

WAVSource("test.wav").DelayAuido(0.5) 把test.wav延迟0.5秒

DelayAudio(wavsource("text.wav"),-30) 把test.wav延迟30毫秒 +表示提前

4.ResampleAudio() 音频重新采样 如:

WAVSource("text.wav").ResampleAudio(48000) 重新采样率48000Hz

5.AmplifydB() 声道音量缩放 如:

AmplifydB(WAVSource("text.wav"),4,-3) 左声道音量放大4dB,右声道音量减小3dB

AmplifydB(WAVSource("text.wav"),4,0,-3) 左声道音量放大4dB,中声道音量放大0dB,右声道音量减小3dB

6.MergeChannels() 组合左、右声道 如:

Left=WAVSource("C:\1.wav").GetLeftChannel

Right=WAVSource("C:\2.wav").GetRightChannel

MergeChannels(Left,Right)

六、字幕滤镜

1.VobSub() Sub字幕 将字幕的2个文件test.idx和test.sub放在同一个目录下 如:

LoadPlugin("VobSub.dll")

VobSub("test")或VobSub("e:\vob\ test.idx")

2.TextSub() SSA和ASS字幕 如:

LoadPlugin("TextSub.vdf")

TextSub("h:\avs\jrvs.ssa") 加载水印文本

LoadPlugin("VSFilter.dll")

TextSub("F:\DVD\js60\js601.srt") 加载srt字幕

七、色彩模式转换

1.ConvertToRGB32、ConvertToRGB24、ConvertToRGB、ConvertToYUY2、ConvertToYV12 如:

AVISource("text.avi","YUY2")=AVISoerce("text.avi").ConvertToYUY2

八、其它虑镜

1.截图 连续截图、截取特定Frame 格式bmp,、dds、jpg/jpe/jpeg、pal、pcx 如:

DirectShowSource("E:\VIDEO\text.mp4",fps=23.970).ConvertToRGB32

trim(1,10)

ImageWriter("D:\ever\",0,0,"jpg") 连续截图 截取影片选段中的第0帧到第9帧图像(全部帧)

DirectShowSource("E:\VIDEO\text.rmvb",convertfps=true).ConvertToRGB24

trim(1,10)

ImageWriter("D:\ever\",3,7,"jpg") 连续截图 截取影片选段中的第4帧到第8帧图像

DirectShowSource("E:\VIDEO\text.mp4",fps=23.970).ConvertToRGB

trim(10,10)

ImageWriter("D:\ever\",0,0,"jpg") 截取特定Frame 截取整个影片的第11帧

DirectShowSource("E:\VIDEO\text.rmvb",convertfps=true).ConvertToRGB24

trim(1,10)

ImageWriter("D:\ever\",4,4,"jpg") 截取特定Frame 截取影片选段中的第5帧(整个影片的第6帧)

九、常见外置滤镜

(1)源文件滤镜

1.MPEG2Dec 读取DVD2AVI产生d2v工程文件,内建去除Noise的TemporalSmoother 如:

LoadPlugin("MPEG2Dec.dll")

MPEG2Source("test.d2v")

2.MPEG2Dec2 支持P4的SSE2指令集,用文本编辑工具打开d2v,把iDCT_Algorithm=?改成5 速度快,效果好 如:

LoadPlugin("MPEG2Dec2.dll")

MPEG2Source("test.d2v")

3.MPEG2Dec3 加入Nic的图像后处理(PP),一定程度减少Noise,好像除了P4的SSE2外,还加入了AMD的3D Now!优化,目前还在开发中 如:

LoadPlugin("MPEG2Dec3.dll")

MPEG2Source("test.d2v",CPU=4) CPU=4开启PP模式

(2)处理滤镜

1.ColorYUY2 颜色补偿 如:

LoadPlugin("ColorYUY2.dll")

ColorYUY2(0,10,0,10,0,0,0,0,0)

2.ChangeFPS() 改变帧率 如:

ChangeFPS(23.976) 数值12、15、20、23.976、24、25、29.970、30

3.UnDot() 消除噪点 可用一个或多个,可连用 如:

LoadPlugin("UnDot.dll")

DirectShowSource("test.avi")

UnDot()

LanczosResize(480,272)

UnDot()

LoadPlugin("UnDot.dll")

DirectShowSource("test.avi")

UnDot().UnDot().UnDot().UnDot()

4.KenKunNR() 降噪 threshold=1 to 3,数值越大,强度越大 如:

LoadPlugin("WarpSharp.dll")

KenKunNR(threshold=1)

5.FluxSmooth() 柔化 兼有降噪 降噪作用稍强于UnDot() 如:

LoadPlugin("FluxSmooth.dll")

FluxSmooth(5,7) 一般使用默认(5,7)

6.SpatialSoften() 空间轴柔化 (柔化程度,亮度域值,色彩域值)如:

SpatialSoften (4,8,8) 柔化程度数值不要太大,2-5之间,亮度域值、色彩域值需测试调节

7.TemporalSoften() 时间轴柔化 如:

TemporalSoften(2,3,3,mode=2,scenechange=6) 一般使用这个参数

8.Convolution3D() 3D柔化 一般动画用animeHQ,电影用movieHQ 如:

LoadPlugin("Convolution3d.dll")

Convolution3D("movieHQ") 电影

Convolution3D("animeHQ") 动画

9.Deen() 锐化 兼有降噪 如:

LoadPlugin("deen.dll")

Deen("c2d",2,3,3) 较轻

Deen("a3d",3,3,1,3) 较轻

Deen("c2d",2,6,6) 中等

Deen("a3d",3,6,1,6) 中等

Deen("c2d",2,10,12) 强力

Deen("a3d",3,10,1,12) 强力

10.Sharpen() 锐化 数值越大,效果越强 如:

Sharpen(0.2) 一般取0.2~0.3

11.WarpSharp() 锐化 主要改动depth、bump两个数值 如:

LoadPlugin("WarpSharp.dll")

WarpSharp(depth=30,blur=2,bump=40,cubic=-0.6) 越下面的线条越细

WarpSharp(depth=40,blur=2,bump=60,cubic=-0.6)

WarpSharp(depth=60,blur=2,bump=96,cubic=-0.6) 全屏的时候,明显感觉出锯齿

12.Blur() 模糊 参数范围-1.0~1.58 负数为清晰 可以连续加载,可以结合MergeChroma或MergeLuma使用 如:

Blur(0,1).Blur(0,1)

MergeLuma(Blur(0,1)Blur(0,1))Blur(-1) 相当于锐化滤镜

Blur(-0.9,1) 水平清晰,竖直模糊 竖直模糊更具有线条感

Blur(1.3,-0.7) 水品模糊,竖直清晰

13.柔化滤镜可以参考一些自动生成的模板 片源不好就按需选用,尽量少用,或者不用 如:

little Noise

TemporalSoften(2,3,3,mode=2,scenechange=6)

MergeChroma(blur(1.3))=MergeLuma(blur(1.0))

FluxSmooth(5,7)

Medium Noise

TemporalSoften(3,5,5,mode=2,scenechange=10)

Convolution3D("moviehq")

FluxSmooth(7,7)

Heavy Noise

Temporalsoften(4,8,8,mode=2,scenechange=10)

Convolution3D("movielq")

FluxSmooth(10,15)

(3)交错滤镜

1.Decomb 包含IVTC、Deinterlace滤镜

IVTC(Inverse Telecine) 将DVD或VCD记录的29.976fps(NTSC)或25fps(PAL)的隔行信号还原为胶片的23.976fps的逐行信号,可有效消除影片的“拉丝(Interlace)”现象、平滑减少每秒内的帧数,以获得画面质量与码流的最佳比例

Deinterlace反交错,恢复逐行扫瞄图像 参数如:

Guide 0~2 默认0 NTSC用1,PAL用2,可以提高IVTC准确度

Gthresh 0~100 默认15 控制区分不同帧的程度

Post 默认true 用来处理IVTC遗漏的细节,使画面略微模糊

Threshold 0~255 默认15 控制post的程度

Dthreshold 0~255 默认9 控制threshold判定IVTC遗漏的程度

Blend 默认true 在交错画面用渲染来替代填充

Chroma 默认false 在交错画面的亮度色度调整

Cycle 2~25 默认5 每n帧删除1帧,NTSC选5,PAL选25

Mode 0~2 默认2

Mode=0 对Cycle里最相近的帧不进行处理

Mode=1 对Cycle里最相近的帧进行处理,用于处理混合帧速

Mode=2 在一个很长的范围里进行帧对比,可以正确处理动画里由8帧或12帧复制为29.97帧的情况

Threshold 默认0 控制mode=1时的处理重复帧的程度,Threshold默认100,控制mode=2时的处理重复帧的程度

Quality 0~3 默认2 采样和色度的质量,与速度成反比 如:

LoadPlugin("Decomb.dll")

Telecide(Guide=1,Gthresh=50,Chroma=True,Quality=3,Post=false)

Decimate(cycle=5) NTSC 3:2 PullDown

LoadPlugin("Decomb.dll")

Telecide(Guide=1,Gthresh=50,Chroma=True,Quality=3,Post=false)

Decimate(Cycle=5,Mode=2) NTSC Progressive和Interlaced混合

LoadPlugin("Decomb.dll")

Telecide(Guide=2,Gthresh=50,Chroma=True,Quality=3,Post=false)

Decimate(Cycle=25) PAL

十、实例

(一)截边、改变分辨率

Avisource("H:\xx.avi").crop(5,20,630,440).lanczosresize(640,352) Corp 与 Lanczosresize 两者顺序不能变

Corp切黑边,把一个640*480分辨率的片源,左右各切去5,上下各切去20,数值为(5,20,630,440)<左,上,长,宽>Lanczosresize 改变分辨率 (长,宽)

压RMVB如要改小分辨率的话建议:704*396的片源用576*324,640*480的片源用512*384 尤其是DVD转RMVB,通常拷贝出来的VOB都带有大片黑边,一定要切黑边否则压时浪费码率

另外比较保险的分辨有640*352,640*272

切边还可用 Easy Realmedia Producer(简称:ERP)里面的功能,方便一些 或是用gk里的功能,可以计算失真

用ERP打开片源>参数设置>设置裁切区域>手动调节,用鼠标拖动红色边框,Inpug Preview为预览

(二)合并输出

v1=trim(avisource("H:\RAW\武器\9.avi",false).changefps(23.976),0,767)

false关闭音频 通常 After Effects 做的特效都是无声的,所以要关闭片源音频 changeFPS(23.976)强制显示帧数 合并的前提:必需帧数统一 要截取的帧数可以用 VDM 查看

v2=trim(avisource("H:\字幕存储\武器\op.avi",false).changefps(23.976),0,225)

AE做的特效,事先用VDM得知为226帧

v3=trim(avisource("H:\RAW\武器\0.avi",false).changefps(23.976),994,0)

三个语句分别是:截取片源0~767帧、截取AE特效全部帧、截取片源994~最后帧 即是切去片源中间一段,并用 AE 特效代替

a=v1+v2+v3

Return a.textsub("H:\09.ass").textsub("H:\武器op09.ass")

若片源分辨率不一样,需统一分辨率

v1=trim(avisource("H:\RAW\wuqi\9.avi",false).changefps(23.976).lanczosresize(704,396),0,767)

最终输出结果为无声,AVI 内嵌时使用 RMVB 内嵌直接加挂音频

Loadplugin("H:\plugin\mpasource.dll")

v4=mpasource("H:\wav\武器\09.mp3")

Audiodub(a,v4)

注:这样加载的音频在压 RMVB 时,音频设置最好不用 RA10 PLUS 用 RA10 PLUS.48Kbps压出来音频头一两分钟是无音的,RA8 没问题

120帧的片源的截切

强制显示23.976帧,再用 VDM 打开看帧序号 合并时 AE 特效也要用这个帧率 AVS 切广告再合并AE特效

因牵扯到音频,所以得先处理音频

如:0~100帧是AE特效,无声 300~350是广告 切了广告的部分再合并AE特效,视频部分完成

因 AE 特效无声,音频就要另写一脚本提取 即将原片源的广告切除的脚本,不禁声音,然后用 VDM 打开,保存 WAV 音频

120帧的片源的压缩

直接强制帧数:Changefps(23.976) 另一个:Selectevety(5,0)

公司项目中需要显示订单合同PDF文件。正常情况下,加载pdf文件直接通过UIWebView或者WKWebView就可以。不过实际情况中,PDF文件如果存在 电子签名(签章) 的话,直接通过webView是无法查看到 电子签名(签章) 的。可以写个简单的demo对 http://blogs.adobe.com/security/SampleSignedPDFDocument.pdf 这个pdf文件进行查看对比:

之前直接使用WKWebview加载pdf地址来处理的,具体实现是通过远端的 pdfviewer (可以理解为web端的pdf查看页面)拼接 pdf 的url 路径来加载的,大概如下:

不过由于存在跨域问题,需要进行cookie的注入操作,并且从远端进行解析加载pdf速度一直很慢,所有想尝试其他的方法。

调研过程略...

调研相关链接:

iOS展示pdf签名时遇到的问题及解决办法

iOS实现PDF阅读功能调研

接入教程直接参照: iOS使用pdf.js打开PDF文件

参照上面的步骤介入后发现还是无法显示 电子签名(签章) 在查看 pdf.js 上的 issue 后发现有相关issue 如下:

其中 #4743 中 Osukaru 提出了解决方案:

在 src/core/annotation.js第601行(当前版本) 中

(后面查询过程中发现在 使用PDF.js如何显示pdf文件的电子签章 中也提到同样的解决办法。)

将 clone 下来的 pdf.js 中 src/core/annotation.js 文件修改后按照 iOS使用pdf.js打开PDF文件

重新构建执行

再接入到工程项目中即可,最终效果:

注意,这里没有使用上面提供的 http://blogs.adobe.com/security/SampleSignedPDFDocument.pdf 进行验证,是因为在运行过程中会crash,并抛出 WebActionDisablingCALayerDelegate willBeRemoved]: unrecognized selector sent 错误