头像
yabbay
帖子: 62
注册时间: 2012-05-31 10:39
来自: Tokyo

【求助】avs4x264mod管道出现timecode问题

2012-07-03 1:02

这是在压10bit时候出现的问题 片源用的mkv
管道这样调用的(seek moe fast和safe一样不行)
avs4x264mod --x264-binary x264_10b --seek-mode safe --level 5.1 --crf 21.5 ......(中略)........ --tcfile-in "XXX.txt" --stats ".stats" -o "XXX.mp4" "XXX.avs"
avs这样调用timecode的
FFVideoSource("B:\XXX.mkv",timecodes = "B:\XXX.txt")
错误信息是

avs [info]: AviSynth 2.60, build:May 25 2011 [19:58:41]
avs [info]: Video colorspace: YV12
avs [info]: Video resolution: 1024x576
avs [info]: Video framerate: 24012/1001
avs [info]: Video framecount: 33390
avs4x264 [info]: "x264_10b" --level 5.1 --crf 21.5 ......(中略)........ --tcfile-in B:\XXX.txt --stats .stats -o B:\XXX
_v.mp4 --frames 33390 --timebase 1001 --input-res 1024x576 --input-csp i420
raw [info]: 1024x576p 0:0 @ 25/1 fps (cfr)
timecode [error]: automatic timebase generation failed.
Specify an appropriate timebase manually.
x264 [error]: timecode input failed
avs [error]: Error occurred while writing frame 0
(Maybe x264 closed)
请按任意键继续. . .

查看timecode确实生成了

如果去掉avs4x264mod直接压的话 x264_10b --level 5.1 --crf 21.5 ......(中略)........ --tcfile-in "XXX.txt" --stats ".stats" -o "XXX.mp4" "XXX.avs"
信息为正常
avs [info]: 1024x576p 0:0 @ 24012/1001 fps (cfr)
timecode [info]: automatic timebase generation 1/1000
x264 [info]: using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2
x264 [info]: profile High 10, level 5.1, 4:2:0 10-bit
[0.1%] 23/33390 frames, 0.54 fps, 12.57 kb/s, eta 17:06:23

片源并不是都不行 正片虽然出现管道无法输入timecode的问题 同一部动画的OP ED则可以
这是片源的大致信息
General
Unique ID : 174707109108159013454381206904475269553 (0x836F5D83D56F9CFFA9A15ED437A4B9B1)
Complete name : B:\XXX.mkv
Format : Matroska
Format version : Version 2
File size : 348 MiB
Duration : 23mn 11s
Overall bit rate mode : Variable
Overall bit rate : 2 096 Kbps
Encoded date : UTC 2012-05-24 12:59:34
Writing application : mkvmerge v5.5.0 ('Healer') built on Apr 6 2012 21:43:24
Writing library : libebml v1.2.3 + libmatroska v1.3.0

Video
ID : 1
Format : AVC
Format/Info : Advanced Video Codec
Format profile : High 10@L4.0
Format settings, CABAC : Yes
Format settings, ReFrames : 16 frames
Muxing mode : Header stripping
Codec ID : V_MPEG4/ISO/AVC
Nominal bit rate : 1 500 Kbps
Width : 864 pixels
Height : 480 pixels
Display aspect ratio : 16:9
Original frame rate : 23.976 fps
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 10 bits
Scan type : Progressive
Bits/(Pixel*Frame) : 0.121
Writing library : x264 core 120 r2164+649+26 fcfb618 tMod [10-bit@all X86]
Encoding settings : cabac=1 / ref=16 / deblock=1:1:1 / analyse=0x3:0x133 / me=umh / subme=11 / psy=1 / fade_compensate=0.00 / psy_rd=0.40:0.00 / mixed_ref=1 / me_range=32 / chroma_me=1 / trellis=2 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=0 / chroma_qp_offset=-2 / threads=12 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / fgo=0 / bframes=10 / b_pyramid=2 / b_adapt=2 / b_bias=0 / direct=3 / weightb=1 / open_gop=0 / weightp=2 / keyint=250 / keyint_min=23 / scenecut=40 / intra_refresh=0 / rc=2pass / mbtree=0 / bitrate=1500 / ratetol=10.0 / qcomp=0.60 / qpmin=0 / qpmax=45 / qpstep=4 / cplxblur=20.0 / qblur=0.5 / ip_ratio=1.60 / pb_ratio=1.50 / aq=1:1.00
Language : Japanese
Default : Yes
Forced : No

Audio
ID : 2
Format : FLAC
Format/Info : Free Lossless Audio Codec
Codec ID : A_FLAC
Duration : 23mn 11s
Bit rate mode : Variable
Channel(s) : 2 channels
Sampling rate : 48.0 KHz
Bit depth : 16 bits
Writing library : libFLAC 1.2.1 (UTC 2007-09-17)
Language : Japanese
Default : Yes
Forced : No
          .∧__,,∧
         ( ´・ω・`) ブルブル
          (つまくら) アリと明日(ant and tomorrow)
          `u―u´ レッツ・エッグ・ペイン(Let`s egg pain)

头像
06_taro
核心会员
核心会员
帖子: 998
注册时间: 2010-09-22 18:32
来自: United Kingdom
联系: 网站

Re: 【求助】avs4x264mod管道出现timecode问题

2012-07-03 1:40

這就是為什麼我之前一直不想添加自動補齊--timebase參數的原因…

首先這個timecode其實要么是有問題的,要么是沒問題但是timebase不是1001的,從後面x264自動生成的是1/1000這種有問題的數值就能看出來

標準NTSC視頻,輸入時fps應該是24/30/60,或者它們除以1.001,標準PAL視頻則是25/50
1. 24/30/60除以1.001,這種情況輸入的視頻應該也是以1001作為fpsden,而timecodes應該也是這樣,自動添加--timebase 1001是不會有問題的
2. 24/30/60,這種情況fpsden應該為1,自動添加--timebase 1
3. PAL,同2

因此正常來說,24/30/60fps且有1.001補正的NTSC視頻,它的timebase應該是1001/120000。TIVTC的自動2pass有時候部分幀會出18/1.001這樣的fps,這時timebase也應該是1001/360000。而PAL格式的timebase則應該是1/25或者1/50。

如果
1. 輸入的視頻是/1001格式,但是你想用一個其他timebase的timecodes,譬如PAL的
2. 輸入視頻與timecodes有一個是錯誤的,譬如非標準製作的視頻,用ffms直接抽的timecodes得到的非/1001的timecodes,或者載入視頻時得到了非/1001的clip
3. 其他非正常RP
那應該在命令行裡手動增加--timebase x/x的參數,這樣avs4x264mod就會直接用這個設定值,而不會自己判定並輸出給x264

按上面你給出的信息,這個視頻用ffms載入得到的fps是24012/1001這種奇怪的數字,我比較確定是這個視頻本身的問題,而抽出來的timecodes也因此非標準的1001(也包含用各種方式抽取的降低精度了的mkv的tc的情況,因為mkv內部的timestamp精度降低了,抽出來的timecodes本來就不是標準的/1.001的)

之前avs4x264mod不會自動增加--timebase,以至於x264對於pipe raw的輸入時,如果有tcfile-in就會直接使用raw的timebase,對NTSC來說變成了詭異的數值,譬如1/18030,而這種方式確實可以得到一個能用的timebase,但是這個timebase本身是錯誤的,所以這種方式是不好的,但是對於所有pipe tools都有這樣的問題。現在自動補齊--timebase,如果全部流程都正確的話就不會出現這種現象,而是正確地使用--timebase 1001,相對地如上面所說,如果流程不正確、不標準或者特殊情況的話你需要手動設定timebase以覆蓋avs4x264mod的判定。

譬如上面這種,如果你真的確定這個timecodes是你想要的沒有問題(就算不標準),請手動添加--timebase 1/1000參數。

但是要注意,如果是上面說的mkv非標準/1.001的timecodes問題的話,我個人建議先將timecodes按標準的方式修正,否則如果你要出的視頻格式也是降低timestamp精度的mkv的話問題不大,反正timebase都是詭異了的(mmg默認參數出來的mkv都是這樣,除非一開始在mkvmerge參數裡手動添加--timecode-scale 1);如果要出的是mp4,mp4裡的fps必然會英文錯誤的timebase變成奇怪的結果,很可能導致其兼容性有問題,譬如明明能播放60000/1001fps的PSP,播不了這樣做出來導致某些幀fps在58~62間浮動,從而超出60fps限制的視頻…

關於mkv的timestamp精度,看這個就一目了然了:
► 显示内容 mkv
如果是mp4的話:
► 显示内容 mp4
如果把下面這個timecodes用mp4封裝,抽取出來的timecodes是完全一樣沒有任何變化的
► 显示内容 vfr
而同樣的timecodes如果封裝成mkv(不加--timecode-scale 1),再抽取出來就變成了這樣
► 显示内容 被mkv艹過的破鞋
修復的方法有很多種,譬如用dsmux抽mkv裡的timcodes v1:

代码: 全选

mkv2vfr "input.mkv" NUL "output_tcv1.txt"
然後用各種方法進行批量替換,fps(逗號分隔的第三列)為23和24的都替換為23.976023,fps為29和30的都替換為29.970030,fps為59和60的都替換為59.940060,fps為其他數字(譬如TIVTC自動2pass搞出來的17.xxx之類的)根據情況處理,得到的新timcodes就是標準的了。

關於avs4x264mod自動添加--timebase做法,比較具體的描述我在這裡有寫過(英文)。

和seek-mode無關,不需要設置這個參數。seek-mode僅僅在你用了--seek參數的情況下才起作用,而且絕大部分avs(沒有TDecimate(mode=3)或者FFVideoSource("input.m2ts", seekmode=-1)這種無法非線性seek的情況)都可以使用fast,不會有任何問題。x264內部對avs輸入且有--seek參數時的seek方法就和avs4x264mod的seek-mode=fast一樣,連safe mode都沒有…
上次由 06_taro 在 2012-07-03 5:42,总共编辑 5 次。
つまんねー事聞くなよ!

I, personally, for me, believe (obviously sometimes) that my OS choice is right. That's me. I'm not telling you that you should believe it. Learn the facts, and the origins behind the facts, and make up your own damn mind. That's why you have one. (source)

Follow me: @06_taro

304——
为纪念伟大的宇宙史上最强压制304先生,联合国教科文组织决定,将每年的第304天,即平年的10月31日或者闰年的10月30日,定为世界304日。

头像
06_taro
核心会员
核心会员
帖子: 998
注册时间: 2010-09-22 18:32
来自: United Kingdom
联系: 网站

fixtc v1.0 - restore timecodes v1 to accurate NTSC value

2012-07-03 5:07

於是乾脆寫了個fixtc,修復tcv1的問題:
Download: fixtc-v1.0.7z
最新版见这里: http://www.nmm-hd.org/newbbs/viewtopic. ... =786#p7129

用法:
fixtc.exe "input_tcv1.txt" > "output_tcv1.txt"

E.g.
► 显示内容 修復前
► 显示内容 修復後
對一般的RP型mkv,用上一樓裡說的mkv2vfr先抽一個tcv1出來,然後用這個工具修一下,壓的時候用修復好的tcv1就行了…

tcv2就不寫了,計算PTS什麼的懶得搞,反正所有能抽v2的格式都可以直接抽v1,實在不行v2->v1也不麻煩…
上次由 06_taro 在 2012-07-16 1:08,总共编辑 6 次。
つまんねー事聞くなよ!

I, personally, for me, believe (obviously sometimes) that my OS choice is right. That's me. I'm not telling you that you should believe it. Learn the facts, and the origins behind the facts, and make up your own damn mind. That's why you have one. (source)

Follow me: @06_taro

304——
为纪念伟大的宇宙史上最强压制304先生,联合国教科文组织决定,将每年的第304天,即平年的10月31日或者闰年的10月30日,定为世界304日。

头像
yabbay
帖子: 62
注册时间: 2012-05-31 10:39
来自: Tokyo

Re: 【求助】avs4x264mod管道出现timecode问题

2012-07-03 8:45

Ant N tomorrow {:cat_17}
立马ありがたくいただくといたしますですますわ {:cat_11}
剩下的应该能自己解决了 再有问题偶再反映 {:cat_7}
          .∧__,,∧
         ( ´・ω・`) ブルブル
          (つまくら) アリと明日(ant and tomorrow)
          `u―u´ レッツ・エッグ・ペイン(Let`s egg pain)

头像
06_taro
核心会员
核心会员
帖子: 998
注册时间: 2010-09-22 18:32
来自: United Kingdom
联系: 网站

fixtc v1.2 - restore timecodes v1/v2 to accurate NTSC value

2012-07-04 0:33

今天囧然發現mp4裡timestamp的rounding error會隨幀數增長擴散,反倒是mkv不會(誤,純屬我腦殘沒注意幀號,mp4的timestamp完全沒有問題)
於是(所以就當作是出於哈茲卡西的原因)把修復v2的功能也加進去了——

Download: fixtc-v1.2.7z

Usage:
fixtc.exe "input_timecodes.txt" > "output_timecodes.txt"

E.g.

timecodes v1:
► 显示内容 修復前
► 显示内容 修復後
timecodes v2:
► 显示内容 修復前
► 显示内容 修復後
精度上應該足夠精確了,至少處理正常用到的timecodes肯定足夠了。
我做了一個6,000,000幀的timecodes來做regression test(做出來的timecodes文件正常精度下有96.6M),在這6,000,000幀內用mkvmerge砍精度,然後再用fixtc來修復,得到的修復結果裡沒有出現任何誤差。
實際上只要視頻長度不超出42949673s(差不多是11930小時 {:cat_1} )就應該不會出精度損失…
上次由 06_taro 在 2012-07-05 8:37,总共编辑 2 次。
つまんねー事聞くなよ!

I, personally, for me, believe (obviously sometimes) that my OS choice is right. That's me. I'm not telling you that you should believe it. Learn the facts, and the origins behind the facts, and make up your own damn mind. That's why you have one. (source)

Follow me: @06_taro

304——
为纪念伟大的宇宙史上最强压制304先生,联合国教科文组织决定,将每年的第304天,即平年的10月31日或者闰年的10月30日,定为世界304日。

头像
yabbay
帖子: 62
注册时间: 2012-05-31 10:39
来自: Tokyo

Re: 【求助】avs4x264mod管道出现timecode问题

2012-07-04 10:34

{:cat_9} gracias
偶承认能修正v2tc的话帮助很大
送taro大一张好人卡 {:cat_17}
          .∧__,,∧
         ( ´・ω・`) ブルブル
          (つまくら) アリと明日(ant and tomorrow)
          `u―u´ レッツ・エッグ・ペイン(Let`s egg pain)

玩世不恭
帖子: 1
注册时间: 2019-04-09 14:20

Re: 【求助】avs4x264mod管道出现timecode问题

2019-04-09 15:05

怎么下载这个软件呢。。下载不了。。

fnscar
帖子: 34
注册时间: 2014-08-31 10:53

Re: 【求助】avs4x264mod管道出现timecode问题

2019-04-16 18:41

玩世不恭 写了:
2019-04-09 15:05
怎么下载这个软件呢。。下载不了。。
https://tmod.nmm-hd.org/tctool/

回到 “视频编码器 / Video encoder discussion”