作者falcon (falcon)
标题Re: [请问] 转档出现怪现象
时间Wed Dec 11 17:53:10 2013
刚刚不小心把文章删了
只好重发 (′゚д゚`)
这个给你参考
https://www.dropbox.com/s/y9nuoprdmaij98z/AutoRec.7z
把影片档拖给 AutoRecodec.bat 开启即可
qaac 需要安装 Apple Application Suport
QuickTime 或 iTunes 安装包内有
我已经在 qaac 目录下放入 Apple 的 dll
所以不需要安装 Apple Application Suport
如果不行的话还是安装看看
ffmpeg -i "输入档案" 参数 "输出档案"
qaac 参数 -o "输出档案" "输入档案"
使用 ffmpeg 解码为 WAV (PCM) 给 qaac 编码输出 M4A(AAC)
ffmpeg -i "输入档案" 参数 - | qaac 参数 --ignorelength -o "输出档案" -
ffmpeg -i "%~1" -vn -ac 2 -async 1 -f wav -y - | qaac -q 2 --tvbr 100 --ignorelength -o "%~dp1TempAudio.m4a" -
-vn 禁用视讯 -an 禁用音讯 -sn 禁用字幕
-ac 2 是 downmix 至 双声道(6即5.1,8即7.1)
如果你有多声道输出的话就删掉吧
-async 1 如果音讯有延迟则会插入空白部分填补
这样音讯和视讯一样长,就不会 不同步
qaac 的部分
-q 2 有最高校率
--tvbr 100 为 VBR 模式 指定输出品质 0~127 可选
ffmpeg -i "%~1" -i "%~dp1TempAudio.m4a" -c:a copy -map 0:v -map 1:a -vf scale='1280:trunc((1280/dar)/16+0.5)*16' -c:v libx264 -profile:v high -preset veryslow -x264opts crf=18:ref=4:bframes=5 -y "%~dp1%~n1.recode.mp4"
-c:a copy 是复制音讯
-map 0:v -map 1:a 筛选出 第一个(0)输入档的视讯 与 第二个(1)输入档的音讯
例 -map 0:1 筛选出 第一个输入档的第二个 track
例 -map 0:s:2 筛选出 第一个输入档的第三个 字幕track
-vf scale='1280:trunc((1280/dar)/16+0.5)*16
scale=宽:高
假输入档为 1440x1080 PAR=4/3
那输入档 dar 就是 (1440/1080)*(4/3)=16/9
1280/dar 就是输出高, trunc() 就是取整数,trunc(数值/16+0.5)*16 就是取16整数倍
不喜欢的话就删掉吧
缩到 1280x* 是因为 高解析度影片的位元速率都需要很大才能维持画质
否则还不如 Resize 缩小解析度
至於x264 我懒得调整细部参数
都是直接用 x264 preset + ref 或 x264 preset + h.264 level
详细请 Google...
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 1.173.98.192
※ 编辑: falcon 来自: 1.173.98.192 (12/11 17:55)
※ 编辑: falcon 来自: 1.173.98.192 (12/11 18:06)
※ 编辑: falcon 来自: 1.173.98.192 (12/11 18:37)
1F:推 ThisIsNotKFC:推分享 12/11 18:51
※ 编辑: falcon 来自: 1.173.98.192 (12/12 01:25)
2F:→ y3k:<=不会用ffmpeg 和时代脱节的废渣orz 12/12 09:37
3F:→ falcon:别说得那麽难听嘛,MEGUI配AVS自动产生,的确好用 12/12 11:46
4F:→ falcon:但 AviSynth 很久没更新了,一堆问题 12/12 11:46
5F:→ falcon:现在有类似 AviSynth 的替代方案 - VapourSynth 12/12 11:47
※ 编辑: falcon 来自: 1.173.98.192 (12/12 11:58)
6F:→ james1201:AVS一堆问题? 只有不会用的人才一堆问题 12/12 12:14
7F:→ james1201:而且AVS+ 正由另一群人在开发中 目标是原生多线程+x64 12/12 12:15
8F:→ james1201:VPS现在开发的还不够完整 事实上不太能用 12/12 12:16
9F:→ falcon:VapourSynth 确实还没完善,需要再等等 12/12 12:44
10F:→ falcon:AVS 问题一堆不是我只有我在说而已 12/12 12:50
11F:→ falcon:AVS载入视讯後会流失一些讯息,必须靠第三方工具取得 12/12 12:53
12F:→ falcon:如 Pixel aspect ratio, display aspect ratio 12/12 12:54
13F:→ falcon:这对我而言很困扰,因为我要用C#或是BAT制作无脑转换方案 12/12 12:55
14F:→ falcon:我希望能高度自动化,减少麻烦,我才不喜欢AVS 12/12 13:00
15F:→ falcon:用AVS作会复杂很多,而ffmpeg单一工具就能解决大部分问题 12/12 13:06
16F:→ james1201:高度自动化会出的问题是因为源滤镜的选择 而非AVS的问题 12/12 14:56
17F:→ james1201:选到不适合的源滤镜就会直接载入错误影像 12/12 14:57
18F:→ james1201:甚至连载入都不能就终止了 12/12 14:58
19F:→ falcon:常用demuxer decoder,ffmpeg都有内建,会自动载入合适的 12/12 15:32
而 resize 是最基本东西,但使用AVS要自动化处里还真难搞
变形显示比例的 Pixel Aspect Ratio, Display Aspect Ratio
假设来源是以下...
704x480, NTSC 16:9 (PAR 40:33), DAR 1.78:1
720x480, NTSC 16:9 (PAR 40:33), DAR 1.82:1
1440x1080, PAR 4:3, DAR 1.78:1
ffmpeg 写个 function 即可自动 Resize,不必手动计算输入
无论来源 解析度 PAR DAR 如何,都能正确处理
输出: 1280x* (取 mod 16), 自动PAR(令DAR与来源相同)
scale='1280:trunc((1280/dar)/16+0.5)*16'
输出: 宽<1280 & 高<720 (取 mod 16), PAR 1:1
scale='min(1280,trunc((720*dar)/16+0.5)*16):min(720,trunc((1280/dar)/16+0.5)*16)',setsar=sar=1/1
输出: Letterbox, 720x480, PAR 40:33
scale='min(720,trunc((480*33/40*dar)/16+0.5)*16):min(480,trunc((720*40/33/dar)/16+0.5)*16)',pad='w=720:h=480:x=(ow-iw)/2:y=(oh-ih)/2',setsar=sar=40/33
而 AVS 可以用来源的宽高计算 DAR
但如果 PAR 不是 1:1,则会得到错误的DAR
只能呼叫第三方程式取得原始 DAR 或 PAR 後将 resize function 插入 AVS
※ 编辑: falcon 来自: 1.173.98.192 (12/12 15:33)
※ 编辑: falcon 来自: 1.173.98.192 (12/12 15:35)
※ 编辑: falcon 来自: 1.173.98.192 (12/12 15:40)
20F:→ falcon:VFR的timecode以及AudioDelay,AVS好像能用ffms自动处理 12/12 17:04
21F:→ falcon:但速度比lavf慢,支援格式也较少 12/12 17:04
22F:→ falcon:AVS相对也比较消耗资源,相同filters、decoder 12/12 17:10