搜索 社区服务 统计排行 帮助
  • 10861阅读
  • 37回复

[原创]在影片中加入图片logo的方法(2005.2.25更新)

楼层直达
级别: 新手上路
注册时间:
2005-02-19
在线时间:
0小时
发帖:
31
只看该作者 15楼 发表于: 2005-02-25
在影片前加入图片

静态:
引用

v1=AviSource("G:\Sample\AVI\s09.avi")
function convertToColorSpace(clip1,clip2) {
clip1 = (clip2.isRGB32() && !clip1.isRGB32()) ? clip1.convertToRGB32(): clip1
clip1 = (clip2.isRGB24() && !clip1.isRGB24()) ? clip1.convertToRGB24(): clip1
clip1 = (clip2.isYUY2() && !clip1.isYUY2()) ? clip1.convertToYuy2(): clip1
clip1 = (clip2.isYV12() && !clip1.isYV12()) ? clip1.convertToYv12(): clip1
return clip1
}
v2=imagesequence("G:\Sample\pics\p15.jpg",start=1, stop=240).assumefps(v1,true).BilinearResize(640,352).convertToColorSpace(v1)
v3=DirectShowSource("G:\Sample\AVI\s12.wav")
v4=audiodub(v2,v3)
v5=v4++v1
return v5

解说:

函数convertToColorSpace主要用来检测clip1的颜色空间,并让其与clip2保持一致

注:v2.51以前版本(v2.5)要加上函数isYv12
引用

function isYv12(clip) {
return !(clip.isRGB() || clip.isYuY2())
}


图片尺寸180*119,影片尺寸640*352

图片显示10秒,10=240/23.976

采用AlignedSplice方式合并两片段






动态:
引用

v1=AviSource("G:\Sample\AVI\s09.avi")
function convertToColorSpace(clip1,clip2) {
clip1 = (clip2.isRGB32() && !clip1.isRGB32()) ? clip1.convertToRGB32(): clip1
clip1 = (clip2.isRGB24() && !clip1.isRGB24()) ? clip1.convertToRGB24(): clip1
clip1 = (clip2.isYUY2() && !clip1.isYUY2()) ? clip1.convertToYuy2(): clip1
clip1 = (clip2.isYV12() && !clip1.isYV12()) ? clip1.convertToYv12(): clip1
return clip1
}
v2=imagesequence("G:\Sample\pics\bmp Earth\00%.2d.bmp",start=1, stop=74).Loop(3).assumefps(v1,true).BilinearResize(640,352).convertToColorSpace(v1)
v3=DirectShowSource("G:\Sample\AVI\s12.wav")
v4=audiodub(v2,v3)
v5=v4++v1
return v5

图片尺寸92*92,显示约8秒,8=(74*3)/23.976




引用

v1=AviSource("G:\Sample\AVI\s09.avi")
function convertToColorSpace(clip1,clip2) {
clip1 = (clip2.isRGB32() && !clip1.isRGB32()) ? clip1.convertToRGB32(): clip1
clip1 = (clip2.isRGB24() && !clip1.isRGB24()) ? clip1.convertToRGB24(): clip1
clip1 = (clip2.isYUY2() && !clip1.isYUY2()) ? clip1.convertToYuy2(): clip1
clip1 = (clip2.isYV12() && !clip1.isYV12()) ? clip1.convertToYv12(): clip1
return clip1
}
v2=immaread("G:\Sample\pics\p24.gif").Loop(50).assumefps(v1,true).BilinearResize(640,352).convertToColorSpace(v1)
v3=DirectShowSource("G:\Sample\AVI\s12.wav")
v4=audiodub(v2,v3)
v5=v4++v1
return v5

图片尺寸400*328,显示约12秒,12=(6*50)/23.976,这里6为gif图的单元数,这里用到了下面要说的immaread滤镜





级别: 新手上路
注册时间:
2005-02-19
在线时间:
0小时
发帖:
31
只看该作者 16楼 发表于: 2005-02-25
immaread滤镜(测试中)

http://e-rels.dyndns.org/downloads/immaread620.rar

supports reading over 89 major file formats!

png图
引用

LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\immaread.dll")
immaread("G:\Sample\pics\p18.png")

gif图:
引用

immaread("G:\Sample\pics\p24.gif")

如果不能获得特定的帧,打开vd/vdm加载avs



mng图(Multiple-image Network Graphics, 动态png):

安装mng的IE插件:

http://entropymine.com/jason/mng4ie/install106.html


引用

immaread("G:\Sample\pics\mng\pnglogo-grr-anim-lc.mng")



跳动的小球:


引用

immaread("G:\Sample\pics\mng\sample.mng")



包括JNG图(JPEG Network Graphics),mng格式的子集

psd图(Adobe Photoshop动态图):
引用

immaread("G:\Sample\pics\animated\d.psd")

但对psd图的每一帧不能连续读取,速度较慢

URL网络图片:
引用

immaread("http://myphoto.myrice.com/photo/671289/4643_373430.jpg")


引用

immaread("http://myphoto.myrice.com/photo/671289/4643_373441.gif")



imagemagick网络图片:
引用

immaread("magick:logo")



语法:
magick:name
name:
两种写法作用等价

图片名(样例):
granite
logo
netscape
rose

级别: 新手上路
注册时间:
2005-02-19
在线时间:
0小时
发帖:
31
只看该作者 17楼 发表于: 2005-02-25
由于用immaread读取gif图时出现帧不连贯的情况,所以我想了下面的办法解决:
引用

v1=CoronaSequence("G:\Sample\pics\png\%.2d.png", start=1, stop=6, fps=12).Loop (15)
v2=immaread("G:\Sample\pics\p24.gif").Loop(35).assumefps(v1,true)
return v1+v2



原始图片p24.gif



01.png,02.png......06.png是从p24.gif分解出来的原始尺寸的png图

为保v1中帧的连贯性,start取为1

p24.gif的原始帧率为12.5,但fps只能取为整数,所以取离12.5最近的12(当然也可以取13)

%.2d.png和p24.gif本身一样,所以在确定总显示时间确定的情况下,两个循环次数可任意设定:50=15+35=25+25=10+40=......

这里图片显示25秒,25=(6*(15+35))/12

这样就实现了一个gif图的自由连贯读取,至于加上声音,放在影片前,放在影片的某个位置就要用到上面所讲的^_^

级别: 新手上路
注册时间:
2003-12-05
在线时间:
0小时
发帖:
273
只看该作者 18楼 发表于: 2005-02-25
GSpot的链接无效了,,,,
级别: 新手上路
注册时间:
2005-02-19
在线时间:
0小时
发帖:
31
只看该作者 19楼 发表于: 2005-02-25

级别: 光明使者
注册时间:
2003-01-28
在线时间:
0小时
发帖:
27818
只看该作者 20楼 发表于: 2005-02-27
没人顶@@?.......偶顶上去:D

There can be no better way of knowing

In a world beyond controlling
Are you gonna deny the saviour in front of your eyes?
Stare into the night power beyond containing
Are you going to remain a slave for the rest of your life?
Give in to the night
级别: 侠客
注册时间:
2003-08-24
在线时间:
0小时
发帖:
416
只看该作者 21楼 发表于: 2005-02-27
GIF加入不错啊

:) 看帖要回帖,这是最优先事项哦! :)
级别: 版主
注册时间:
2002-12-02
在线时间:
0小时
发帖:
3002
只看该作者 22楼 发表于: 2005-02-28
方法還真不少
不知樓主認為哪種方法最簡單實用

P.S. 這個可以列入置頂,只是我沒這功能(權限)^^||

级别: 新手上路
注册时间:
2005-02-19
在线时间:
0小时
发帖:
31
只看该作者 23楼 发表于: 2005-02-28
引用
最初由 weilai 发布
方法還真不少
不知樓主認為哪種方法最簡單實用

P.S. 這個可以列入置頂,只是我沒這功能(權限)^^||


感谢weilai版!

我前面写的内容还有可以该进的地方,希望大家掌握其中的原理,例子是研究的手段都是可以变通的.


对上面所用的各种方法应从两个阶段分析:

图片读取:

CoronaSequence或ImageSequence与ImageReader,ImageSource基本相同,都能读取单一图片和图片序列
而immaread功能则更为强大,它是基于ImageMagick的图片读取技术,能读取89种以上格式,特别是它对动态图象gif,mng,psd的支持,甚至是URL图片的静,动态图(速度慢)

如果是一般的静态图片以及序列图片我推荐用CoronaSequence或ImageSequence,而且加入影片的速度(特别是序列图片)要比immaread快

如果想直接读取动态格式或网络图片,那么只有immaread可以胜任


图片加入:

对纯底色的图片,建议用ColorKeyMask,Layer

对已做好了单一遮罩图片或遮罩图片序列,可以用mask,Layer或Overlay,这两种方法基本相同,都要用到mask;只是mask,Layer是在RGB32空间运行,也就是把RGB32的源(加入的源如果不是RGB32,需要ConvertToRGB32)Layer到RGB32的源;而Overlay对加入源的颜色空间没有任何限制,运行是在YUV空间,也就是把自动在其内部将加入源转为YUV形式(也就是输出格式),所以输出的颜色空间可能与输入的颜色空间不同,但不是说为了转换颜色空间而采用Overlay,那样不仅影响质量而且影响速度.

级别: 新手上路
注册时间:
2005-02-19
在线时间:
0小时
发帖:
31
只看该作者 24楼 发表于: 2005-02-28
忘了说,如果是做avi,用logo.vdf最方便

级别: 骑士
注册时间:
2004-06-04
在线时间:
0小时
发帖:
1170
只看该作者 25楼 发表于: 2005-02-28
这个教程真是好,方法很全,楼主辛苦了
级别: 新手上路
注册时间:
2007-07-07
在线时间:
0小时
发帖:
20
只看该作者 26楼 发表于: 2007-07-07
好厉害,,,全暴走

不签就不签,,有什么了不起,,什么叫灌水,什么叫刷屏,,
级别: 超级版主
注册时间:
2004-07-25
在线时间:
120小时
发帖:
3897
只看该作者 27楼 发表于: 2007-07-07
谁又把古墓挖出来了

级别: 工作组
注册时间:
2003-11-07
在线时间:
1小时
发帖:
7032
只看该作者 28楼 发表于: 2007-07-07
古墓?有丽影么?

青空が眩しい 君がいる風景は
幸せのオーラ 溢れ出すの とまらないよ
駅前の噴水 虹を作っているよ
君を待つ時間さえも かけがえない プレシャスな時

=========================

FANSUB的历史,又翻过了新的一页
级别: 精灵王
注册时间:
2005-12-13
在线时间:
0小时
发帖:
3859
只看该作者 29楼 发表于: 2007-07-07
= = 谁将罗拉推倒了OTL

= =
快速回复

限150 字节
上一个 下一个