由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Tennis版 - VirtualDub视频编辑简单步骤
相关主题
2010年终总决赛FedererVsNadal 720p下载谁介绍一下奔的流程?
法网录像下载Federer vs Djokovic 半决赛高清视频下载
有谁知道哪个video 网站能放长点的video?2008 Wimbledon Final is uploading now
Federer Vs Djokovic HDTVRip DownloadUploading Djokovic Vs Federer match
发球认清现实Semi Final Li.vs.Wozniacki 720p Download
悲摧的TiebreakLi Na Vs Sharapova HDTVRip Download
pusher 偶尔也玩进攻再奔一个一般的打球吧
Billtian北加之行第一奔: vs. WhitelionDolgopolov发球优势明显,为啥没人学
相关话题的讨论汇总
话题: n1话题: stroutfile话题: strscript话题: t1
进入Tennis版参与讨论
1 (共1页)
a**s
发帖数: 9606
1
1. 下载VirtualDub
http://virtualdub.sourceforge.net/
2. 下载并安装Plugin
http://codecpack.co/download/FFInputDriver.html
下载后解压缩到VirtualDub安装目录下的Plugin目录 (或者Plugin32/Plugin64)
3. 下载安装 XVid 或者 X264 encoder
xvid: http://www.xvid.org/Downloads.15.0.html
h264: http://sourceforge.net/projects/x264vfw/
俺习惯用XVid, 这里有个很老的设置介绍:
http://www.doom9.org/index.html?/xvid-vdub-final.htm
4. 安装好1-3, 尝试打开一个摄像机视频文件(可以drag-n-drop). 如果顺利打开,
就应该压缩没有问题了. 如果不能打开, 可能是缺相应格式的plugin. Google一
下应该能找到.
5. 按Ctrl+P, 视频压缩窗口会弹出, 选"XviD MPEG-4 CODEC", 点右下方Configure
按钮. 俺的录像一般是720p @ 60fps, 所以俺选的Profile是"XVid Highdef".
Encoding type俺一般用TwoPass. 先选"Twopass - 1st pass", 下面的Quality
Present先选General Purpose, 点"more..."按钮, 会让你自动设置成"User defined",
这里主要是更改Maximum I-frame interval. 默认值是每300帧加一个key frame, 对
于60fps来说就是每隔5秒一个key frame. 如果压缩后再加工的话就只能以5秒为单位
了. 有点太长. 俺改成30(0.5秒)方便进一步加工.
6. 按Ctrl+I是选择音频压缩格式. 按一般就直接用mp3
7. 可以先切割再压缩, 这样可以节省很多压缩时间(因为几乎只有1/3是有效时间).
切割用快捷键操作比较方便. 一般按Home选择起点, 按Ctrl+Right Arrow找到终点,
按End选择, 然后按Delete删除选中的区段. 如果直接按Right Arrow是一帧一帧的走,
太慢.
8. 剪切掉所有没用的区间后, 可以按F7进行压缩. 由于俺是用XVid 2-Pass, 得走2遍
才能完成压缩. VirtualDub支持Job list, 按Ctrl+shift+F7是添加任务到列表. 俺一
般先选1st pass, 添加列表. 然后Ctrl+P选2nd pass, 再添加列表. 然后再压缩.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
下面的如果直接用GUI来压缩可以忽略不看:
9. 任务添加完成后可以保存列表文件. 按F4会弹出任务列表窗口. 点File->Save Job
List可以保存. 俺一般是用自己的Script来压缩, 输入文件就是这个任务列表文件.
这是个文本文件, 大致结构就是:
VirtualDub.Open("E:\\VID00063.mp4","",0);
VirtualDub.audio.SetSource(1);
VirtualDub.audio.SetMode(0);
VirtualDub.video.SetMode(3);
VirtualDub.video.SetCompression(0x64697678,10,10000,0);
VirtualDub.video.SetCompData(3552,"AgAAAJgIAAAA8Ao...AAAAAAAAEAAAAAAA");
VirtualDub.subset.Clear();
VirtualDub.subset.AddRange(68369,110);
...
VirtualDub.subset.AddRange(88729,110);
VirtualDub.SaveAVI("C:\\2013.01.05.BillTian.vs.WhiteLion.avi");
VirtualDub.Close();
其中Open是打开输入文件, SetMode()是设置压缩方式, 0表示直接copy.
SetCompression是设置压缩格式. 如果总是用同样的压缩设置, 可以直接重复使用
这两行(SetCompData).subset.AddRange是保留的区间列表, 第一个参数是开始帧数,
第2个参数是区间长度(帧数).从这里就可以自动生成字幕文件来同步记录比分信息.
同时也可以知道每个Point的长度.
10. 设置好Script(任务列表)后, 就可以通过命令行或者GUI来进行压缩. 命令行
格式是: VirtualDub.exe /x /s script.file
"/x" 是压缩完成后自动关闭VirtualDub.
Tips:
剪切和压缩都挺费时的, 俺一般每剪4-5分钟就保存一次任务列表, 让script开始压缩
同时继续剪切其余的. 要注意的一点是手工删除最后一行未剪切的AddRange(xxx,xx).
g*****y
发帖数: 7271
2
赞,有空试一下。

【在 a**s 的大作中提到】
: 1. 下载VirtualDub
: http://virtualdub.sourceforge.net/
: 2. 下载并安装Plugin
: http://codecpack.co/download/FFInputDriver.html
: 下载后解压缩到VirtualDub安装目录下的Plugin目录 (或者Plugin32/Plugin64)
: 3. 下载安装 XVid 或者 X264 encoder
: xvid: http://www.xvid.org/Downloads.15.0.html
: h264: http://sourceforge.net/projects/x264vfw/
: 俺习惯用XVid, 这里有个很老的设置介绍:
: http://www.doom9.org/index.html?/xvid-vdub-final.htm

v***s
发帖数: 1893
3
好复杂。
l********3
发帖数: 510
4
有没有Mac版本的
s***i
发帖数: 6149
5
没有,iMovie就够了

【在 l********3 的大作中提到】
: 有没有Mac版本的
g*****y
发帖数: 7271
6
你的script可不可以给几个样本看看?还可以加score是么?

【在 a**s 的大作中提到】
: 1. 下载VirtualDub
: http://virtualdub.sourceforge.net/
: 2. 下载并安装Plugin
: http://codecpack.co/download/FFInputDriver.html
: 下载后解压缩到VirtualDub安装目录下的Plugin目录 (或者Plugin32/Plugin64)
: 3. 下载安装 XVid 或者 X264 encoder
: xvid: http://www.xvid.org/Downloads.15.0.html
: h264: http://sourceforge.net/projects/x264vfw/
: 俺习惯用XVid, 这里有个很老的设置介绍:
: http://www.doom9.org/index.html?/xvid-vdub-final.htm

a**s
发帖数: 9606
7
不复杂, 其实就是切割保存而已. 其它的都是一次性操作. 设置好了
就一劳永逸了. 你上次那个plugin俺还没早, 为了加快进度, 回家前
不切割就直接发送压缩命令了.

【在 v***s 的大作中提到】
: 好复杂。
a**s
发帖数: 9606
8
那能加score, 得手工. 只是用script生成时间轴, score输出是
只是point 的计数. 这样播放时就知道正在播放哪个Point, 加字
幕就不会加到错误的地方了. 其实如果你还想更方便可以下载专
门制作字幕的软件, 例如时间机器之流的.

【在 g*****y 的大作中提到】
: 你的script可不可以给几个样本看看?还可以加score是么?
K****D
发帖数: 30533
9
Movie Maker最脑残的就是居然不允许多个clip一起设字幕,只能一个一个搞,这样
做比分活活累死。。。

【在 a**s 的大作中提到】
: 那能加score, 得手工. 只是用script生成时间轴, score输出是
: 只是point 的计数. 这样播放时就知道正在播放哪个Point, 加字
: 幕就不会加到错误的地方了. 其实如果你还想更方便可以下载专
: 门制作字幕的软件, 例如时间机器之流的.

z*********n
发帖数: 94654
10
你们太敬业了

【在 K****D 的大作中提到】
: Movie Maker最脑残的就是居然不允许多个clip一起设字幕,只能一个一个搞,这样
: 做比分活活累死。。。

相关主题
悲摧的Tiebreak谁介绍一下奔的流程?
pusher 偶尔也玩进攻Federer vs Djokovic 半决赛高清视频下载
Billtian北加之行第一奔: vs. Whitelion2008 Wimbledon Final is uploading now
进入Tennis版参与讨论
g*****y
发帖数: 7271
11
不过添score是下一步的事了,你给贴一下你那个可以按points长短
自动节选points的script吧。

【在 a**s 的大作中提到】
: 那能加score, 得手工. 只是用script生成时间轴, score输出是
: 只是point 的计数. 这样播放时就知道正在播放哪个Point, 加字
: 幕就不会加到错误的地方了. 其实如果你还想更方便可以下载专
: 门制作字幕的软件, 例如时间机器之流的.

a**s
发帖数: 9606
12
def ReadVDScript(strJsFile):
lstSubs=[]
lstVideoFile=[]
strOutFile = ""
fpJs=open(strJsFile, 'r')
strScript=fpJs.read()
fpJs.close()

# Get videos source(s)
# VirtualDub.Open("2012.12.08.vs.Tim.avi","",0);
# VirtualDub.append("2.MOV")
n1 = strScript.find('.Open') + 5
if n1>4:
n1 = strScript.find('"', n1) + 1
lstVideoFile.append(strScript[n1:strScript.find('"', n1)])
n1 = strScript.find('.Append', n1) + 7
while n1>6:
n1 = strScript.find('"', n1) + 1
lstVideoFile.append(strScript[n1:strScript.find('"', n1)])
n1 = strScript.find('.Append', n1) + 7

# Get all segments and its comments
# VirtualDub.subset.AddRange(8160,131); // 15:0
n1 = strScript.find('.AddRange(', n1) + 10
while n1>9:
n2=strScript.find(')', n1)
(t1, t2) = strScript[n1:n2].split(',')
n3=strScript.find('\n', n2)
n1 = strScript.find('//', n2) + 2
if n1>1:
# Has comment
text = strScript[n1:n3].strip()
else:
text = ""
lstSubs.append([0, int(t1),int(t1)+int(t2),text.replace(" _
LR_ ", "\n")])
n1 = strScript.find('.AddRange(', n3) + 10

# Get strOutFile
# VirtualDub.SaveAVI("C:\\1.avi")
n1 = strScript.find('SaveAVI("', n1) + 9
if n1>8:
n2=strScript.find('.avi', n1)
if n2>-1:
strOutFile = strScript[n1:n2]
else:
strOutFile = strScript[n1:strScript.find('"', n1)]
return (lstSubs, lstVideoFile, strOutFile)
def WriteVDScript(lstSubs, strJsFile, lstVideoFile, strOutFile, strSrcFile="
", nHLMinFrms=0):
#print lstSubs, strJsFile, lstVideoFile, strOutFile, strSrcFile,
nHLMinFrms
if strSrcFile=="":
fpSr=sys.stdout
else:
fpSr=open(strSrcFile, 'w')
fpJs=open(strJsFile, 'w')
if len(lstVideoFile)>0:
fpJs.write('VirtualDub.Open("%s","",0);\n' % (lstVideoFile[0
]))
for n in range(1,len(lstVideoFile)):
fpJs.write('VirtualDub.Append("%s");\n' % (
lstVideoFile[n]))

if g_nProMode == 1: # Compress mode, 1st Pass XVid/Mp3
fpJs.write('%s\nVirtualDub.subset.Clear();\n' % g_
strXVid1stScriptVD)
elif g_nProMode == 2: # Copy Mode
fpJs.write('VirtualDub.video.SetMode(0);\nVirtualDub.audio.
SetMode(1);\nVi
rtualDub.subset.Clear();\n')

n=1
nFrames=0
for [id, t1,t2,text] in lstSubs:
if t2>t1+nHLMinFrms:
fpJs.write('VirtualDub.subset.AddRange(%i,%i);\t// %
s\n' % (t1, t2-t1, te
xt.replace("\n", " _LR_ ")))
if text== "":
fpSr.write("%i\n%s --> %s\n%i\n\n" % (n,
FloatToTimeStr(nFrames/g_fFPS,'
,'), FloatToTimeStr((nFrames+t2-t1)/g_fFPS,','), n))
else:
fpSr.write("%i\n%s --> %s\n%s\n\n" % (n,
FloatToTimeStr(nFrames/g_fFPS,'
,'), FloatToTimeStr((nFrames+t2-t1)/g_fFPS,','), text))
nFrames += t2-t1
n+=1

if g_nProMode == 1: # Compress mode, 2nd Pass XVid/Mp3
fpJs.write('VirtualDub.SaveAVI("%s");\n' % strOutFile)
fpJs.write('%s\n' % g_strXVid2ndScriptVD)
fpJs.write('VirtualDub.SaveAVI("%s");\n' % strOutFile)
elif g_nProMode == 2: # Copy Mode
fpJs.write('VirtualDub.SaveAVI("%s1");\n' % strOutFile)
fpJs.write('VirtualDub.Close();\n')
fpJs.write('VirtualDub.Open("%s1","",0);\n' % strOutFile)
fpJs.write('VirtualDub.video.SetMode(0);\nVirtualDub.audio.
SetSource(1);\n
VirtualDub.audio.SetMode(1);\n')
fpJs.write('%s\n' % g_strMp3ScriptVD)
fpJs.write('VirtualDub.SaveAVI("%s");\n' % strOutFile)

fpJs.write('VirtualDub.Close();\n')
fpJs.close()

【在 g*****y 的大作中提到】
: 不过添score是下一步的事了,你给贴一下你那个可以按points长短
: 自动节选points的script吧。

g*****y
发帖数: 7271
13
Cool! Thanks

【在 a**s 的大作中提到】
: def ReadVDScript(strJsFile):
: lstSubs=[]
: lstVideoFile=[]
: strOutFile = ""
: fpJs=open(strJsFile, 'r')
: strScript=fpJs.read()
: fpJs.close()
:
: # Get videos source(s)
: # VirtualDub.Open("2012.12.08.vs.Tim.avi","",0);

a**s
发帖数: 9606
14
1. 下载VirtualDub
http://virtualdub.sourceforge.net/
2. 下载并安装Plugin
http://codecpack.co/download/FFInputDriver.html
下载后解压缩到VirtualDub安装目录下的Plugin目录 (或者Plugin32/Plugin64)
3. 下载安装 XVid 或者 X264 encoder
xvid: http://www.xvid.org/Downloads.15.0.html
h264: http://sourceforge.net/projects/x264vfw/
俺习惯用XVid, 这里有个很老的设置介绍:
http://www.doom9.org/index.html?/xvid-vdub-final.htm
4. 安装好1-3, 尝试打开一个摄像机视频文件(可以drag-n-drop). 如果顺利打开,
就应该压缩没有问题了. 如果不能打开, 可能是缺相应格式的plugin. Google一
下应该能找到.
5. 按Ctrl+P, 视频压缩窗口会弹出, 选"XviD MPEG-4 CODEC", 点右下方Configure
按钮. 俺的录像一般是720p @ 60fps, 所以俺选的Profile是"XVid Highdef".
Encoding type俺一般用TwoPass. 先选"Twopass - 1st pass", 下面的Quality
Present先选General Purpose, 点"more..."按钮, 会让你自动设置成"User defined",
这里主要是更改Maximum I-frame interval. 默认值是每300帧加一个key frame, 对
于60fps来说就是每隔5秒一个key frame. 如果压缩后再加工的话就只能以5秒为单位
了. 有点太长. 俺改成30(0.5秒)方便进一步加工.
6. 按Ctrl+I是选择音频压缩格式. 按一般就直接用mp3
7. 可以先切割再压缩, 这样可以节省很多压缩时间(因为几乎只有1/3是有效时间).
切割用快捷键操作比较方便. 一般按Home选择起点, 按Ctrl+Right Arrow找到终点,
按End选择, 然后按Delete删除选中的区段. 如果直接按Right Arrow是一帧一帧的走,
太慢.
8. 剪切掉所有没用的区间后, 可以按F7进行压缩. 由于俺是用XVid 2-Pass, 得走2遍
才能完成压缩. VirtualDub支持Job list, 按Ctrl+shift+F7是添加任务到列表. 俺一
般先选1st pass, 添加列表. 然后Ctrl+P选2nd pass, 再添加列表. 然后再压缩.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
下面的如果直接用GUI来压缩可以忽略不看:
9. 任务添加完成后可以保存列表文件. 按F4会弹出任务列表窗口. 点File->Save Job
List可以保存. 俺一般是用自己的Script来压缩, 输入文件就是这个任务列表文件.
这是个文本文件, 大致结构就是:
VirtualDub.Open("E:\\VID00063.mp4","",0);
VirtualDub.audio.SetSource(1);
VirtualDub.audio.SetMode(0);
VirtualDub.video.SetMode(3);
VirtualDub.video.SetCompression(0x64697678,10,10000,0);
VirtualDub.video.SetCompData(3552,"AgAAAJgIAAAA8Ao...AAAAAAAAEAAAAAAA");
VirtualDub.subset.Clear();
VirtualDub.subset.AddRange(68369,110);
...
VirtualDub.subset.AddRange(88729,110);
VirtualDub.SaveAVI("C:\\2013.01.05.BillTian.vs.WhiteLion.avi");
VirtualDub.Close();
其中Open是打开输入文件, SetMode()是设置压缩方式, 0表示直接copy.
SetCompression是设置压缩格式. 如果总是用同样的压缩设置, 可以直接重复使用
这两行(SetCompData).subset.AddRange是保留的区间列表, 第一个参数是开始帧数,
第2个参数是区间长度(帧数).从这里就可以自动生成字幕文件来同步记录比分信息.
同时也可以知道每个Point的长度.
10. 设置好Script(任务列表)后, 就可以通过命令行或者GUI来进行压缩. 命令行
格式是: VirtualDub.exe /x /s script.file
"/x" 是压缩完成后自动关闭VirtualDub.
Tips:
剪切和压缩都挺费时的, 俺一般每剪4-5分钟就保存一次任务列表, 让script开始压缩
同时继续剪切其余的. 要注意的一点是手工删除最后一行未剪切的AddRange(xxx,xx).
g*****y
发帖数: 7271
15
赞,有空试一下。

【在 a**s 的大作中提到】
: 1. 下载VirtualDub
: http://virtualdub.sourceforge.net/
: 2. 下载并安装Plugin
: http://codecpack.co/download/FFInputDriver.html
: 下载后解压缩到VirtualDub安装目录下的Plugin目录 (或者Plugin32/Plugin64)
: 3. 下载安装 XVid 或者 X264 encoder
: xvid: http://www.xvid.org/Downloads.15.0.html
: h264: http://sourceforge.net/projects/x264vfw/
: 俺习惯用XVid, 这里有个很老的设置介绍:
: http://www.doom9.org/index.html?/xvid-vdub-final.htm

v***s
发帖数: 1893
16
好复杂。
l********3
发帖数: 510
17
有没有Mac版本的
s***i
发帖数: 6149
18
没有,iMovie就够了

【在 l********3 的大作中提到】
: 有没有Mac版本的
g*****y
发帖数: 7271
19
你的script可不可以给几个样本看看?还可以加score是么?

【在 a**s 的大作中提到】
: 1. 下载VirtualDub
: http://virtualdub.sourceforge.net/
: 2. 下载并安装Plugin
: http://codecpack.co/download/FFInputDriver.html
: 下载后解压缩到VirtualDub安装目录下的Plugin目录 (或者Plugin32/Plugin64)
: 3. 下载安装 XVid 或者 X264 encoder
: xvid: http://www.xvid.org/Downloads.15.0.html
: h264: http://sourceforge.net/projects/x264vfw/
: 俺习惯用XVid, 这里有个很老的设置介绍:
: http://www.doom9.org/index.html?/xvid-vdub-final.htm

a**s
发帖数: 9606
20
不复杂, 其实就是切割保存而已. 其它的都是一次性操作. 设置好了
就一劳永逸了. 你上次那个plugin俺还没早, 为了加快进度, 回家前
不切割就直接发送压缩命令了.

【在 v***s 的大作中提到】
: 好复杂。
相关主题
Uploading Djokovic Vs Federer match再奔一个一般的打球吧
Semi Final Li.vs.Wozniacki 720p DownloadDolgopolov发球优势明显,为啥没人学
Li Na Vs Sharapova HDTVRip Download德粉们是关心则乱
进入Tennis版参与讨论
a**s
发帖数: 9606
21
那能加score, 得手工. 只是用script生成时间轴, score输出是
只是point 的计数. 这样播放时就知道正在播放哪个Point, 加字
幕就不会加到错误的地方了. 其实如果你还想更方便可以下载专
门制作字幕的软件, 例如时间机器之流的.

【在 g*****y 的大作中提到】
: 你的script可不可以给几个样本看看?还可以加score是么?
K****D
发帖数: 30533
22
Movie Maker最脑残的就是居然不允许多个clip一起设字幕,只能一个一个搞,这样
做比分活活累死。。。

【在 a**s 的大作中提到】
: 那能加score, 得手工. 只是用script生成时间轴, score输出是
: 只是point 的计数. 这样播放时就知道正在播放哪个Point, 加字
: 幕就不会加到错误的地方了. 其实如果你还想更方便可以下载专
: 门制作字幕的软件, 例如时间机器之流的.

z*********n
发帖数: 94654
23
你们太敬业了

【在 K****D 的大作中提到】
: Movie Maker最脑残的就是居然不允许多个clip一起设字幕,只能一个一个搞,这样
: 做比分活活累死。。。

g*****y
发帖数: 7271
24
不过添score是下一步的事了,你给贴一下你那个可以按points长短
自动节选points的script吧。

【在 a**s 的大作中提到】
: 那能加score, 得手工. 只是用script生成时间轴, score输出是
: 只是point 的计数. 这样播放时就知道正在播放哪个Point, 加字
: 幕就不会加到错误的地方了. 其实如果你还想更方便可以下载专
: 门制作字幕的软件, 例如时间机器之流的.

a**s
发帖数: 9606
25
def ReadVDScript(strJsFile):
lstSubs=[]
lstVideoFile=[]
strOutFile = ""
fpJs=open(strJsFile, 'r')
strScript=fpJs.read()
fpJs.close()

# Get videos source(s)
# VirtualDub.Open("2012.12.08.vs.Tim.avi","",0);
# VirtualDub.append("2.MOV")
n1 = strScript.find('.Open') + 5
if n1>4:
n1 = strScript.find('"', n1) + 1
lstVideoFile.append(strScript[n1:strScript.find('"', n1)])
n1 = strScript.find('.Append', n1) + 7
while n1>6:
n1 = strScript.find('"', n1) + 1
lstVideoFile.append(strScript[n1:strScript.find('"', n1)])
n1 = strScript.find('.Append', n1) + 7

# Get all segments and its comments
# VirtualDub.subset.AddRange(8160,131); // 15:0
n1 = strScript.find('.AddRange(', n1) + 10
while n1>9:
n2=strScript.find(')', n1)
(t1, t2) = strScript[n1:n2].split(',')
n3=strScript.find('\n', n2)
n1 = strScript.find('//', n2) + 2
if n1>1:
# Has comment
text = strScript[n1:n3].strip()
else:
text = ""
lstSubs.append([0, int(t1),int(t1)+int(t2),text.replace(" _
LR_ ", "\n")])
n1 = strScript.find('.AddRange(', n3) + 10

# Get strOutFile
# VirtualDub.SaveAVI("C:\\1.avi")
n1 = strScript.find('SaveAVI("', n1) + 9
if n1>8:
n2=strScript.find('.avi', n1)
if n2>-1:
strOutFile = strScript[n1:n2]
else:
strOutFile = strScript[n1:strScript.find('"', n1)]
return (lstSubs, lstVideoFile, strOutFile)
def WriteVDScript(lstSubs, strJsFile, lstVideoFile, strOutFile, strSrcFile="
", nHLMinFrms=0):
#print lstSubs, strJsFile, lstVideoFile, strOutFile, strSrcFile,
nHLMinFrms
if strSrcFile=="":
fpSr=sys.stdout
else:
fpSr=open(strSrcFile, 'w')
fpJs=open(strJsFile, 'w')
if len(lstVideoFile)>0:
fpJs.write('VirtualDub.Open("%s","",0);\n' % (lstVideoFile[0
]))
for n in range(1,len(lstVideoFile)):
fpJs.write('VirtualDub.Append("%s");\n' % (
lstVideoFile[n]))

if g_nProMode == 1: # Compress mode, 1st Pass XVid/Mp3
fpJs.write('%s\nVirtualDub.subset.Clear();\n' % g_
strXVid1stScriptVD)
elif g_nProMode == 2: # Copy Mode
fpJs.write('VirtualDub.video.SetMode(0);\nVirtualDub.audio.
SetMode(1);\nVi
rtualDub.subset.Clear();\n')

n=1
nFrames=0
for [id, t1,t2,text] in lstSubs:
if t2>t1+nHLMinFrms:
fpJs.write('VirtualDub.subset.AddRange(%i,%i);\t// %
s\n' % (t1, t2-t1, te
xt.replace("\n", " _LR_ ")))
if text== "":
fpSr.write("%i\n%s --> %s\n%i\n\n" % (n,
FloatToTimeStr(nFrames/g_fFPS,'
,'), FloatToTimeStr((nFrames+t2-t1)/g_fFPS,','), n))
else:
fpSr.write("%i\n%s --> %s\n%s\n\n" % (n,
FloatToTimeStr(nFrames/g_fFPS,'
,'), FloatToTimeStr((nFrames+t2-t1)/g_fFPS,','), text))
nFrames += t2-t1
n+=1

if g_nProMode == 1: # Compress mode, 2nd Pass XVid/Mp3
fpJs.write('VirtualDub.SaveAVI("%s");\n' % strOutFile)
fpJs.write('%s\n' % g_strXVid2ndScriptVD)
fpJs.write('VirtualDub.SaveAVI("%s");\n' % strOutFile)
elif g_nProMode == 2: # Copy Mode
fpJs.write('VirtualDub.SaveAVI("%s1");\n' % strOutFile)
fpJs.write('VirtualDub.Close();\n')
fpJs.write('VirtualDub.Open("%s1","",0);\n' % strOutFile)
fpJs.write('VirtualDub.video.SetMode(0);\nVirtualDub.audio.
SetSource(1);\n
VirtualDub.audio.SetMode(1);\n')
fpJs.write('%s\n' % g_strMp3ScriptVD)
fpJs.write('VirtualDub.SaveAVI("%s");\n' % strOutFile)

fpJs.write('VirtualDub.Close();\n')
fpJs.close()

【在 g*****y 的大作中提到】
: 不过添score是下一步的事了,你给贴一下你那个可以按points长短
: 自动节选points的script吧。

g*****y
发帖数: 7271
26
Cool! Thanks

【在 a**s 的大作中提到】
: def ReadVDScript(strJsFile):
: lstSubs=[]
: lstVideoFile=[]
: strOutFile = ""
: fpJs=open(strJsFile, 'r')
: strScript=fpJs.read()
: fpJs.close()
:
: # Get videos source(s)
: # VirtualDub.Open("2012.12.08.vs.Tim.avi","",0);

a**s
发帖数: 9606
27
周日突然想到通过字幕(比分)文件可以实现自动剪接出某个Player的
所有得分录像。于是加了2个函数实现此功能。贴一段自动剪出来的:
http://www.youtube.com/watch?v=NLbaNfOLQ2A&hd=1

【在 a**s 的大作中提到】
: 1. 下载VirtualDub
: http://virtualdub.sourceforge.net/
: 2. 下载并安装Plugin
: http://codecpack.co/download/FFInputDriver.html
: 下载后解压缩到VirtualDub安装目录下的Plugin目录 (或者Plugin32/Plugin64)
: 3. 下载安装 XVid 或者 X264 encoder
: xvid: http://www.xvid.org/Downloads.15.0.html
: h264: http://sourceforge.net/projects/x264vfw/
: 俺习惯用XVid, 这里有个很老的设置介绍:
: http://www.doom9.org/index.html?/xvid-vdub-final.htm

K****D
发帖数: 30533
28
这么短啊,估计手动编辑还快点,哈哈。

【在 a**s 的大作中提到】
: 周日突然想到通过字幕(比分)文件可以实现自动剪接出某个Player的
: 所有得分录像。于是加了2个函数实现此功能。贴一段自动剪出来的:
: http://www.youtube.com/watch?v=NLbaNfOLQ2A&hd=1

a**s
发帖数: 9606
29
嘘,别把G点给暴露出来了

【在 K****D 的大作中提到】
: 这么短啊,估计手动编辑还快点,哈哈。
1 (共1页)
进入Tennis版参与讨论
相关主题
Dolgopolov发球优势明显,为啥没人学发球认清现实
德粉们是关心则乱悲摧的Tiebreak
想看裸奔的请进!pusher 偶尔也玩进攻
裸奔拍卖试运行Billtian北加之行第一奔: vs. Whitelion
2010年终总决赛FedererVsNadal 720p下载谁介绍一下奔的流程?
法网录像下载Federer vs Djokovic 半决赛高清视频下载
有谁知道哪个video 网站能放长点的video?2008 Wimbledon Final is uploading now
Federer Vs Djokovic HDTVRip DownloadUploading Djokovic Vs Federer match
相关话题的讨论汇总
话题: n1话题: stroutfile话题: strscript话题: t1