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 | | v***s 发帖数: 1893 | | l********3 发帖数: 510 | | 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一起设字幕,只能一个一个搞,这样 : 做比分活活累死。。。
| | | 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 | | v***s 发帖数: 1893 | | l********3 发帖数: 510 | | 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 的大作中提到】 : 好复杂。
| | | 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 | | K****D 发帖数: 30533 | 28 这么短啊,估计手动编辑还快点,哈哈。
【在 a**s 的大作中提到】 : 周日突然想到通过字幕(比分)文件可以实现自动剪接出某个Player的 : 所有得分录像。于是加了2个函数实现此功能。贴一段自动剪出来的: : http://www.youtube.com/watch?v=NLbaNfOLQ2A&hd=1
| a**s 发帖数: 9606 | 29 嘘,别把G点给暴露出来了
【在 K****D 的大作中提到】 : 这么短啊,估计手动编辑还快点,哈哈。
|
|