PDA

View Full Version : x264 exits prematurely


raymod2
11th August 2006, 05:09
I am having a problem with x264 aborting the first pass of an encode prematurely (without an error message). So I tried upgrading to the latest versions of AviSynth and x264. However, with the latest version of x264 my batch file is failing. Here is the batch file I have been using:


start //b //w //low x264 -B 750 -f 0:0 -b 3 --b-pyramid -w -p 1 -r 1 -A none --me dia -m 1 --progress -o NUL filter.avs
start //b //w //low x264 -B 750 -f 0:0 -b 3 --b-pyramid -w -p 2 -r 5 -A all --me umh -m 6 -8 --no-fast-pskip --progress -o video.mp4 filter.avs
start //b //w //low avs2wav filter.avs raw.wav
start //b //w //low faac -o audio.mp4 raw.wav
start //b //w //low mp4box -new -add audio.mp4 -add video.mp4 muxed.mp4


This batch file worked fine with x264 version 394. What happens now (with x264 version 551) is the first two lines finish right away with nothing printed to the screen. The video.mp4 file appears in the current directory but it has 0 bytes. Have the command line parameters changed so that my batch file is now incorrect?

CruNcher
11th August 2006, 05:31
use b0b0rs build instead of sharktooths if you should have still these problems use raw output instead of .mp4

raymod2
11th August 2006, 06:15
I just tried b0b0r's build and I get the same thing. Raw versus MP4 output can't be the problem because the first pass outputs to a null file which is neither.

raymod2
11th August 2006, 07:16
I am trying to encode a project and x264 keeps exiting prematurely during the first pass (before all the frames have been encoded). I have tried it several times and it always fails somewhere between frame 27000 and frame 29000 (there are 95371 frames total). Here is an example:


Dan@DRAYMOND /c/project/CPC Championships
$ time x264 -B 750 -f 0:0 -b 3 --b-pyramid -w -p 1 -r 1 -A none --me dia -m 1 -
-progress -o NUL filter.avs
avis [info]: 656x480 @ 29.97 fps (95371 frames)
x264 [info]: using cpu capabilities MMX MMXEXT SSE SSE2
x264 [info]: slice I:136 Avg QP:24.94 size: 16612 PSNR Mean Y:42.67 U:47.40 V:47.44 Avg:43.74 Global:43.21
x264 [info]: slice P:20440 Avg QP:25.41 size: 3597 PSNR Mean Y:42.66 U:46.76 V:46.75 Avg:43.62 Global:42.46
x264 [info]: slice B:8138 Avg QP:28.94 size: 1717 PSNR Mean Y:39.48 U:45.20 V:44.84 Avg:40.64 Global:39.85
x264 [info]: mb I I16..4: 58.1% 0.0% 41.9%
x264 [info]: mb P I16..4: 17.0% 0.0% 0.0% P16..4: 33.0% 0.0% 0.0% 0.0% 0.0% skip:49.9%
x264 [info]: mb B I16..4: 0.6% 0.0% 0.0% B16..8: 17.8% 0.0% 0.0% direct: 9.6% skip:72.0%
x264 [info]: final ratefactor: 27.46
x264 [info]: PSNR Mean Y:41.757 U:46.319 V:46.213 Avg:42.774 Global:41.551 kb/s:749.39

encoded 28714 frames, 13.48 fps, 749.45 kb/s

real 35m50.656s
user 0m0.015s
sys 0m0.000s
Dan@DRAYMOND /c/project/CPC Championships
$


I was originally using AviSynth 2.5.6a and x264 svn-394M (built by Sharktooth). I tried upgrading to AviSynth 2.5.7 Alpha 3 and x264 svn-551M (built by Sharktooth) but I am having the same problem. Here is my AviSynth script:


LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\EEDI2.dll")
LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\TDeint.dll")

AviSource("C:\project\CPC Championships\raw\distance.avi", pixel_type="YUY2")
global template = last

d1c01 = trim(218,576). Process(false, "David Billing", "379.2 feet", "distance1 / run1")
d1c02 = trim(577,937). Process(false, "Mark Shimell", "414.1 feet", "distance1 / run2")
d1c03 = trim(938,1272). Process(false, "Steve Armstrong", "325.7 feet", "distance1 / run3")
d1c04 = trim(1442,2216). Process(false, "Nick Batsch", "345.2 feet", "distance1 / run4")
d1c05 = trim(2217,2619). Process(false, "Greg Chopiuk", "254.0 feet", "distance1 / run5")
d1c06 = trim(2620,3022). Process(false, "Bryan Gile", "317.3 feet", "distance1 / run6")
d1c07 = trim(3023,3360). Process(false, "Billy Sharman", "239.5 feet", "distance1 / run7")
d1c08 = trim(3361,3663). Process(false, "Ray Dutch", "405.0 feet", "distance1 / run8")
d1c09 = trim(3664,4299). Process(false, "Ian Drennan", "404.5 feet", "distance1 / run9")
d1c10 = trim(4300,4734). Process(false, "Stuart Schoenfeld", "360.6 feet", "distance1 / run10")
d1c11 = trim(4735,5116). Process(false, "JP Furnari", "60.0 feet", "distance1 / run11")
d1c12 = trim(5163,5499). Process(false, "Ryan Brownlow", "355.1 feet", "distance1 / run12")
d1c13 = trim(5500,5791). Process(false, "CJ Hatwigsen", "301.5 feet", "distance1 / run13")
d1c14 = trim(5792,6143). Process(false, "Chuck Owen", "355.3 feet", "distance1 / run14")
d1c15 = trim(6144,6520). Process(false, "Tom Phillips", "254.6 feet", "distance1 / run15")
d1c16 = trim(6521,6911). Process(false, "Dan McAllister", "214.4 feet", "distance1 / run16")
d1c17 = trim(6912,7278). Process(false, "Andy Leake", "316.7 feet", "distance1 / run17")
d1c18 = trim(7279,7643). Process(false, "Aubrey Cundell", "70.0 feet", "distance1 / run18")
d1c19 = trim(7644,8044). Process(false, "Tyler Lawson", "vertical", "distance1 / run19")
d1c20 = trim(8045,8312). Process(false, "Jim Vance", "281.9 feet", "distance1 / run20")
d1c21 = trim(8313,8798). Process(false, "Bryan McNenney", "463.6 feet", "distance1 / run21")
d1c22 = trim(8799,9068). Process(false, "Todd Spillers", "237.4 feet", "distance1 / run22")
d1c23 = trim(9069,9397). Process(false, "Brittany Sanchez", "vertical", "distance1 / run23")
d1c24 = trim(9398,9654). Process(false, "John Lyman", "250.8 feet", "distance1 / run24")
d1c25 = trim(9655,10271). Process(false, "Katrina Autry", "175.4 feet", "distance1 / run25")
d1c26 = trim(10272,10686).Process(false, "Grant Adams", "332.2 feet", "distance1 / run26")
d1c27 = trim(10687,10960).Process(false, "Vic Krusi", "315.8 feet", "distance1 / run27")
d1c28 = trim(10961,11286).Process(false, "Jason Russell", "360.2 feet", "distance1 / run28")
d1c29 = trim(11287,11542).Process(false, "Jason Tulliver", "340.5 feet", "distance1 / run29")
d1c30 = trim(11543,11891).Process(false, "Dan Raymond", "279.3 feet", "distance1 / run30")

<some code omitted to fit the 16000 character limit in this forum>

AviSource("C:\project\CPC Championships\raw\speed.avi", pixel_type="YUY2")

s1c01 = trim(55,366). Process(false, "CJ Hatwigsen", "3.30 sec", "speed1 / run1")
s1c02 = trim(367,795). Process(false, "Chuck Owen", "3.07 sec", "speed1 / run2")
s1c03 = Blank(). Process(false, "Tom Phillips", "10.00 sec", "speed1 / run3")
s1c04 = Blank(). Process(false, "Dan McAllister", "10.00 sec", "speed1 / run4")
s1c05 = trim(796,1422). Process(false, "Bryan McNenney", "2.70 sec", "speed1 / run5")
s1c06 = trim(1423,1870). Process(false, "Todd Spillers", "10.00 sec (vertical)", "speed1 / run6")
s1c07 = trim(1871,2447). Process(false, "Brittany Sanchez", "10.00 sec (vertical)", "speed1 / run7")
s1c08 = trim(2448,2692). Process(false, "John Lyman", "7.67 sec (3.67 + 4)", "speed1 / run8")
s1c09 = trim(2693,3098). Process(false, "Greg Chopiuk", "3.50 sec", "speed1 / run9")
s1c10 = trim(3099,3570). Process(false, "Bryan Gile", "2.93 sec", "speed1 / run10")
s1c11 = trim(3776,4036). Process(false, "Billy Sharman", "3.20 sec", "speed1 / run11")
s1c12 = trim(4037,4482). Process(false, "Ray Dutch", "2.67 sec", "speed1 / run12")
s1c13 = trim(5125,5566). Process(false, "Jason Russell", "3.06 sec", "speed1 / run13")
s1c14 = trim(5567,6094). Process(false, "Jason Tulliver", "2.94 sec", "speed1 / run14")
s1c15 = trim(6140,6939). Process(false, "Dan Raymond", "3.20 sec", "speed1 / run15")
s1c16 = trim(7290,7704). Process(true, "David Billing", "5.56 sec (3.56 + 2)", "speed1 / run16")
s1c17 = trim(7705,8117). Process(true, "Mark Shimell", "10.00 sec", "speed1 / run17")
s1c18 = trim(8118,8449). Process(true, "Steve Armstrong", "10.00 sec", "speed1 / run18")
s1c19 = trim(8450,8750). Process(true, "Nick Batsch", "2.80 sec", "speed1 / run19")
s1c20 = trim(8963,9651). Process(true, "Katrina Autry", "7.60 sec (3.60 + 4)", "speed1 / run20")
s1c21 = trim(9652,9940). Process(true, "Grant Adams", "10.00 sec", "speed1 / run21")
s1c22 = trim(9941,10274). Process(true, "Vic Krusi", "3.10 sec", "speed1 / run22")
s1c23 = trim(10275,10722).Process(true, "Andy Leake", "3.44 sec", "speed1 / run23")
s1c24 = trim(10723,11030).Process(true, "Aubrey Cundell", "3.07 sec", "speed1 / run24")
s1c25 = trim(11031,11541).Process(true, "Tyler Lawson", "3.70 sec", "speed1 / run25")
s1c26 = trim(11542,11859).Process(true, "Jim Vance", "2.67 sec", "speed1 / run26")
s1c27 = trim(11970,12471).Process(true, "Ian Drennan", "10.00 sec", "speed1 / run27")
s1c28 = trim(12559,12873).Process(true, "Stuart Schoenfeld", "2.90 sec", "speed1 / run28")
s1c29 = trim(12874,13141).Process(true, "JP Furnari", "10.00 sec", "speed1 / run29")
s1c30 = trim(13142,13371).Process(true, "Ryan Brownlow", "2.96 sec", "speed1 / run30")

s2c01 = trim(13383,14084).Process(true, "CJ Hatwigsen", "2.70 sec", "speed2 / run1")
s2c02 = trim(14085,14461).Process(true, "Chuck Owen", "2.63 sec", "speed2 / run2")
s2c03 = Blank(). Process(true, "Tom Phillips", "10.00 sec", "speed2 / run3")
s2c04 = Blank(). Process(true, "Dan McAllister", "10.00 sec", "speed2 / run4")
s2c05 = trim(14462,15305).Process(true, "Bryan McNenney", "2.83 sec", "speed2 / run5")
s2c06 = trim(15488,16032).Process(true, "Todd Spillers", "10.00 sec (incomplete)", "speed2 / run6")
s2c07 = trim(16033,16626).Process(true, "Brittany Sanchez", "10.00 sec (incomplete)", "speed2 / run7")
s2c08 = trim(16627,16914).Process(true, "John Lyman", "10.00 sec (vertical)", "speed2 / run8")
s2c09 = trim(16915,17651).Process(true, "Greg Chopiuk", "10.00 sec (incomplete)", "speed2 / run9")
s2c10 = trim(17652,17984).Process(true, "Bryan Gile", "2.73 sec", "speed2 / run10")
s2c11 = trim(17985,18397).Process(true, "Billy Sharman", "3.40 sec", "speed2 / run11")
s2c12 = trim(18398,18710).Process(true, "Ray Dutch", "10.00 sec (vertical)", "speed2 / run12")
s2c13 = trim(18711,19166).Process(true, "Jason Russell", "2.87 sec", "speed2 / run13")
s2c14 = trim(19167,19481).Process(true, "Jason Tulliver", "3.10 sec", "speed2 / run14")
s2c15 = trim(19482,19955).Process(true, "Dan Raymond", "10.00 sec (vertical)", "speed2 / run15")
s2c16 = trim(19956,20233).Process(true, "David Billing", "3.20 sec", "speed2 / run16")
s2c17 = trim(20234,20661).Process(true, "Mark Shimell", "2.33 sec", "speed2 / run17")
s2c18 = Blank(). Process(true, "Steve Armstrong", "10.00 sec (incomplete)", "speed2 / run18")
s2c19 = trim(20662,21386).Process(true, "Nick Batsch", "2.73 sec", "speed2 / run19")
s2c20 = trim(21387,22039).Process(true, "Katrina Autry", "10.00 sec (incomplete)", "speed2 / run20")
s2c21 = trim(22040,22467).Process(true, "Grant Adams", "2.50 sec", "speed2 / run21")
s2c22 = trim(22468,22859).Process(true, "Vic Krusi", "3.16 sec", "speed2 / run22")
s2c23 = trim(22860,23280).Process(true, "Andy Leake", "3.90 sec", "speed2 / run23")
s2c24 = trim(23281,23679).Process(true, "Aubrey Cundell", "10.00 sec (out)", "speed2 / run24")
s2c25 = trim(23680,24108).Process(true, "Tyler Lawson", "3.36 sec", "speed2 / run25")
s2c26 = trim(24109,24359).Process(true, "Jim Vance", "3.03 sec", "speed2 / run26")
s2c27 = trim(24360,25014).Process(true, "Ian Drennan", "3.00 sec", "speed2 / run27")
s2c28 = trim(25015,25346).Process(true, "Stuart Schoenfeld", "2.66 sec", "speed2 / run28")
s2c29 = trim(25347,25755).Process(true, "JP Furnari", "3.17 sec", "speed2 / run29")
s2c30 = trim(25756,26125).Process(true, "Ryan Brownlow", "10.00 sec (vertical)", "speed2 / run30")

# this clip is BFF
#AssumeBFF().SeparateFields() # use this to check if the video is BFF or TFF
#return last

function Blank()
{
return BlankClip(template, length = 90)
}

function Deinterlace(clip in, bool bff)
{
x = bff ? 0 : 1
interp = in.separatefields().selecteven().EEDI2(field=x)
return in.TDeint(order=x,field=x,edeint=interp)
}

function Process(clip in, bool interlaced, string name, string score, string run)
{
in = interlaced ? Deinterlace(in, true) : in
in = in.LanczosResize(656,480)
in = in.subtitle(name, 16, 16, align = 7)
in = in.subtitle(score, 328, 16, align = 8)
in = in.subtitle(run, 640, 16, align = 9)
return in
}

dissolve(d1c01, d1c02, d1c03, d1c04, d1c05, d1c06, d1c07, d1c08, d1c09, d1c10, \
d1c11, d1c12, d1c13, d1c14, d1c15, d1c16, d1c17, d1c18, d1c19, d1c20, \
d1c21, d1c22, d1c23, d1c24, d1c25, d1c26, d1c27, d1c28, d1c29, d1c30, \
d2c01, d2c02, d2c03, d2c04, d2c05, d2c06, d2c07, d2c08, d2c09, d2c10, \
d2c11, d2c12, d2c13, d2c14, d2c15, d2c16, d2c17, d2c18, d2c19, d2c20, \
d2c21, d2c22, d2c23, d2c24, d2c25, d2c26, d2c27, d2c28, d2c29, d2c30, \
d3c01, d3c02, d3c03, d3c04, d3c05, d3c06, d3c07, d3c08, d3c09, d3c10, \
d3c11, d3c12, d3c13, d3c14, d3c15, d3c16, d3c17, d3c18, d3c19, d3c20, \
d3c21, d3c22, d3c23, d3c24, d3c25, d3c26, d3c27, d3c28, d3c29, d3c30, \
z1c01, z1c02, z1c03, z1c04, z1c05, z1c06, z1c07, z1c08, z1c09, z1c10, \
z1c11, z1c12, z1c13, z1c14, z1c15, z1c16, z1c17, z1c18, z1c19, z1c20, \
z1c21, z1c22, z1c23, z1c24, z1c25, z1c26, z1c27, z1c28, z1c29, z1c30, \
z2c01, z2c02, z2c03, z2c04, z2c05, z2c06, z2c07, z2c08, z2c09, z2c10, \
z2c11, z2c12, z2c13, z2c14, z2c15, z2c16, z2c17, z2c18, z2c19, z2c20, \
z2c21, z2c22, z2c23, z2c24, z2c25, z2c26, z2c27, z2c28, z2c29, z2c30, \
z3c01, z3c02, z3c03, z3c04, z3c05, z3c06, z3c07, z3c08, z3c09, z3c10, \
z3c11, z3c12, z3c13, z3c14, z3c15, z3c16, z3c17, z3c18, z3c19, z3c20, \
z3c21, z3c22, z3c23, z3c24, z3c25, z3c26, z3c27, z3c28, z3c29, z3c30, \
s1c01, s1c02, s1c03, s1c04, s1c05, s1c06, s1c07, s1c08, s1c09, s1c10, \
s1c11, s1c12, s1c13, s1c14, s1c15, s1c16, s1c17, s1c18, s1c19, s1c20, \
s1c21, s1c22, s1c23, s1c24, s1c25, s1c26, s1c27, s1c28, s1c29, s1c30, \
s2c01, s2c02, s2c03, s2c04, s2c05, s2c06, s2c07, s2c08, s2c09, s2c10, \
s2c11, s2c12, s2c13, s2c14, s2c15, s2c16, s2c17, s2c18, s2c19, s2c20, \
s2c21, s2c22, s2c23, s2c24, s2c25, s2c26, s2c27, s2c28, s2c29, s2c30, 1)

Normalize()
ConvertToYV12() # x264 only accepts YV12 colorspace

Manao
11th August 2006, 08:37
That's a quite complicated avs script you've got there. If you play it through virtual dub, does it play correctly ? Especially, does it go after the frame #29000 ?

In any case, you can simplify the avs script : the deinterlacing should be outside Process(). Instead of doing trim().deinterlaced().process() several times, you should first trim only the part that need deinterlacing, deinterlace them with one instance of the filter, then trim that part for the Process() functions.

You might also want to consider using scriptclip() and conditionnalreader().

Sharktooth
11th August 2006, 14:32
And ensure your harware is working properly: test your system with the appropriate softwares and restore any overclocked components to the standard clock rate.

raymod2
11th August 2006, 16:43
Yes, it opens fine in VirtualDub and I can scroll all the way to the end (frame 95371). Sharktooth: this is a stable system that I have never overclocked. I also tried changing the script so that it did just the interlaced sections (which came to a little over 30000 frames) and it encoded just fine.

Is there an error log file somewhere that I could look at? Why would x264 just exit prematurely without any kind of warning or error message?

P.S. I deinterlace it inside Process() because I don't want to concatenate the clips before I add the subtitles. If I did that then I would have more work to do figuring out what frame numbers to pass to the subtitle() function.

Manao
11th August 2006, 18:33
raymod2 : i didn't say "scroll", i did say "play". Open it in vdub, it "space", and wait. If it crashes, it's the script's ( or avisynth's, it depends how you look at it ) that is guilty.

MeteorRain
11th August 2006, 20:05
seek to frame 27000, and play the source file and see if it crashes ;)

Manao
11th August 2006, 20:16
No, play from the start. The issue is most probably a memory leak somewhere, so he needs to play the script from the start, to be sure ( of course, if it crashes starting from 27000, then he'll know, but I doubt it will - if it's a memory leak )

raymod2
11th August 2006, 22:09
I loaded it into VirtualDub and tried to play it. It stuttered alot because it couldn't do all the filters in real time. Then, at frame 26745, I got this error from VirtualDub (thank you to the writer of VirtualDub for catching error conditions and displaying error messages):

Avisynth read error:
CAVIStreamSynth: System exception - Access Violation

foxyshadis
11th August 2006, 23:51
You may wish to try switching to the latest cvs of avisynth, or downgrading if you already are. It's likely one of your filters causing the actual exception, but such a thing is hard to debug and different avisynth versions will often hide the error.

Sharktooth
13th August 2006, 03:46
x264 is not the problem then.

bond
15th August 2006, 19:39
merged threads and moved to avisynth