VideoHelp Forum




+ Reply to Thread
Results 1 to 11 of 11
  1. Can anyone tell me how to troubleshoot the following error? I am trying to encode to 1280x720p29.97 for Encore. Thanks.

    EDIT: FWIW, the avs script loads fine in vdub and I am able to scrub through all the frames with out any problems. So it looks like the error is in x264?

    EDIT2: I guess if worse comes to worse, I can just write out a lossless intermediate and encode that instead of frameserving from PPro.

    AVS Script:
    Code:
    AVISource("E:\signpost.avi", audio=false).AssumeFPS(30000,1001)
    ConvertToYV12(interlaced=false, matrix="rec709")
    Lanczos4Resize( 1280, 720 )
    x264 cli cmd
    Code:
    E:\>x264 --bitrate 30000 --preset veryslow --tune film --bluray-compat --vbv-maxrate 40000
    --vbv-bufsize 30000 --level 4.1 --keyint 30 --open-gop --slices 4 --fake-interlaced
    --colorprim "bt709" --transfer "bt709" --colormatrix "bt709" --sar 1:1 --pass 1 -o video.264 bluray.avs
    x264 console output
    Code:
    avs [info]: 1280x720p 1:1 @ 30000/1001 fps (cfr)
    x264 [info]: using SAR=1/1
    x264 [info]: using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX
    x264 [info]: profile Main, level 4.1
    avs [error]: Softwire: caught an access violation at 0x02b9553b(code+75),
    attempting to read from 0x00000000 occurred while reading frame 40
    x264 [info]: frame I:2     Avg QP:16.67  size:303716
    x264 [info]: frame P:10    Avg QP:13.40  size:194936
    x264 [info]: frame B:28    Avg QP:19.72  size: 47042
    x264 [info]: consecutive B-frames:  5.0%  0.0% 15.0% 80.0%
    x264 [info]: mb I  I16..4:  3.4%  0.0% 96.6%
    x264 [info]: mb P  I16..4:  0.7%  0.0%  0.0%  P16..4: 96.5%  0.0%  0.0%  0.0%  0.0%    skip: 2.8%
    x264 [info]: mb B  I16..4:  0.0%  0.0%  0.0%  B16..8: 14.7%  0.0%  0.0%  direct:52.0%  skip:33.3%  L0:31.2% L1:41.8% BI:27.1%
    x264 [info]: direct mvs  spatial:85.7% temporal:14.3%
    x264 [info]: coded y,uvDC,uvAC intra: 98.2% 96.8% 91.5% inter: 60.5% 35.4% 20.9%
    x264 [info]: i16 v,h,dc,p: 13% 61% 19%  7%
    x264 [info]: i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 10% 39%  8%  5%  7%  5%  9%  5% 11%
    x264 [info]: i8c dc,h,v,p: 45% 38%  9%  8%
    x264 [info]: Weighted P-Frames: Y:0.0% UV:0.0%
    x264 [info]: kb/s:23220.49
    avs [error]: Softwire: caught an access violation at 0x02b9553b(code+75),
    attempting to read from 0x00000000 occurred while reading frame 41
    Last edited by SameSelf; 21st Oct 2015 at 20:27.
    Quote Quote  
  2. Member
    Join Date
    May 2014
    Location
    Memphis TN, US
    Search PM
    Probably has something to do with the fact that 1280x720p + 29.97/30fps + fake interlace is not "Bluray-compat".

    https://www.videohelp.com/hd#tech
    - My sister Ann's brother
    Quote Quote  
  3. The error is pre x264, likely a dmfs error . It's not because of the encoding settings.

    Also your commandline won't give you compliant bd encodes, but that's a separate issue. --fake interlaced is for 1920x1080p29.97 .

    You need --pulldown double to "fake" duplicate frames, but encore doesn't support it, so you need to physically double the frames with changefps(60000,1001) to give you 1280x720p59.94 . You should use the 720p59.94 BD settings (1 sec GOP is --keyint 60)

    https://sites.google.com/site/x264bluray/home/720p-encoding
    Quote Quote  
  4. OK, the plot thickens. I wrote out a lossless Lagarith intermediate AVI from PPro, instead of frameserving via DMFS. The lossless intermediate is 1920x1280p29.97. The video plays fine in WMP and MPC. I loaded the following avs script into vdub:

    Code:
    AVISource("E:\Lagarith.avi", audio=false).AssumeFPS(30000,1001)
    ConvertToYV12(interlaced=false, matrix="rec709")
    Lanczos4Resize( 1280, 720 )
    I am able to scrub through all 300 frames (it is a 10 second sample) smoothly without any problems.

    However, when I try to run this new avs script through x264 using the same command as before I get what looks like the same error as before!!! Something about not being able to read frame 40 and 41. Full text:

    Code:
    avs [info]: 1280x720p 1:1 @ 30000/1001 fps (cfr)
    x264 [info]: using SAR=1/1
    x264 [info]: using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX
    x264 [info]: profile Main, level 4.1
    avs [error]: Softwire: caught an access violation at 0x02b1172b(code+83),
    attempting to read from 0x00000000 occurred while reading frame 40
    avs [error]: Softwire: caught an access violation at 0x02b1172b(code+83),
    attempting to read from 0x00000000 occurred while reading frame 41
    x264 [info]: frame I:2     Avg QP:16.67  size:303496
    x264 [info]: frame P:10    Avg QP:13.24  size:198960
    x264 [info]: frame B:28    Avg QP:19.60  size: 48997
    x264 [info]: consecutive B-frames:  5.0%  0.0% 15.0% 80.0%
    x264 [info]: mb I  I16..4:  3.2%  0.0% 96.8%
    x264 [info]: mb P  I16..4:  0.7%  0.0%  0.0%  P16..4: 96.5%  0.0%  0.0%  0.0%  0.0%    skip: 2.8%
    x264 [info]: mb B  I16..4:  0.0%  0.0%  0.0%  B16..8: 14.7%  0.0%  0.0%  direct:52.1%  skip:33.2%  L0:31.2% L1:41.5% BI:27.3%
    x264 [info]: direct mvs  spatial:85.7% temporal:14.3%
    x264 [info]: coded y,uvDC,uvAC intra: 98.2% 97.0% 91.6% inter: 61.0% 35.7% 21.5%
    x264 [info]: i16 v,h,dc,p: 13% 63% 18%  6%
    x264 [info]: i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 10% 39%  8%  5%  7%  5%  9%  5% 11%
    x264 [info]: i8c dc,h,v,p: 45% 38%  9%  8%
    x264 [info]: Weighted P-Frames: Y:0.0% UV:0.0%
    x264 [info]: kb/s:23787.34
    
    encoded 40 frames, 25.41 fps, 23787.34 kb/s
    Quote Quote  
  5. Thanks guys! I inserted the ChangeFPS(60000,1001) line and ran the 720p59.94 x264 command instead of the 720p29.97 version I was using earlier, and I set --keyint to 60 vs 30.

    Fully encoded both frameserving and the Lagarith intermediate. However, all this testing made me realize that when doing a 2-pass encode it is much faster writing out a lossless intermediate.
    Quote Quote  
  6. Maybe not related to your problem, but good to know: Frame server can work or be served once at a time, you cannot serve into two applications, like maybe even VirtualDub/or even player, not sure though (having it still running, perhaps in pause, but running) and encoder encoding.

    While writing code in batch script, to encode avs script that loaded frame server's avi I had to check if that avi was not in use and possibly some designed delay.BAT had to be called :
    ( type nul >> "signpost.avi" ) 2>nul || ( call delay.BAT )

    without this running different encodings for the same signpost.avi would fail

    with this feature I can run signpost.avi with multiple BAT's at the same time, each encodes something else, and it is guaranteed that only one encoding is running at a time, because only one process is basically running at a time, the rest is on delay periodically checking ( 1min or so) if that signpost.avi is available
    Last edited by _Al_; 21st Oct 2015 at 22:27.
    Quote Quote  
  7. Originally Posted by _Al_ View Post
    Maybe not related to your problem, but good to know: Frame server can work or be served once at a time, you cannot serve into two applications, like maybe even VirtualDub/or even player, not sure though (having it still running, perhaps in pause, but running) and encoder encoding.

    While writing code in batch script, to encode avs script that loaded frame server's avi I had to check if that avi was not in use and possibly some designed delay.BAT had to be called :
    ( type nul >> "signpost.avi" ) 2>nul || ( call delay.BAT )

    without this running different encodings for the same signpost.avi would fail

    with this feature I can run signpost.avi with multiple BAT's at the same time, each encodes something else, and it is guaranteed that only one encoding is running at a time, because only one process is basically running at a time, the rest is on delay periodically checking ( 1min or so) if that signpost.avi is available
    That is some great advice, thanks so much. I wasn't trying to frameserve into two apps at once, so that wasn't my problem.

    But, I was wondering about how to automate the encode step, if I ditch frameserving. I have no problem frameserving when I am encoding for Youtube because I always do 1-pass CBR. But, the x264 wiki for blu-ray compliant encodes seems to stress 2-pass. Frameserving is very slow though because I have a lot of AE layers (denoise, color grading, etc.). So it is much faster to write out a lossless intermediate once and then encode that twice than frameserve twice. But, the lossless takes a while, and I was wondering how to automatically kick off the x264 command using a batch file once the lossless intermediate is finished. Do you think something similar to the batch command above would do the trick?

    Thanks.
    Quote Quote  
  8. If your video is short, that you know would not exceed 25GB, or whatever volume for BD is, having calculated it with imaginary 30 Mbit there (buffers cut higher bitrates fo Blu-Ray settings), it gives something about 1hour 45min?, so you can encode CRF safely. That website uses two pass simply because you can encode to exact size, or it just common habit, you know from DVD encoding. Just a habit. Even on this forum folks would tell you that 2pass is better than CRF for some reason. If there is enough room, meaning video length is good and and buffers cut offs guarantee that you are fine why not to use 1pass CRF and heck zones as well. Using zones would basically mean that you force encoder go closer to those 30-40 Mbit limits when expecting, encoder might not be willing to do so (dark scenes, gradients) while still not be worried much about exceeding that BD volume limit.

    you just replace --bitrate something to --CRF something, and using only one line of course.

    I use same thing encoding DVD, if length is less than 1hour 10 minutes automatically 1pass Constant Quantization in HcEncoder is selected with max bitrate 8000 set, so in similar fashion this could be used fo BD.

    About that lossless, you can even automate creating lossless using frame server and VirtualDub. Meaning in batch script where encoding line would follow. All you need to do is create *.vcf file, beforehand, one time only. Basically you record your setting in VirtualDub, you set everything , compression with its settings, full video processing, full audio processing, and click "file/Save processing settings..." , that creates that *.vcf file. Look on the web "creating of vcf file for virtualdub". Then you can use these lines in batch script:

    Code:
    REM create lossless
    vdub.exe /s "create_lossless_procedure.vcf" /p "signpost.avi" "lossless.avi" /r 
    
    REM create avisynth script here, just an example, you create correct one
    echo AVISource("lossless.avi", audio=false).AssumeFPS(60000,1001) > avisynth.avs
    echo ConvertToYV12(interlaced=false, matrix="rec709") >> avisynth.avs 
    echo Lanczos4Resize( 1280, 720 ) >> avisynth.avs
    
    REM encode here
    x264.exe --crf 17 --whatever settings -o output.264 avisynth.avs
    you can add line to create AC3 audio , or even create AAC line and then add mux line to mux mp4 right away if using for youtube etc.
    or that encoding line could be two lines if encoding 2pass VBR, perhaps that is the main reason to get lossless first I guess ...
    Last edited by _Al_; 23rd Oct 2015 at 01:16.
    Quote Quote  
  9. oh, btw, I had posted some time ago dmfs avi to MP4.BAT , that creates MP4 from AVI, using CRF only, no 2pass VBR, it has that dmfs in the name but it could be used with any avi file. That BAT needs two arguments, one avi file and one INI file, so frame's server avi or other avi files, like DV , lossles avi could be used. Those two arguments could be dropped manualy into that BAT in windows explorer or command line could be used:
    _AVI_to_MP4.BAT "lossless.avi" "my.INI"
    and that line could be called within your script so you can create MP4 for Youtube , and other things you need thru night, or while being at work, etc. all of it
    CALL "C:\tools\dmfs avi to MP4\_AVI_to_MP4.BAT" "E:\lossless.avi" "C:\tools\dmfs avi to MP4\my.INI"
    but I never checkd that one to be sure (you know paths correct etc., it should work though)
    you'd just need to locate ending line and replace:
    endlocal & echo press any key to exit ... & pause>nul & goto :eof
    with just:
    endlocal & goto :eof

    that INI file is quite easy, you modify script as you want, paths, script also checks for syntax errors in Avisynth, if Avisynth script fails it would write a line where the problem was, it would not just crash without telling you that there was a problem in the script:
    Code:
    path_destination      :C:\Destination
    path_temp             :C:\Temp
    x264_variables        :--crf 17 --sar 8:9  --ref 6 --tune film --vbv-bufsize 20000 --vbv-maxrate 20000
    nero_variables        :-lc -cbr 256000
    delete_temp_folder    :yes
    mux_external_audio    :no
    
    
    write avisynth script between lines, no loading clip line in there!
    --------------------------------------------------------------
    AVISource("lossless.avi", audio=false).AssumeFPS(60000,1001)
    ConvertToYV12(interlaced=false, matrix="rec709") 
    Lanczos4Resize( 1280, 720 )
    --------------------------------------------------------------
    you can create as much INI files as you need , name them and just jusing proper one for particular encoding
    Last edited by _Al_; 23rd Oct 2015 at 16:17.
    Quote Quote  
  10. That batch script line you suggested is pure genius! Using it, I was able to create the following batch file which works like a charm. I kick off the lossless export from PPro, which takes about 10 hours, then start the batch script. The encode portion of the batch script only starts once the lossless export is complete. So, now the export > encode steps are fully automated which is great for overnight runs!!! Thanks so much!

    Code:
    :: Declare variables
    
    set AVI=Lagarith.avi
    
    :: Check to see if the AVI is finished exporting from Premiere Pro
    
    :AVICheck
    
    	( type nul >> "%AVI%" ) 2> nul || GOTO Delay
    
    	::Encode as 1280x720p59.94 Blu-ray Compliant 2-pass
    	x264 --bitrate 30000 --preset veryslow --tune film --bluray-compat --vbv-maxrate 40000 --vbv-bufsize 30000 --level 4.1 --keyint 60 --open-gop --slices 4 --colorprim "bt709" --transfer "bt709" --colormatrix "bt709" --sar 1:1 --pass 1 -o video.264 LagarithBR.avs
    	x264 --bitrate 30000 --preset veryslow --tune film --bluray-compat --vbv-maxrate 40000 --vbv-bufsize 30000 --level 4.1 --keyint 60 --open-gop --slices 4 --colorprim "bt709" --transfer "bt709" --colormatrix "bt709" --sar 1:1 --pass 2 -o video.264 LagarithBR.avs
    
    goto:eof
    
    
    :Delay
    	PING -n 11 127.0.0.1>nul
    	GOTO AVICheck
    goto:eof
    Quote Quote  
  11. oh yes, it did not occur me that batch script could wait even for Premiere to finish encoding , to wait for that avi to be available
    Quote Quote  



Similar Threads

Visit our sponsor! Try DVDFab and backup Blu-rays!