搜索 社区服务 统计排行 帮助
  • 1473阅读
  • 18回复

[聊天]如何壓製在大動作畫面下高品質而檔案控管小的 RMVB(or RM)

楼层直达
级别: 版主
注册时间:
2002-12-02
在线时间:
0小时
发帖:
3002
因為常有網友這麼想

高速畫面的影音RAW下
做成 rm/rmvb 一定不及 avi 的畫質

那就想到要如何改善呢?
並且保有 rm/rmvb 的優勢設定

首先使用 EHQ 是一定的
再來是bitrate : 500~1900 應該夠了
而 FPS : 30 預設值

這裡
使用HPP9壓制: EHQ_50/450-900_kbps/FPS_30
來源檔: [640*480/742_kbps/120_fps].avi
方法: 將 [FPS]-ptr 改成 30 (速度變慢 4x)
再用 AVS 加快速度 4x,由於 AviSynth 是無損 Frame 所以理論上壓制時不會 dropping frame
如此就達到 120FPS 的HPP9壓制

[待續~] PS.看反應情形 ^^(研究很久)

级别: 骑士
注册时间:
2003-04-17
在线时间:
0小时
发帖:
1338
只看该作者 18楼 发表于: 2003-12-31
大多数格式,用AVS2.53+VDM都能搞定;)

EMULE ID:yzj[eDtoon][CHN][lh.2y.net][VeryCD]这个现在比较少用
AMULE ID:yzjamule[CHN][TLF][eDtoon][VeryCD] 持续运行中
级别: 骑士
注册时间:
2003-04-17
在线时间:
0小时
发帖:
1338
只看该作者 17楼 发表于: 2003-12-31
引用
最初由 weilai 发布
謝謝大家的回復 ^^
講了這麼多還是來看實際方法

~~~~~AVS 範本如下~~~~~
V=AVISource("[[30FPS]-ptr之120fps.AVI].avi",False,"YUY2")
V=V.ConvertFPS(7.5,zone=80,vbi=45).AssumeFPS(30)
LoadPlugin("mpasource.dll")
A=MPASOURCE("120fps.mp3")
Audiodub(V,A)

重點就是第二行根據AviSynth所言ConvertFPS及AssumeFPS都是只針對[FPS]-ptr
而不改變RawTotalFrame count所以是無損frame
又透過改120fps.avi的檔頭使HPP9認可120fps.avi進行壓制(將原 120fps.avi+[120FPS]-ptr 改成 120fps.avi+[30FPS]-ptr)
及透過組合ConvertFPS.AssumeFPS達到加速播放
所以要求

後續:
首先是證實AVS範本播放時無dropping frame之情形:很簡單這裡用 MPC 並顯示統計欄方式播放證實沒有掉frame(只是Sync Offset及Jitter會提升)
再來是證實壓制出來的rmvb真的有達到不同於它法的高品質嗎?
當然敢說就是經過證實
做了四種方法的截圖(比較圖是動態畫面下的其中一個frame編號)
證實了理論

PS. 這裡不貼出來了,因為圖是 640x480 又如果用有損壓縮格式會難以比較
所使用的截圖是 .bmp 並針對線條模糊地帶、輪廓及線條完整度等
同120fps.avi之截圖放在一起做"放大"肉眼比對

而在壓制成的 file size 方面幾乎一樣(7秒控制在6K以內)
120fpsRAW_SelectEvery(2,0).rmvb 大於
120fpsRAW_SelectEvery(4,0).rmvb 大於
120fpsRAW_ChangeFPS(30).rmvb 大於
120fpsRAW_ChangeFPS(59.94).rmvb 等於
120fpsRAW_[30FPS]-ptr_4x快進播放.rmvb

最後就是如何 120fps.avi+[120FPS]-ptr 改成 120fps.avi+[30FPS]-ptr
很簡單使用AVI Frame Rate Changer 這個小工具(類似 AVI FourCC Code Changer 不用一秒就 OK)

最後要講的就是要這麼做的話最好是備份120fps.avi再做
因為發現AVI Frame Rate Changer只可變小不可放大(也就是可 120fps->30fps 不可 30fps->120fps)
如果你120fps.avi還不想這麼早delete的話

END

最烦的一般效果比较好,顶!

EMULE ID:yzj[eDtoon][CHN][lh.2y.net][VeryCD]这个现在比较少用
AMULE ID:yzjamule[CHN][TLF][eDtoon][VeryCD] 持续运行中
级别: 圣骑士
注册时间:
2003-04-13
在线时间:
21小时
发帖:
1669
只看该作者 16楼 发表于: 2003-12-29
引用
最初由 skywalker 发布
为什么要先转成30fps再convertfps(7.5), 然后再 assumefps(30)呢.......
直接用convertfps(30)不是一样吗..........
使用这种方法的问题在于原来24fps的东西变成了30fps......
这样就会造成一些多余的帧..........
不用VFR(动态帧率)的话.........
hybrid的东西无论怎么弄都无法无损的交给encoder压出来的............
真正的120fps的东西我从来没有见过...........
大概普通人能拿到的只有NTSC和PAL制式的帧率............
现在大概只有把文件fps降低一半.........
再在播放的时候提高了(reclock也好,其他播放器自带的功能也好).........
好在xvid的不需要担心这个问题...........
因为xvid自带的decoder会自动跳过null frame.........
所以建议要压120fps的最好用mpeg4来压(xvid,divx,ffmpeg等等)...........
可是對著120fps wmv的片子...難道要重壓成xvid再壓成rmvb嗎?

有事請pm我!   我的廢棄日記 ← 請多多光臨! <(_ _)>

----------------------

-E-D-2-K-----歡-迎-加-為-好-友-!-------
[KOR][TLF][eDtoon][CHN]rt87
[eDtoon][popgo][dmhy][TLF][CHN][KOR][ARC]roytam1
------------------------------
我的Winamp正在播放的歌曲:
级别: 版主
注册时间:
2001-11-21
在线时间:
0小时
发帖:
2803
只看该作者 15楼 发表于: 2003-12-20
为什么要先转成30fps再convertfps(7.5), 然后再 assumefps(30)呢.......
直接用convertfps(30)不是一样吗..........
使用这种方法的问题在于原来24fps的东西变成了30fps......
这样就会造成一些多余的帧..........
不用VFR(动态帧率)的话.........
hybrid的东西无论怎么弄都无法无损的交给encoder压出来的............
真正的120fps的东西我从来没有见过...........
大概普通人能拿到的只有NTSC和PAL制式的帧率............
现在大概只有把文件fps降低一半.........
再在播放的时候提高了(reclock也好,其他播放器自带的功能也好).........
好在xvid的不需要担心这个问题...........
因为xvid自带的decoder会自动跳过null frame.........
所以建议要压120fps的最好用mpeg4来压(xvid,divx,ffmpeg等等)...........

live id: liusu119@hotmail.com
email: liusu119@gmail.com
级别: 侠客
注册时间:
2003-08-27
在线时间:
1小时
发帖:
508
只看该作者 14楼 发表于: 2003-12-17
weilai很喜歡研究
我幫你把這篇頂上去

來自
皓月狼影
bbs.lloup.com
级别: 版主
注册时间:
2002-12-02
在线时间:
0小时
发帖:
3002
只看该作者 13楼 发表于: 2003-12-17
[補充]
用DV拍攝一高速顯示的影像
這裡形容的不是很完美
修正補充一下
用DV拍攝一高速顯像電影
(膠捲捲動的速度比一般電影還快且解析度高,當然上面的方法無法達到提高解析度)

其實這個 avs 範本最好是用在真正的 120 FPS 視訊下
當然據實驗得到的結論(用的是夾雜NULL frame)
非正真 120fps.avi 也有一定效果(壓制 avi 也行)
原因就在
前後兩 raw 差異(變動量)越小
運算出的 decoder-frame 就不會越模糊
(效果有點雷同前面提到的 高速顯像電影,眼睛就好比decoder)

引用
最初由 tct66 发布
不要用到Converttoyuy2()
這是有損的

用VDM看以下腳本,除了原來是24fps的畫面
每一幅都會變換,證明是沒有掉幅的

AviSource("120fps.avi")
ChangeFps(30)


謝謝提醒
那是否 AVISource("120fps.avi",False,"YUY2")
該換成 AVISource("120fps.avi",False,"RGB32") 會比較好?

Q: 試了一下 ConvertFPS 要求要使用 YUY2 所以維持原 Scripts

其實這一篇主要是 理論加實驗 並 比較結果 來支持自己發表的
特別是指在 rmvb encoder 上

级别: 侠客
注册时间:
2003-08-27
在线时间:
1小时
发帖:
508
只看该作者 12楼 发表于: 2003-12-17
不要用到Converttoyuy2()
這是有損的

用VDM看以下腳本,除了原來是24fps的畫面
每一幅都會變換,證明是沒有掉幅的

AviSource("120fps.avi")
ChangeFps(30)

來自
皓月狼影
bbs.lloup.com
级别: 版主
注册时间:
2002-12-02
在线时间:
0小时
发帖:
3002
只看该作者 11楼 发表于: 2003-12-17
謝謝大家的回復 ^^
回歸正題 如何壓製在大動作畫面下高品質而檔案控管小的 RMVB(or RM)

要求:
首先要提供給 Encoder 一份無損的raw-frame
再來是綿密的連續frame
最後就是 Encoder 的高品質設定

方法:
(1)使用 AviSynth 充當前端 frame-sever,提供可靠的 raw 資料流
(2)使用高框架率(frame/second)這裡用 120fps
(3)使用HPP9之 EHQ / FPS:30 / VBR bitrate

實現:(這裡採用視訊音訊分離作業方式)

V=AVISource("120fps.avi",False,"YUY2")
LoadPlugin("mpasource.dll")
A=MPASOURCE("120fps.mp3")
Audiodub(V,A)
結果:不被 RV9-Encoder 接受

[改1]
V=AVISource("120fps.avi",False,"YUY2").ChangeFPS(59.94)

V=AVISource("120fps.avi",False,"YUY2").SelectEvery(2,0)
結果:[FPS]-ptr指標降為 60,RawTotalFrame 被刷掉一半

[改2]
將 120fps.avi 之[FPS]-ptr指標 改成 30 (因為RV9-Encoder只接受59.94以下,為方便運算取30)
V=AVISource("120fps.avi",False,"YUY2")
結果:通過壓製,但壓製成的 rmvb 播放速度只有原 120fps.avi 的 1/4

[改3]
同樣將 120fps.avi 之[FPS]-ptr指標 改成 30
V=AVISource("120fps.avi",False,"YUY2").[加速播放function]
結果:通過壓製且壓製成的 rmvb 播放速度同原 120fps.avi

討論:
有無達到Encoder得到的源是完整的: 是的(沒用到changing the frame count的Scripts)
其過程就像是 用DV拍攝一高速顯示的影像,不同於[改1]用DV拍攝一低速顯示的影像(會因此頓頓或不連續)
那有人會問難道快速播放不會使 Encoder 來不及壓制嗎?
答案是不會
壓制(Encoder)不同於播放(Decoder)
Decoder會因當時播放環境有可能 dropping 掉frame
Encoder是針對MEM([FPS]-ptr)容器重新編碼
其流程如下:
Encoder拍攝 <--- [MEM()]+[FPS]-ptr+改[Speed]-ptr成4 <===不改變frame_count+改[FPS]-ptr成30=== [Rawframe....]+source_FPS(120)

播放器下的換算是:
RealTime = Time(frame長度,單位秒) / [Speed]-ptr = RawTotalFrame / [FPS]-ptr

講了這麼多還是來看實際方法

~~~~~AVS 範本如下~~~~~
V=AVISource("[[30FPS]-ptr之120fps.AVI].avi",False,"YUY2")
V=V.ConvertFPS(7.5,zone=80,vbi=45).AssumeFPS(30)
LoadPlugin("mpasource.dll")
A=MPASOURCE("120fps.mp3")
Audiodub(V,A)

重點就是第二行根據AviSynth所言ConvertFPS及AssumeFPS都是只針對[FPS]-ptr
而不改變RawTotalFrame count所以是無損frame
又透過改120fps.avi的檔頭使HPP9認可120fps.avi進行壓制(將原 120fps.avi+[120FPS]-ptr 改成 120fps.avi+[30FPS]-ptr)
及透過組合ConvertFPS.AssumeFPS達到加速播放
所以要求

後續:
首先是證實AVS範本播放時無dropping frame之情形:很簡單這裡用 MPC 並顯示統計欄方式播放證實沒有掉frame(只是Sync Offset及Jitter會提升)
再來是證實壓制出來的rmvb真的有達到不同於它法的高品質嗎?
當然敢說就是經過證實
做了四種方法的截圖(比較圖是動態畫面下的其中一個frame編號)
證實了理論

PS. 這裡不貼出來了,因為圖是 640x480 又如果用有損壓縮格式會難以比較
所使用的截圖是 .bmp 並針對線條模糊地帶、輪廓及線條完整度等
同120fps.avi之截圖放在一起做"放大"肉眼比對

而在壓制成的 file size 方面幾乎一樣(7秒控制在6K以內)
120fpsRAW_SelectEvery(2,0).rmvb 大於
120fpsRAW_SelectEvery(4,0).rmvb 大於
120fpsRAW_ChangeFPS(30).rmvb 大於
120fpsRAW_ChangeFPS(59.94).rmvb 等於
120fpsRAW_[30FPS]-ptr_4x快進播放.rmvb

最後就是如何 120fps.avi+[120FPS]-ptr 改成 120fps.avi+[30FPS]-ptr
很簡單使用AVI Frame Rate Changer 這個小工具(類似 AVI FourCC Code Changer 不用一秒就 OK)

最後要講的就是要這麼做的話最好是備份120fps.avi再做
因為發現AVI Frame Rate Changer只可變小不可放大(也就是可 120fps->30fps 不可 30fps->120fps)
如果你120fps.avi還不想這麼早delete的話

END

级别: 版主
注册时间:
2001-11-21
在线时间:
0小时
发帖:
2803
只看该作者 10楼 发表于: 2003-12-17
对于非xvid的avi.......
现在只有把24fps和30fps的分离出来.........
全部转成24FPS........
然后再使用matroska的vfr工具来放...........
具体方法这里已经说明了.........
http://forum.doom9.org/showthread.php?s=&threadid=64314

live id: liusu119@hotmail.com
email: liusu119@gmail.com
级别: 侠客
注册时间:
2003-08-27
在线时间:
1小时
发帖:
508
只看该作者 9楼 发表于: 2003-12-16
再補充一點:
用avi60將24fps製成120fps,根據ffdshow的連續截圖,可知是
NNNNFNNNNF...,1秒共120幅
其中N代表null frame,F為原本的幅

用avi60將30fps製成120fps,根據ffdshow的連續截圖,可知是
NNNFNNNF...,1秒共120幅
其中N代表null frame,F為原本的幅

大家有興趣,自己去做個實際的操作

理論歸理論,實際的操作才是最重要的

來自
皓月狼影
bbs.lloup.com
级别: 侠客
注册时间:
2003-08-27
在线时间:
1小时
发帖:
508
只看该作者 8楼 发表于: 2003-12-16
剛剛到avs的網站看SelectEvery的解釋
SelectEvery(clip,2,0)=SelectEven(clip)
也就是截取偶數幅2,4,6,...
SelectEvery(clip,2,1)=SelectOdd(clip)
也就是截取奇數幅1,3,5,...
用以上的濾鏡作為壓制120fps的腳本是會掉幅的
因為120fps的avi是由24fps及30fps以avi60製成120fps後混合的
只選取Even(偶數)或Odd(奇數)幅來壓制,很多非null frames都被捨棄了

所以用xvid解碼去壓制120fps的方法是最好
若是120fps的wmv9,則才需用到avs腳本

ChangeFPS(30)


ps.另外SelectEvery(clip,4,0(,int a,int b,...))也是一樣不好
意思是截取被4除,餘數為0,a,b的幅

來自
皓月狼影
bbs.lloup.com
级别: 侠客
注册时间:
2003-08-27
在线时间:
1小时
发帖:
508
只看该作者 7楼 发表于: 2003-12-16
weilai,
根據我用ffdshow截圖120fps的avi(361~480幅)
及用avs截圖不更改BRP的設定壓制以下的腳本的avi成rm
AviSource("C:\120fps.avi")
trim(361,480)
ChangeFPS(30)

截出來的都是30幅

所以,壓制以下的腳本,是沒有掉幅的,有興趣你試試看

AviSource("C:\120fps.avi")
ChangeFPS(30)


補充:rm用avs截出第29,30幅是相同的,是因為採樣的原因
若是壓制整個avi,就不會有這個問題

來自
皓月狼影
bbs.lloup.com
级别: 小荷初露
注册时间:
2002-09-24
在线时间:
2小时
发帖:
121
只看该作者 6楼 发表于: 2003-12-16
给个脚本吧?
级别: 新手上路
注册时间:
2003-10-25
在线时间:
0小时
发帖:
96
只看该作者 5楼 发表于: 2003-12-16
真的是一点也看不懂啊…………
虽然我也想压制…………
快速回复

限150 字节
上一个 下一个