想要无损合并两个分辨率不同且编码格式不同的视频,求指点
dwing吧
全部回复
仅看楼主
level 12
我要压一个视频(加字幕),从网上找到两个源,一个是720p的mp4,另一个是1080i的ts
但是ts前面比mp4缺了一部分,于是我想前面这部分还用mp4,但是后面的用ts补上去
已经用avidemux把两个视频都切好了,目前就是想问下怎么让1.mp4和2.ts合并起来作为源滤镜给megui压,请问avs要怎样写?
另外就是音频要如何合并,也支持avs吗?
2013年05月19日 16点05分 1
level 9
合不了吧
2013年05月19日 17点05分 2
level 12
难道只能分开压完之后再用mp4box合并了吗?
2013年05月19日 17点05分 3
level 9
要把分辨率调成一样吧。avs的话帧率也要一样
2013年05月19日 17点05分 4
帧率一样的,可以把2.ts反交错然后再resize到720p之后,再跟1.mp4合起来加字幕压吗
2013年05月19日 18点05分
回复 ayconanw :可以的
2013年05月19日 18点05分
回复@roo_zhou :多谢
2013年05月19日 18点05分
level 11
直接AVS里做不就好了,像是这样
v1 = Source(720p.mp4)
v2 = Source(1080i.ts)
#对V2做Deint/IVTC
v2,Resize(1280,720)
#如果帧率相同的话就v1 + v2
#不同的话用这个做成VFR http://www.nmm-hd.org/newbbs/viewtopic.php?f=7&t=1071
v1.BillyTC
\ .BillyTC(v2)
clip = last
subed = clip.TextSub()
应该就没问题了。音频如果要加进去的话应该也差不多,就是a1,a2,不过a1,a2直接+成a3就成,然后AudioDub(subed,a3)(其实音频的我没试过...我只是觉得应该可以这么做...你自己试试吧(死
2013年05月19日 23点05分 5
是v2.Resize(1280,720),我似乎把句号写成逗号了
2013年05月19日 23点05分
回复 ▔∞▔ :能否帮忙看下7楼的avs有什么问题
2013年05月20日 03点05分
回复
���ި�
:BillyTC是什么功能的滤镜?看了下NMM的说法,还是一知半解。
2015年05月11日 16点05分
level 9
突然发现楼主的标题提到“无损合并”,这个看来是不行的啦。至于合起来重压,是个非编软件就能搞定。
2013年05月20日 02点05分 6
标题表达有误,我意思是把字幕压进去之前不要二次转换损失画质
2013年05月20日 03点05分
level 12
avs写好了,但是一直报错
LoadPlugin("C:\Users\xy\Desktop\MeGUI_2308_x86\tools\ffms\ffms2.dll")
v1=FFVideoSource("C:\Users\xy\Desktop\md1.mp4", cachefile="D:\meguibak\md1.mp4.ffindex", threads=1)
LoadPlugin("C:\Users\xy\Desktop\MeGUI_2308_x86\tools\dgindex\DGDecode.dll")
v2=DGDecode_mpeg2source("D:\meguibak\md2.d2v", info=3)
LoadPlugin("C:\Users\xy\Desktop\MeGUI_2308_x86\tools\avisynth_plugin\ColorMatrix.dll")
v2.ColorMatrix(hints=true, interlaced=true, threads=0)
v2.nnedi3()
v2.LanczosResize(1280,720)
v2.AssumeFPS(30000/1001)
v2=last
v3=v1+v2
LoadPlugin("C:\Users\xy\Desktop\MeGUI_2308_x86\tools\avisynth_plugin\VSFilter.dll")
v3.TextSub("C:\Users\xy\Desktop\2.ass", 1)
刚开始没写v2.AssumeFPS(30000/1001)这句的时候,报错“video framerate doesn't match”,但是md2.ts这个文件本身就是29.970fps,后来网上搜了下,加上AssumeFPS这句姑且算是解决了
但是之后又报错“frame sizes don't match”,我明明已经LanczosResize(1280,720)了,不明白为什么还是报错
2013年05月20日 03点05分 7
你搞清楚mp4的分辨率了么
2013年05月20日 03点05分
回复 roo_zhou :等下,你那一堆v2.xxx没赋值啊,真正起作用的只有v2.AssumeFPS
2013年05月20日 03点05分
应该改成v2.filter1 ().filter2 ().filter3 ()...这样的形式 不能一个个单独分开
2013年05月20日 03点05分
回复 roo_zhou :mp4分辨率是720p没错的。就是说我写法不对,每一句都应该写成v2=v2.LanczosResize(1280,720)这种形式对吗?
2013年05月20日 03点05分
level 12
多谢各位,搞定了,用这个avs可以给megui压了
LoadPlugin("C:\Users\xy\Desktop\MeGUI_2308_x86\tools\ffms\ffms2.dll")
v1=FFVideoSource("C:\Users\xy\Desktop\md1.mp4", cachefile="D:\meguibak\md1.mp4.ffindex", threads=1).AssumeFPS(29.970)
LoadPlugin("C:\Users\xy\Desktop\MeGUI_2308_x86\tools\dgindex\DGDecode.dll")
LoadPlugin("C:\Users\xy\Desktop\MeGUI_2308_x86\tools\avisynth_plugin\ColorMatrix.dll")
v2=DGDecode_mpeg2source("D:\meguibak\md2.d2v", info=3).ColorMatrix(hints=true, interlaced=true, threads=0).nnedi3().LanczosResize(1280,720).AssumeFPS(29.970)
v1+v2
LoadPlugin("C:\Users\xy\Desktop\MeGUI_2308_x86\tools\avisynth_plugin\VSFilter.dll")
TextSub("C:\Users\xy\Desktop\new.ass", 1)
不过有一点比较困惑,v1和v2必须都得加AssumeFPS(29.970)这句,否则就会报错,但是这两个视频本身就是29.970fps的
2013年05月20日 07点05分 8
我没用过除了QTGMC以外做Deint...不过我想nnedi3可能也是Bob到了60p,所以v2的是60p,应该加上一句SelectEven()就砍掉一半帧变30p了...
2013年05月20日 08点05分
回复 ▔∞▔ :nnedi3是单场插补的,不会改变帧率
2013年05月20日 10点05分
哎,我发现我只要在DGDecode_mpeg2source前面加上“V=”类似的语句,他就报错。。去掉就不报错。。。这叫我怎么合并两个视频了。。
2014年09月27日 13点09分
回复 ayconanw :nnedi3默认单场么……
2014年09月27日 14点09分
level 12
本以为一切ok了,结果音频又成了难题。。
因为两个视频的音频采样率不同,一个44100一个48000,avs直接+的话会报错,而且我觉得处理音频用avs并不方便,又不像视频那样可以按帧预览
于是改用音频处理软件来搞,将两个源视频的音频都demux提取出来,得到两个aac文件,用foobar把aac转为wav,然后用audacity来合并音频,再把合并后的wav给megui转成m4a,然后跟前面转好的视频mux
但是,加上音频生成的视频出现了一个问题,后半段声音跟画面不太同步
一开始以为是音频采样率转换带来的问题,搞了n久无果,后来突然想起来ts文件dgindex生成索引的时候分离出来的aac文件名带有delay -376ms字样,于是尝试在audacity中切掉第二个音频头部的376毫秒再重新合并,问题终于解决。
原来ts文件是可以指定音频延迟的,可能是ts一般比较大,为了方便录制的人,在音画不同步的时候可以简单地设置一个延迟值来避免重新处理文件吗?mp4好像并没有这个特性。
2013年05月20日 11点05分 9
level 9
提供另一方法
ffmpeg -i input1.mp4 -i input2.ts -filter_complex "[0:0]setsar=r=1/1,subtitles=input1.ass[v0],[1:0]yadif,scale=w=1280:h=720,setsar=r=1/1,subtitles=input2.ass[v1],[0:1]aresample=44100:async=1[a1],[1:1]aresample=44100:async=1[a0],[v0][a0][v1][a1]concat=n=2:v=1:a=1[v][a]" -map "[v]" -map "[a]" -codec:v libx264 -codec:a libfdk_aac output.mp4
2014年10月02日 13点10分 12
1