找回密码
 立即注册

QQ登录

只需一步,快速开始

教程经验总索引TVMW5/小日本5 索引【视频转换】小日本4/TE4XP 索引【视频转换】TAW4 / TDA3 索引【DVD打包软件】
Nero 索引DVD-Lab 索引【DVD打包软件】编解码器 索引 【必读】固顶帖011号
查看: 4156|回复: 0

[经验] AVS加载MTS高清视频的正确方法,防止花屏

[复制链接]

9328

威望

300

金钱

1万

贡献

管理员

自由的灵魂

积分
99875
主题
5265
回帖
26222
注册时间
2003-4-10
最后登录
2024-4-26
发表于 2011-11-6 13:41:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
来源:蓝色琴键的八度空间

松下LX5数码相机的720P高清摄像是以AVCHD Lite编码的MTS格式文件,码率高达15Mbps,随着拍高清短片逐渐增多,这些高清MTS视频文件越来越占硬盘,不得不需要压片,最简单的方法是把它扔到MediaCoder,再选X264编码器压至平均3500~6000Kbps。有时候我喜欢用AVS脚本对高清视频做一些简单的加工,如调节色彩,添加ASS格式字幕,淡入淡出等,然后在命令行运行X264裸压。以前用AVS加载视频都是惯用DirectShowSource语句,如:DirectShowSource ("F:\00012.MTS",FPS=25)。然而它对MTS高清格式兼容性不好,有时画面会出现花屏现象(表现为马赛克或大面积色块,画面支离破碎,严重扭曲),更令人烦恼的是在预览AVS时画面没有花屏,但压片之后花屏又出现了。

4f3b8e36c0fc9a670b55a906.jpg


起初我怀疑是系统的H264解码器和分离器版本问题,但是我装的完美解码明明是2011年版,LX5的MTS格式是在2010年就出来了,无论选用CoreAVC、FFDShow还是Cyberlink的H264解码器都可以正常播放MTS,因此解码器不可能有问题。

在用VirtualDubMod打开AVS脚本后,屏幕右下角的系统托盘会出现Haali的图标,说明Haali分离器在负责解析MTS的视频音频流。我注意到出现花屏的画面都是码率比较高的帧,Haali的默认缓冲区为8MB,我就想会不会是Haali的缓冲不足?于是尝试修改Haali的设置:运行regedit,在HKEY_CURRENT_USER\Software\Haali\Matroska Splitter下新建input.buffer.size的DWORD值,数值改为十进制的32768(代表32MB)。再次预览AVS,花屏的几率似乎减少了,但还是偶尔出现马赛克,修改缓冲区的办法还不是很奏效。

既然不是解码器和分离器的错误,问题很可能就落在DirectShowSource语句上了,因为以前已试验过该语句加载RMVB也偶尔出现马赛克。 于是上Doom9论坛寻找答案,发现人家都用DGAVCIndex处理TS、M2TS格式高清视频,与DVDRIP处理一样需要对视频音频流分别抽出,然后再作反交错处理。而我的MTS是逐行扫描,无需反交错,有没有更简单的办法?后来找到了《FFMPEGSource2 as replacement for DGAVCDec》一帖:http://forum.doom9.org/archive/index.php/t-151105.html

原来FFMpegSource2更好,与此相关的参考文章还有:
(1)中文说明
http://www.nmm-hd.org/doc/index.php?title=FFmpegSource2&variant=zh-cn
(2)插件下载
http://code.google.com/p/ffmpegsource/

DirectShowSource一条语句可以同时处理视频音频流,而FFMpegSource2就需要分别打开视频音频:


  1. A = FFAudioSource(X)
  2. V = FFVideoSource(X)
  3. AudioDub(V, A)
复制代码

或直接用FFIndex()
  1. FFIndex(X)
  2. AudioDub(FFVideoSource(X), FFAudioSource(X))
复制代码


举个应用例子,编写AVS脚本将3段MTS录像串联,每段视频均要内嵌ASS格式字幕,每段之间使用白色淡入淡出特效来衔接:
  1. LoadPlugin("D:\Program Files\Pure Codec\codecs\vsfilter.dll")
  2. LoadPlugin("D:\Program Files\AviSynth 2.5\plugins\ffms2.dll")
  3. v1=FFVideoSource("j:\PRIVATE\AVCHD\BDMV\STREAM\00012.MTS").textsub("F:\temp\00012.ass").fadein0(25).fadeout0(25,color=$FFFFFF)
  4. a1=FFAudioSource("j:\PRIVATE\AVCHD\BDMV\STREAM\00012.MTS").fadeio(25)
  5. v2=FFVideoSource("j:\PRIVATE\AVCHD\BDMV\STREAM\00013.MTS").textsub("F:\temp\00013.ass").fadein0(25,color=$FFFFFF).fadeout0(25,color=$FFFFFF)
  6. a2=FFAudioSource("j:\PRIVATE\AVCHD\BDMV\STREAM\00013.MTS").fadeio(25)
  7. v3=FFVideoSource("j:\PRIVATE\AVCHD\BDMV\STREAM\00014.MTS").textsub("F:\temp\00014.ass").fadein0(25,color=$FFFFFF)
  8. a3=FFAudioSource("j:\PRIVATE\AVCHD\BDMV\STREAM\00014.MTS").fadeio(25)
  9. all=AudioDub(v1, a1)+AudioDub(v2, a2)+AudioDub(v3, a3)
  10. return (all)
复制代码


从预览脚本到X264压片,花屏现象不再复发,试验成功,FFMpegSource2果然不同凡响。

81362b66847fea72aa184cef.jpg


上述的AVS脚本同时处理视频和音频流,可以将此脚本直接拖到MediaCoder里转格式,还可以在TMPGEnc DVD Author直接打开脚本转成DVD,如果不需要将音频转格式,可以将脚本的关于音频的语句去掉,然后到命令行裸压。

因此以后凡用AVS脚本处理MTS视频就要避免使用DirectShowSource,而要改用FFMpegSource2。但使用FFMpegSource2的缺点是一开始打开视频音频流需要较长的时间,会留下*.ffindex临时文件,需要手工清除临时文件。

PS:MTS格式的音频是48Khz 192Kbps的AC3格式,如果想提取AC3音频,可以用Megui自带的HD Streams Extractor(在Megui界面里按快捷键Ctrl+F7)打开提取。

4b12f410c70b3656233f2e61.jpg


来源:http://hi.baidu.com/scott0902/blog/item/a593a80995374697d0581bae.html

IsaacZ的发言中如果提到任何字母缩写或专有名词,在本论坛中一般都能搜索到。点此立即搜索点拨论坛。如有搜索不到的,请尝试搜索百度百科,或者跟帖提问。
发帖前请注意看置顶帖。如果你发现自己的问题没有得到回答,说明你的问题提错了地方或者提问前未先阅读本版规则固顶帖011号
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|点拨论坛

GMT+8, 2024-4-26 22:04 , Processed in 0.175380 second(s), 7 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表