megui吧 关注:5,467贴子:37,791

【megui】以前压制mp4遇到的若干问题 多年来的总结

只看楼主收藏回复

理论这东西不懂 都是老外搞出来的 实践中遇到很多问题 到处求教未果 自己翻遍网络 综合了各种经验和处理方法 记录下来 希望有所帮助 如果中间有错误或更好的解决办法 请不啻指证:
1、第一步avs保存报错:cannot open the file
如果遇到这个,请用记事本打开生成的avs文件(虽然报错,但仍然会生成简短的avs文件;如果没有,用正常的avs文件复制一个)
第一行 AVISource 函数(或mkvSource、或其他函数)改成 DirectShowSource
这是avs本身bug造成的,DirectShowSource通吃所有视频
2、x264参数设置
现在你去翻阅大部分的网络教程,100%都是叫你auto 2pass模式,自己设置个码率。
本人非常疑惑,一个视频多大的码率才合理?
我查阅了很多地方,根据众网友的经验和实际结果,我认为以官方megui推荐为主:crf模式。
严格的说:是CQ模式(最下面一项)的crf参数。CQ是固定质量模式,并不是无条件满足大码率增加体积,而是根据片源自动分析恰当的码率,如果压出来1M,说明这是必需的;如果400K,说明本片低码率足矣。
auto 2pass 是平均码率 类似线性函数
crf是动态加权码率 类似正态分布
2pass会将整个视频尽量往你设定的码率靠近;而crf是根据视频质量动态调整码率,平静的画面低码率,激烈的画面高码率,使得视频在合理的清晰度下使用最小的码率。问题的关键:你怎知道视频多少算合理!
同一视频2pass 768K出来700M(无音频),均码768K,最大1500K;crf 23出来500M(无音频),均码400k,最大4500K;
可以看出激烈画面2pass人为压缩到1500K,损失质量;而平静画面400k足矣,但2pass却填充到768K附近,虚增体积,质量没变,只因要达到768K的均码。如果你预算最大值为4500K,则均码768k就会变成最低码率,体积虚增。
我始终认为,人为主观定义码率是不科学的、武断的,最小的体积提供最恰当的清晰度才是最优的。x264官方推荐的就一定有其道理,每个片子自动分析码率是最恰当的。
这里有个问题,如果用crf分析第一遍,第二遍用分析出的crf码率来压制,就是1pass crf + 2pass模式,岂不是最优?
我开始以为是这样,但实质上,还是受限于2pass均码压制的限制,第二遍会破坏crf动态加权的码率分布,导致码率不是根据片源质量而是根据设定的码率压缩,crf的效果丧失,又回到2pass的老路上,得不偿失。
3、音频
nero aac LC(低复杂性 就是itunes m4a的编码)不要选HE
我选择64k 1.5小时大约55M。96K大约85M。我在iphone和ipad上分辨不出音质。其实48K也足够了 除非在5.1那种家庭影院。个人喜好。
4、分辨率
因为本人只在iphone和ipad上观看,所以大于960的分辨率本人不考虑,那些在大屏幕全屏高清观看的情况本人不做了解。 目前流行的720*400。老视频基本640*480
5、FPS
几百年前,国内流行压制rmvb的时候,将片源的FPS 29-30调整为23.976是约定俗成的做法,据说是不影响质量而减少体积。
我继承了这种做法。直到压缩mp4时,分割视频+音频,遇到音频不同步的问题,问了很多地方,最后发现99%的原因是将fps降低的原因,而且降低fps23,居然将片源拉长了十几分钟!
我查阅网上资料,了解到fps23是古老的胶片视频技术和电视技术的交替产物,过去片源大多是胶片转制,现在基本是电子摄像,fps根本没必要压缩,而且体积并不会减少;相反,fps人为压缩后,会导致同一桢播放的时间拉长!引起不可预知的错误。片源是多少,就是多少。
6、avc档次
megui预设的iphone模式是avc基本档次,L3.1。实际上iphone支持avc高级档次,ipad不必说。
其实L4.1 iphone也能流畅播放
7、当你压缩音频,出来意外的发现有爆音!片源没有!
我查阅了很多地方,综合起来一种可能最大:音轨是后期制作时加上了标签(歌手、歌名等)这个信息nero aac会认为是音频一部分而编码,导致N秒的爆音!
遇到这种情况,请用megui自带“其他工具”——“mkvmerge GUI” 单独分离转换出音轨,再用nero aac压缩这个音轨,爆音消失!
8、第一次使用、设置megui会觉得很麻烦,但压缩效果值的。网上流行的那些暴风转码、media……、qq影音转码、狸猫转码、迅雷云转码、格式工厂和其他乱七八糟的转码软件,其效果差的让人想砸机器。本人忍无可忍后才转为megui。


1楼2013-06-23 09:20回复
    说明:本人所指mp4是指 视频h264编码+音频aac编码的格式 apple平台原生支持


    2楼2013-06-23 09:24
    收起回复
      1. DirectShowSource 是很难用的滤镜,除非你对windows编程和directshow系统研究很深(至少5年经验吧),否则不用为好。源滤镜有avisource有ffms有dss2有lwlibav有dg有dgdi有dgavc,不管哪个都比DirectShowSource 要好的多。
      2. CRF跑下来的压缩效率是公认最好的,比CQ和ABR(2pass)更好。CRF+2ndpass也是很常用的控制码率的方法,由rate control算法辅助计算,最后的成品并非是和2pass一样,而是介于两者之间,并且由自定义的rate control来控制偏向。
      3. 音频编码器apple的比nero的要更好一些。VBR要比你说的CBR/ABR也更好一些。试试看qaac --tvbr 80,你大概就会抛弃nero了。
      4. 分辨率是个人需求问题,和压片无关。把400p的视频放在全高清的显示器上就成一坨谜样固体了。


      IP属地:美国3楼2013-06-23 11:26
      收起回复
        5. FPS是视频的固有属性,原始FPS是多少,后期就不应该再改动。比如动画的TS是23.976024做pullup的29.97030,这种视频做一次ivtc以后就回到了原始的23.976024的fps了,以后就不应该再改动。这和约定俗成没有关系,这是正常的场匹配还原,是视频处理的必经步骤。多数综艺节目的帧率是59.94060的ips,做了deinterlace以后成为29.97030fps,以后就不应该再改动,这也是正确处理的必经步骤。rmvb时期的乱做一通就不用提了,有点经验的后期都不会那样去乱做。
        6. 这个基本是移动平台专用的设定,一般要考虑到weightp的支持度和level和vbv。但是mp4本身不是专为移动平台而制定的。PC平台上level一般可以上到4.2甚至5.1,或者直接上10bit。
        7. 从没遇到过。
        8. 那些软件多数是壳,核心都是ffmpeg或者mencoder,设置调的差了和核心没什么关系。


        IP属地:美国4楼2013-06-23 11:29
        收起回复
          1、DirectShowSource RPWT严重,不熟悉解码器的各种设置还是不用为好。
          2、同码下2pass码率曲线与crf几乎一致,这说明2pass并不会浪费任何码率做无意义的事。1st crf+2nd bitrate其实是最合理的,crf做出一次曲线给出基准码率,2pass再次微调。不过浪费近一倍的时间换取微量提升不怎么划算而已。
          3、音频在80K以下HE的效果要比LC好。48K那音质,用来听广播剧还差不多。
          4、目前主流720x480(SAR32:27),1280x720(SAR1:1),1440x1080(SAR4:3),1920x1080(SAR1:1)。各种切边另算。
          5、关于fps,那是你没有正确处理好的结果。现在片源通常都是24P、24t、还有30P这种奇异的(还有各种混杂的EP货)。IVTC、BOB、反正不管怎么处理总时间是不会变的。你发现时间变了那就是你用错的方法。
          6、请去看x264的fullhelp,里面给出了iphone的标准。
          - iphone/ipad: --profile high --level 4.1 --level-force
          7、原因在于解码器,NeroAACDec的解码也是各种RP,所以建议使用ffmpeg做pipe最保险,至少我用着没出一次错误。
          8、任何工具只要提供详尽的高级设置,并且你能研究好每项的用法,压出来的效果并不会很差。差的是现在的工具高级设置几乎没有。


          IP属地:内蒙古5楼2013-06-23 12:34
          收起回复
            谢谢指正 那如果加载avs报错 avisource() 怎样才能改正?不用DirectShowSource 无法压制
            文件本身avi 也无特别设置 大约7、8个文件里面会遇到1、2个 而且很多人都遇到过


            6楼2013-06-23 15:34
            收起回复
              qaac知道怎么设置了 在megui的‘设置’第三项 勾选qaac 重启就行
              进入qaac的设置界面

              -80 是不是指Q=80 如图所示;下面的profile 是选择lc为佳 还是he?还有个alac 这是什么参数?我试了试默认的lc Q=90的情况下 45分钟CD大约27M 音质还行 nero lc体积貌似远大于qaac 谢谢


              7楼2013-06-23 18:05
              收起回复
                还有一个问题困扰很久 关于视频合并
                以前压制出来CD1 CD2 ……想把两个文件合并 用第三方软件 效率不高 费时费力 还会破坏文件的引索
                最近学用avs脚本合并
                LoadPlugin("C:\Program Files\megui\tools\avs\directshowsource.dll")
                a1=Directshowsource("d:\1.mp4",fps=30).trim(0,0)
                a2=Directshowsource("d:\2.mp4",fps=30).trim(0,0)
                a3=Directshowsource("d:\3.mp4",fps=30).trim(0,0)
                a4=Directshowsource("d:\4.mp4",fps=30).trim(0,0)
                a=a1+a2+a3+a4
                return a
                出来的没声音!文件压缩编码都一样 而且源文件参数也一样 可以合并 我看有的地方说 如果声音采样率不同 会导致合并失败 这个要怎么定义?我可以压缩制定编码的声音 如64K 48K 但如果采用动态码率声音 那是不是意味着视频不能合并?
                还有 这样能在开始压制mp4时 将几个视频放一起压缩 avs怎么添加 有模版吗?
                谢谢


                8楼2013-06-23 19:26
                收起回复
                  野生压制不明觉历
                  至少我学会了一样,用CQ去压
                  多谢了


                  IP属地:上海9楼2013-06-25 09:28
                  收起回复
                    第七点挺有用的


                    10楼2013-06-25 14:52
                    回复
                      马克,学习了


                      11楼2013-07-04 03:34
                      回复
                        支持技术贴


                        IP属地:广东来自手机贴吧12楼2013-07-04 08:27
                        回复
                          test
                          ----------------
                          测试下 自己的贴子无法回帖了 写的一堆被删了


                          15楼2013-08-08 14:55
                          回复
                            一个大神跟我说决定效果的关键是码率和2pass....各种参数调整实际上对总体效果影响不大,就算提升也不是很多。。


                            IP属地:四川来自iPhone客户端17楼2013-08-10 18:42
                            回复
                              很有用的经验,mark一下


                              IP属地:四川来自手机贴吧18楼2013-09-17 14:30
                              回复