VideoHelp Forum
+ Reply to Thread
Results 1 to 29 of 29
Thread
  1. Member hydra3333's Avatar
    Join Date
    Oct 2009
    Location
    Australia
    Search Comp PM
    Hello. I have an nvidia 750Ti video card which is apparently VP6.

    Is there a commandline program for using Nvidia's GPU encoder NVEnc, which accepts avisynth 2.5.7 input ?

    I did see NVEncC 1.11
    https://forum.videohelp.com/threads/370223-NVEncC-by-rigaya-NVIDIA-GPU-encoding?p=2415883&viewfull=1
    however that seems as if it may have japanese scattered through instructions etc and I'm not sure how to feed it avisynth 2.5.7.

    My goal is to produce mainly h264 in an mp4 container (i currently use x264.exe), but would also like to start playing with h265 as well.

    (I do have avs2yuv.exe to feed into 64 bit x264, but that's it).
    Quote Quote  
  2. Are you looking for a GUI ? I think staxrip and hybrid can use them

    NVEncC accepts avs scripts directly , if you use the matching version (ie. 32bit avisynth with NVEncC , or 64bit avisynth with NVEncC64) , or you can pipe to NVEncC with various methods

    But it only outputs raw AVC, no container . So you'd have to use something else like mp4box as well, or one of the GUI's

    eg. 1pass vbr 2000kb/s
    Code:
    NVEncC.exe --avs -i input.avs --vbr 2000 -o output.264
    (BTW, VP6 or VPx in terms of Pure Video for Nvidia is only for DEcoding - it's not the part does the ENcoding)
    Last edited by poisondeathray; 29th Oct 2015 at 21:54.
    Quote Quote  
  3. Member hydra3333's Avatar
    Join Date
    Oct 2009
    Location
    Australia
    Search Comp PM
    Originally Posted by poisondeathray View Post
    Are you looking for a GUI ?
    My workflow is largely automated and commandline driven.

    Originally Posted by poisondeathray View Post
    NVEncC accepts avs scripts directly, if you use the matching version (ie. 32bit avisynth with NVEncC , or 64bit avisynth with NVEncC64) , or you can pipe to NVEncC with various methods
    Fantastic !

    Originally Posted by poisondeathray View Post
    But it only outputs raw AVC, no container . So you'd have to use something else like mp4box as well
    Good oh. I suppose could use ffmpeg to mux the video whilst converting the audio at the same time, or use ffmpeg to convert the audio and mp4box to mux those separate streams.

    Code:
    NVEncC.exe --avs -i input.avs --vbr 2000 -o output.264
    OK, I generally use --crf 16 to --crf 24 with x264.exe, so I'll have to find the equivalent switches for NVEncC ... and then the same for h.265


    Originally Posted by poisondeathray View Post
    (BTW, VP6 or VPx in terms of Pure Video for Nvidia is only for DEcoding - it's not the part does the ENcoding)
    Ah, thank you.
    https://en.wikipedia.org/wiki/Nvidia_PureVideo
    PureVideo (eg VP6) occupies a considerable amount of a GPU's die surface and should not to be confused with Nvidia NVENC.
    https://en.wikipedia.org/wiki/Nvidia_NVENC
    Nvidia NVENC is the name given to Nvidia's ASIC IP block that performs video encoding. It was introduced with the Kepler-based GeForce 600 series in March 2012, as a product feature that offloads H264 video encoding from the host CPU.

    Any other commandline nvenc encoders available ?
    Quote Quote  
  4. Member hydra3333's Avatar
    Join Date
    Oct 2009
    Location
    Australia
    Search Comp PM
    I see https://en.wikipedia.org/wiki/Nvidia_NVENC
    FFmpeg obtained support to use Nvidia NVENC in 2014.
    Which would be really fantastic ... however I don't reckon zeranoe's windows build http://ffmpeg.zeranoe.com/builds/ has it enabled
    Quote Quote  
  5. Originally Posted by hydra3333 View Post

    Code:
    NVEncC.exe --avs -i input.avs --vbr 2000 -o output.264
    OK, I generally use --crf 16 to --crf 24 with x264.exe, so I'll have to find the equivalent switches for NVEncC ... and then the same for h.265
    It doesn't have "CRF" mode. Only --cqp, --vbr, and --cbr modes. HEVC for NVEnc is only available on Maxwell 2 cards


    Any other commandline nvenc encoders available ?
    I don' t think so


    Originally Posted by hydra3333 View Post
    I see https://en.wikipedia.org/wiki/Nvidia_NVENC
    FFmpeg obtained support to use Nvidia NVENC in 2014.
    Which would be really fantastic ... however I don't reckon zeranoe's windows build http://ffmpeg.zeranoe.com/builds/ has it enabled
    No it doesn't
    Quote Quote  
  6. Member hydra3333's Avatar
    Join Date
    Oct 2009
    Location
    Australia
    Search Comp PM
    ...
    Last edited by hydra3333; 2nd Nov 2015 at 22:20.
    Quote Quote  
  7. Member hydra3333's Avatar
    Join Date
    Oct 2009
    Location
    Australia
    Search Comp PM
    ...
    Last edited by hydra3333; 2nd Nov 2015 at 22:20.
    Quote Quote  
  8. I would ask at zeranoe's forum to see if anyone has got it working for ffmpeg

    Also look at the NVEnc help - because the switches are going to be basically the same. They might be named slightly differently due to ffmpeg syntax and formatting

    Code:
       --cqp <int> or                 encode in Constant QP mode
             <int>:<int>:<int>          Default: <I>:<P>:<B>=<20>:<23>:<25>
       --vbr <int>                    set bitrate for VBR mode (kbps)
       --cbr <int>                    set bitrate for CBR mode (kbps)
                                        Default: 7500 kbps
    
       --max-bitrate <int>            set Max Bitrate (kbps) / Default: 17500 kbps
    It doesn't have a CRF mode or even something similar. Only the 3 listed above. CQP is like QP for x264 - constant quantizer encoding. Not very efficient. In my tests, NVEnc is fast, but you're going to be disappointed in the quality/compression coming from x264
    Quote Quote  
  9. Also if you have a working build, ffmpeg -h full should hopefully list the available switches under the nvenc section
    Quote Quote  
  10. Member hydra3333's Avatar
    Join Date
    Oct 2009
    Location
    Australia
    Search Comp PM
    ...
    Last edited by hydra3333; 2nd Nov 2015 at 22:20.
    Quote Quote  
  11. -h full , for the full help. -h gives the short version

    I saw that someone offered to build it for you on zeranoe's forum if you PM him... take him up on the offer
    Quote Quote  
  12. Member hydra3333's Avatar
    Join Date
    Oct 2009
    Location
    Australia
    Search Comp PM
    I very nearly did. Didn't though.
    Last edited by hydra3333; 2nd Nov 2015 at 22:24.
    Quote Quote  
  13. Check ffmpeg source code - usually this is best way to learn command and parameters...
    Quote Quote  
  14. https://www.ffmpeg.org/doxygen/2.7/nvenc_8c_source.html

    Why did erase all the posts ??

    I was playing around with it and was going to say the quality is very poor (even worse than the NVEncC version) . But looking closer - the main reason is because the default HQ preset has zero b-frames, tiny max keyframe interval . If you set the settings similar to NVEncC , the results are closer but still some differences. I have to look a bit closer when I have time to see why there are still differences;

    Very fast, but the compression is still quite poor . I was looking at the marketing slides and maxwell 2 cards are supposed to be 80% faster than maxwell 1 for NVEnc. A typical 1280x720p encode gets about 400-500 FPS on Maxwell 1 (900-1000FPS for SD) . maxwell 2 is probably decoding limited for AVC SD sources (you can get ~1000FPS-1100FPS decoding with GPU decoding)

    (I built it with an autobuild script , there are 2 commonly used ones. At first I tried building it in Windows, it was a huge waste of time. Neither worked after 6+ hours each ! In linux it takes about 2 hours using the rdp version)

    https://github.com/jb-alvarado/media-autobuild_suite
    https://github.com/rdp/ffmpeg-windows-build-helpers
    Last edited by poisondeathray; 3rd Nov 2015 at 16:20.
    Quote Quote  
  15. Originally Posted by poisondeathray View Post
    Very fast, but the compression is still quite poor . I was looking at the marketing slides and maxwell 2 cards are supposed to be 80% faster than maxwell 1 for NVEnc. A typical 1280x720p encode gets about 400-500 FPS on Maxwell 1 (900-1000FPS for SD) . maxwell 2 is probably decoding limited for AVC SD sources (you can get ~1000FPS-1100FPS decoding with GPU decoding
    thx Poisondeathray - are You able provide more details (this is I and P frames only or also B frames?).
    Looking for real time 4k cheap HW encoder and NVEnc seem to be very interesting...
    Quote Quote  
  16. Originally Posted by pandy View Post
    thx Poisondeathray - are You able provide more details (this is I and P frames only or also B frames?).
    Looking for real time 4k cheap HW encoder and NVEnc seem to be very interesting...
    What details did you want specifically ?

    Yes, I mean "typical" encode with I,P, 3 max b-frames for AVC . The speeds are similar (as expected) between NVEncC and the ffmpeg variant of NVEnc when using similar settings. I only tested SD and HD sources so far (no UHD), and only AVC encoding. You can run 2 simultaneous encodes if your GPU isn't at 100% (e.g. there is some bottleneck to feeding NVEnC, like resizing, filtering etc..). The FPS is almost additive with slight overhead (apparently 2 instances is the limit per GPU, but I didn't test more than 2). I didn't test HEVC encoding which is available on maxwell 2, but from another poster, it looks like HEVC encoding is as fast as AVC encoding on NVEnc (!), but has no b-frames
    Quote Quote  
  17. Originally Posted by poisondeathray View Post
    What details did you want specifically ?

    Yes, I mean "typical" encode with I,P, 3 max b-frames for AVC . The speeds are similar (as expected) between NVEncC and the ffmpeg variant of NVEnc when using similar settings. I only tested SD and HD sources so far (no UHD), and only AVC encoding. You can run 2 simultaneous encodes if your GPU isn't at 100% (e.g. there is some bottleneck to feeding NVEnC, like resizing, filtering etc..). The FPS is almost additive with slight overhead (apparently 2 instances is the limit per GPU, but I didn't test more than 2). I didn't test HEVC encoding which is available on maxwell 2, but from another poster, it looks like HEVC encoding is as fast as AVC encoding on NVEnc (!), but has no b-frames
    More or less this kind of details - Thank You! lack of B frames in H.265 is bummer to me... seem QSV is only one solution on market with more or less complete H.265 HW encoding...
    Quote Quote  
  18. Member hydra3333's Avatar
    Join Date
    Oct 2009
    Location
    Australia
    Search Comp PM
    An apparent lack of support for interlaced encoding may make nvenc a waste of time.
    (I couldn't get it to work, the output was shuddery).

    The extra time taken to deinterlace TV capture material before encoding as progressive brings the effective end-to-end throughput speed right back to the field. It unfortunately also eliminates retention of "motion fluidity" for fast sports action given by interlacing.

    REM 25 fps
    ".\ffmpeg.exe" -i "inp.mpg" -filter:v yadif=0:0:0,setdar=dar=16/9,unsharp -r 25 -c:v nvenc -preset hq -b:v 1900k -minrate 500k -maxrate 5000k -profile:v high -level 4.1 -coder 0 -bf 3 -g 50 -movflags +faststart -c:a libmp3lame -ab 265k -ar 44100 -y "out.mp4"

    REM 50 fps
    ".\ffmpeg.exe" -i "inp.mpg" -filter:v yadif=1:0:0,setdar=dar=16/9,unsharp -r 50 -c:v nvenc -preset hq -b:v 3800k -minrate 500k -maxrate 5000k -profile:v high -level 4.1 -coder 0 -bf 3 -g 50 -movflags +faststart -c:a libmp3lame -ab 265k -ar 44100 -y "out.mp4"
    Does anyone know if ffmpeg has an nvidia GPU deinterlacer similar or better than yadif above ?

    PS what ffmpeg switches can you use to pass to nvenc to achieve get I,P, 3 max b-frames ?
    Last edited by hydra3333; 27th Nov 2015 at 20:06. Reason: edit: added "-bf 3 -g 50"
    Quote Quote  
  19. Originally Posted by hydra3333 View Post
    An apparent lack of support for interlaced encoding may make nvenc a waste of time.
    (I couldn't get it to work, the output was shuddery).
    nvencc supports interlaced encoding

    H.264/AVC
    --interlaced <string> interlaced encoding
    tff, bff
    I'll take a closer look, but ffmpeg's nvenc should too then


    Does anyone know if ffmpeg has an nvidia GPU deinterlacer similar or better than yadif above ?
    Nvidia does have a GPU deinterlacer, but it's on the DEcoding portion (PureVideo) , not the NVEnc encoding portion. I don' t think you can access it through ffmpeg. You can access it through an avs script if you have DGDecNV. Quality isn't that great, it's similar to yadif

    PS what ffmpeg switches can you use to pass to nvenc to achieve get I,P, 3 max b-frames ?
    -bf 3 => max 3 b-frames
    -g => max GOP size. I don't know what is "ideal" for NVEnc, but it's 250 for x264 default. It was something like 12 at default for ffmpeg NVEnc, very poor efficiency
    Quote Quote  
  20. Yes, NVEncC interlaced encoding implementation works (I verified - correct field order, intact fields), but ffmpeg's NVEnc implentation doesn't
    Quote Quote  
  21. Member hydra3333's Avatar
    Join Date
    Oct 2009
    Location
    Australia
    Search Comp PM
    Thank you.

    Originally Posted by poisondeathray View Post
    Nvidia does have a GPU deinterlacer, but it's on the DEcoding portion (PureVideo), not the NVEnc encoding portion. I don't think you can access it through ffmpeg. You can access it through an avs script if you have DGDecNV. Quality isn't that great, it's similar to yadif
    Yes; oh well I'd hoped there was a GPU deinterlacer accessible from within ffmpeg.
    AVS isn't a goer for me. I tried, thinking "you beaut, GPU mpeg2 hardware decoding/deinterlacing and GPU h.264 hardware encoding", but for various reasons I am wedded to an old avisynth v2.57 which the newer ffmpeg build refuses to use directly (byo build of ffmpeg requires v2.6 or greater).

    I suppose I could try avs2yuv with an AVS vs script, for PAL-SD GPU mpeg2 hardware decoding/deinterlacing feeding ffmpeg's NVEnc, sort of like
    Code:
    ".\avs2yuv.exe" "script.avs" -o - | ".\ffmpeg.exe" - --stdin y4m --thread-input --threads 8 -filter:v setdar=dar=16/9,unsharp -r 25 -c:v nvenc -preset hq -b:v 1900k -minrate 500k -maxrate 5000k -profile:v high -level 4.1 -coder 0 -bf 3 -g 50 ... etc
    Not sure about effects of large bus transfers left right and center but then it'd still be not much use to for me for the files which I need to keep as interlaced since you pointed out ffmpeg's nvenc doesn't do interlaced ...

    PS what ffmpeg switches can you use to pass to nvenc to achieve get I,P, 3 max b-frames ?
    -bf 3 => max 3 b-frames
    -g => max GOP size. I don't know what is "ideal" for NVEnc, but it's 250 for x264 default. It was something like 12 at default for ffmpeg NVEnc, very poor efficiency
    Thanks. I wonder, does ffmpeg's nvenc takes any notice of the settings ?
    Quote Quote  
  22. Member hydra3333's Avatar
    Join Date
    Oct 2009
    Location
    Australia
    Search Comp PM
    I also wonder if it could be possible for an ffmpeg developer to port relevant NVEncC code to "transfer" the interlaced settings and whatnot into ffmpeg for nvenc without breaking any licensing ?

    For posterity, an ubuntu based fmfpeg.exe-for-windows build script is here https://github.com/rdp/ffmpeg-windows-build-helpers
    Build like
    Code:
    sudo ./cross_compile_ffmpeg.sh --gcc-cpu-count=2 --build-ffmpeg-shared=n --build-ffmpeg-static=y --disable-nonfree=n --build-libmxf=n --build-mp4box=n --build-mplayer=n --build-vlc=n --git-get-latest=y --prefer-stable=n --high-bitdepth=n --compiler-flavors=win32 --cflags="-march=sandybridge"
    Noting -march obtained via https://wiki.gentoo.org/wiki/GCC_optimization and https://gcc.gnu.org/onlinedocs/gcc/x86-Options.html
    Last edited by hydra3333; 27th Nov 2015 at 23:07.
    Quote Quote  
  23. Yes, ffmpeg's nvenc uses -bf and -g. The quality difference is huge. That' s the first thing I noticed - why is the quality so poor compared to NVEncC (which already isn't that great compared to x264) so I looked closer at the bitstream - That's the main reason, no b-frames, short keyframe interval. In typical bitrate ranges you're already >50% worse off in terms of compression.

    The ffmpeg nvenc code has provisions for interlaced encoding , and the output is flagged correctly
    https://www.ffmpeg.org/doxygen/2.7/nvenc_8c_source.html

    But there are big problems with it, quality wise. Something isn't implemented correctly because it works in NVEncC
    Quote Quote  
  24. Originally Posted by poisondeathray View Post
    Nvidia does have a GPU deinterlacer, but it's on the DEcoding portion (PureVideo) , not the NVEnc encoding portion. I don' t think you can access it through ffmpeg.
    ffmpeg doesn't support HW decoders - ffplay should support HW decoding - not sure why so different approach but ffmpeg is full this kind of weird discrepancies...

    Not sure if ffplay can stream HW decoded trough pipe to ffmpeg...
    Quote Quote  
  25. FFmpeg supports HW decoders through -hwaccel , but in reality it's not useful - at least not on windows. In my tests , the speed is the same or slower at least for dxva2. Selur had similar experience noted in this thread
    http://forum.doom9.org/showthread.php?t=170793

    VDPAU for NVidia is supported in FFmpeg, but only in linux. It supports deinterlacing
    https://trac.ffmpeg.org/wiki/HWAccelIntro
    http://http.download.nvidia.com/XFree86/vdpau/doxygen/html/index.html

    If you have quicksync, qsv can be used to decode and encode. I haven't gotten around to testing the ffmpeg implementation yet. (If you have quicksync, you probably wouldn't use NVEnc, it's slower but the quality is much better at least on haswell or newer)
    Quote Quote  
  26. Member hydra3333's Avatar
    Join Date
    Oct 2009
    Location
    Australia
    Search Comp PM
    Originally Posted by poisondeathray View Post
    FFmpeg supports HW decoders through -hwaccel , but in reality it's not useful - at least not on windows. In my tests , the speed is the same or slower at least for dxva2. Selur had similar experience noted in this thread
    http://forum.doom9.org/showthread.php?t=170793

    VDPAU for NVidia is supported in FFmpeg, but only in linux. It supports deinterlacing
    https://trac.ffmpeg.org/wiki/HWAccelIntro
    http://http.download.nvidia.com/XFree86/vdpau/doxygen/html/index.html

    If you have quicksync, qsv can be used to decode and encode. I haven't gotten around to testing the ffmpeg implementation yet. (If you have quicksync, you probably wouldn't use NVEnc, it's slower but the quality is much better at least on haswell or newer)
    Still looking to
    1. deinterlace using ffmpeg with an NVidia card
    2. and, encode interlaced with ffmpeg with an NVidia card
    New news on updates or changes, if any, welcomed

    I receive an ffmpeg error trying to use -hwaccel with mpeg2 input (win10, latest nvidia drivers, 750Ti nvidia card).
    May I enquire on your commandline ?
    Quote Quote  
  27. Member vhelp's Avatar
    Join Date
    Mar 2001
    Location
    New York
    Search Comp PM
    You could keep an eye open at Rigaya's website for the NVEnc updates.

    https://translate.googleusercontent.com/translate_c?depth=1&hl=en&prev=search&rurl=tra...aAGrEsv8UAXQDA

    Then, pass your mouse over the download link just below the heading on that page for the latest version.

    use { NVEnc --check-features } for what your current cpu is capable of. Then run your battery of trial and error tests encodes.

    I think that these hardware encoders follow the same encoding limitations. They seem to do better on 1920x1080 pixels. Lower resolution tends to produce poor quality no matter what settings used. These encoders want clean video. Anything with compression artifacts will produce poor results once encoded by these encoders. Well, that's been my experience with QSVenc, which is from same developer, by the way. In my personal opinion, I think that Intel's Quick Sync hardware encoder produces the best quality, but then again, no one is posting actual samples (commercial movies) from NVidia and AMD devices for me to gauge from. So, I gotta believe that qs is the best so far.
    Quote Quote  
  28. Member hydra3333's Avatar
    Join Date
    Oct 2009
    Location
    Australia
    Search Comp PM
    Referenced here as a "more genuine" NVEncC thread.

    A fair bit of water has gone under this bridge

    NVEncC can input vapoursynth .py files.
    Great ! It means I can use DG's fantastic gpu enabled software filters in vapoursynth ... now I'm not sure how to also pass audio through the vapoursynth chain ...

    Originally Posted by hydra3333 View Post
    Ah. NVEncC ... I don't how to also read/pass audio from the .mpg source file through vapoursynth (DG's h/w reader and deinterlacer and sharpener) into nvencc for re-encoding.
    I suppose volume leveling (eg with loudnorm) would have to be done separately ?
    An issue is TV capture .mpg files with large-ish internal audio/video offset setting, which some s/w handles but not others.

    Does anyone do this stuff ? I suppose everyone must to get a usable final video, but what is is that people do ?
    Quote Quote  
  29. As a side note:
    NVEncC also offers lots of video post processing filters from the vpu chip.
    -> check the '--vpp-.. options.
    Code:
    NVEncC (x64) 4.29 (r977) by rigaya, Dec 17 2018 12:04:34 (VC 1900/Win/avx2)
      [NVENC API v8.1, CUDA 8.0]
     reader: raw, avi, avs, vpy, avhw [H.264/AVC, H.265/HEVC, MPEG2, VP8, VP9, VC-1, MPEG1, MPEG4]
    Usage: NVEncC.exe [Options] -i <input file> -o <output file>
    
    Input can be avi, avs, raw YUV, YUV4MPEG2(y4m).
    When Input is in raw format, fps, input-res is required.
    
    Ouput format will be in raw H.264/AVC or H.265/HEVC ES.
    
    Example:
      NVEncC -i "<avsfilename>" -o "<outfilename>"
      avs2pipemod -y4mp "<avsfile>" | NVEncC --y4m -i - -o "<outfilename>"
    
    Information Options: 
    -h,-? --help                    print help
    -v,--version                    print version info
       --check-device               show DeviceId for GPUs available on system
       --check-hw [<int>]           check NVEnc codecs for specified DeviceId
                                      if unset, will check DeviceId #0
       --check-features [<int>]     check for NVEnc Features for specified DeviceId
                                      if unset, will check DeviceId #0
       --check-environment          check for Environment Info
       --check-avversion            show dll version
       --check-codecs               show codecs available
       --check-encoders             show audio encoders available
       --check-decoders             show audio decoders available
       --check-profiles <string>    show profile names available for specified codec
       --check-formats              show in/out formats available
       --check-protocols            show in/out protocols available
       --check-filters              show filters available
    
    
    Basic Encoding Options: 
    -d,--device <int>               set DeviceId used in NVEnc (default:-1 as auto)
                                      use --check-device to show device ids.
    
    -i,--input <filename>           set input filename
    -o,--output <filename>          set output filename
    
     Input formats (auto detected from extension of not set)
       --raw                        set input as raw format
       --y4m                        set input as y4m format
       --avi                        set input as avi format
       --avs                        set input as avs format
       --vpy                        set input as vpy format
       --vpy-mt                     set input as vpy(mt) format
       --avhw [<string>]           use libavformat + cuvid for input
                                     this enables full hw transcode and resize.
                                     avhw mode could be set as a  option
                                      - native (default)
                                      - cuda
       --avsw                       set input to use avcodec + sw decoder
       --input-analyze <int>       set time (sec) which reader analyze input file.
                                     default: 5 (seconds).
                                     could be only used with avhw/avsw reader.
                                     use if reader fails to detect audio stream.
       --video-track <int>          set video track to encode in track id
                                     1 (default)  highest resolution video track
                                     2            next high resolution video track
                                       ... 
                                     -1           lowest resolution video track
                                     -2           next low resolution video track
                                       ... 
       --video-streamid <int>       set video track to encode in stream id
       --audio-source <string>      input extra audio file
       --audio-file [<int>?][<string>:]<string>
                                    extract audio into file.
                                     could be only used with avhw/avsw reader.
                                     below are optional,
                                      in [<int>?], specify track number to extract.
                                      in [<string>?], specify output format.
       --trim <int>:<int>[,<int>:<int>]...
                                    trim video for the frame range specified.
                                     frame range should not overwrap each other.
       --seek [<int>:][<int>:]<int>[.<int>] (hh:mm:ss.ms)
                                    skip video for the time specified,
                                     seek will be inaccurate but fast.
       --input-format <string>      set input format of input file.
                                     this requires use of avhw/avsw reader.
    -f,--output-format <string>     set output format of output file.
                                     if format is not specified, output format will
                                     be guessed from output file extension.
                                     set "raw" for H.264/ES output.
       --audio-copy [<int>[,...]]   mux audio with video during output.
                                     could be only used with
                                     avhw/avsw reader and avcodec muxer.
                                     by default copies all audio tracks.
                                     "--audio-copy 1,2" will extract
                                     audio track #1 and #2.
       --audio-codec [<int>?]<string>
                                    encode audio to specified format.
                                      in [<int>?], specify track number to encode.
       --audio-profile [<int>?]<string>
                                    specify audio profile.
                                      in [<int>?], specify track number to apply.
       --audio-bitrate [<int>?]<int>
                                    set encode bitrate for audio (kbps).
                                      in [<int>?], specify track number of audio.
       --audio-ignore-decode-error <int>  (default: 10)
                                    set numbers of continuous packets of audio decode
                                     error to ignore, replaced by silence.
       --audio-samplerate [<int>?]<int>
                                    set sampling rate for audio (Hz).
                                      in [<int>?], specify track number of audio.
       --audio-resampler <string>   set audio resampler.
                                      swr (swresampler: default), soxr (libsoxr)
       --audio-stream [<int>?][<string1>][:<string2>][,[<string1>][:<string2>]][..
           set audio streams in channels.
             in [<int>?], specify track number to split.
             in <string1>, set input channels to use from source stream.
               if unset, all input channels will be used.
             in <string2>, set output channels to mix.
               if unset, all input channels will be copied without mixing.
           example1: --audio-stream FL,FR
             splitting dual mono audio to each stream.
           example2: --audio-stream :stereo
             mixing input channels to stereo.
           example3: --audio-stream 5.1,5.1:stereo
             keeping 5.1ch audio and also adding downmixed stereo stream.
           usable symbols
             mono       = FC
             stereo     = FL + FR
             2.1        = FL + FR + LFE
             3.0        = FL + FR + FC
             3.0(back)  = FL + FR + BC
             3.1        = FL + FR + FC + LFE
             4.0        = FL + FR + FC + BC
             quad       = FL + FR + BL + BR
             quad(side) = FL + FR + SL + SR
             5.0        = FL + FR + FC + SL + SR
             5.1        = FL + FR + FC + LFE + SL + SR
             6.0        = FL + FR + FC + BC + SL + SR
             6.0(front) = FL + FR + FLC + FRC + SL + SR
             hexagonal  = FL + FR + FC + BL + BR + BC
             6.1        = FL + FR + FC + LFE + BC + SL + SR
             6.1(front) = FL + FR + LFE + FLC + FRC + SL + SR
             7.0        = FL + FR + FC + BL + BR + SL + SR
             7.0(front) = FL + FR + FC + FLC + FRC + SL + SR
             7.1        = FL + FR + FC + LFE + BL + BR + SL + SR
             7.1(wide)  = FL + FR + FC + LFE + FLC + FRC + SL + SR
       --audio-filter [<int>?]<string>
                                    set audio filter.
                                      in [<int>?], specify track number of audio.
       --chapter-copy               copy chapter to output file.
       --chapter <string>           set chapter from file specified.
       --key-on-chapter             set key frame on chapter.
       --sub-copy [<int>[,...]]     copy subtitle to output file.
                                     these could be only used with
                                     avhw/avsw reader and avcodec muxer.
                                     below are optional,
                                      in [<int>?], specify track number to copy.
       --caption2ass [<string>]     enable caption2ass during encode.
                                      !! This feature requires Caption.dll !!
                                     supported formats ... srt (default), ass
    
       --avsync <string>            method for AV sync (default: cfr)
                                     cfr      ... assume cfr
                                     forcecfr ... check timestamp and force cfr
                                     vfr      ... honor source timestamp and enable vfr output.
                                                  only available for avsw/avhw reader,
                                                  and could not be used with --trim.
    -m,--mux-option <string1>:<string2>
                                    set muxer option name and value.
                                     these could be only used with
                                     avhw/avsw reader and avcodec muxer.
       --input-res <int>x<int>        set input resolution
       --crop <int>,<int>,<int>,<int> crop pixels from left,top,right,bottom
                                        left crop is unavailable with avhw reader
       --output-res <int>x<int>     set output resolution
       --fps <int>/<int> or <float> set framerate
    
    -c,--codec <string>             set output codec
                                      h264 (or avc), h265 (or hevc)
       --profile <string>           set codec profile
                                      H.264: baseline, main, high(default), high444
                                      HEVC : main, main10, main444
       --tier <string>              set codec tier
                                      HEVC : main, high
       --lossless                   for lossless (YUV444 only) / default: off
       --level <string>             set codec level
                                    - H.264: auto(default), 1, 1b, 1.1, 1.2, 1.3
                                             2, 2.1, 2.2, 3, 3.1, 3.2, 4, 4.1, 4.2
                                             5, 5.1, 5.2
                                    - HEVC:  auto(default), 1, 2, 2.1, 3, 3.1, 4
                                             4.1, 5, 5.1, 5.2, 6, 6.1, 6.2
       --output-depth <int>         set output bit depth ( 8(default), 10 )
       --sar <int>:<int>            set Sample  Aspect Ratio
       --dar <int>:<int>            set Display Aspect Ratio
    
       --cqp <int> or               encode in Constant QP mode
             <int>:<int>:<int>        default: <I>:<P>:<B>=<20>:<23>:<25>
       --vbr <int>                  set bitrate for VBR mode (kbps)
       --vbrhq <int>                set bitrate for VBR (High Quality) mode (kbps)
       --cbr <int>                  set bitrate for CBR mode (kbps)
       --cbrhq <int>                set bitrate for CBR (High Quality) mode (kbps)
                                      default: 7500 kbps
    
       --preset <string>            set encoder preset
                                      default, performance, quality
    
       --vbr-quality <float>        target quality for VBR mode (0-51, 0=auto)
       --max-bitrate <int>          set Max Bitrate (kbps)
       --qp-init <int> or           set initial QP
                 <int>:<int>:<int>    default: auto
       --qp-max <int> or            set max QP
                <int>:<int>:<int>     default: unset
       --qp-min <int> or            set min QP
                 <int>:<int>:<int>    default: unset
       --gop-len <int>              set GOP Length / default: 0 frames (auto)
       --lookahead <int>            enable lookahead and set lookahead depth (1-32)
                                      default: 16 frames
       --strict-gop                 avoid GOP len fluctuation
       --no-i-adapt                 disable adapt. I frame insertion
       --no-b-adapt                 disable adapt. B frame insertion
                                      for lookahead mode only, default: off
    -b,--bframes <int>              set number of consecutive B frames
                                      default: H.264 - 3 frames, HEVC - 0 frames
       --ref <int>                  set Ref frames / default 3 frames
       --weightp                    enable weighted prediction for P frame
       --mv-precision <string>      set MV Precision / default: auto
                                      auto,
                                      Q-pel (High Quality),
                                      half-pel,
                                      full-pel (Low Quality, not recommended)
       --slices <int>               number of slices, default 0 (auto)
       --vbv-bufsize <int>          set vbv buffer size (kbit) / default: auto
       --(no-)aq                    enable spatial adaptive quantization
       --aq-temporal                [H264] enable temporal adaptive quantization
       --aq-strength <int>          [H264] set aq strength (weak 1 - 15 strong)
                                      default: 0 = auto
       --bref-mode <string>         [H264] set B frame reference mode
                                      - disabled (default)
                                      - each
                                      - middle
       --direct <string>            [H264] set B Direct mode
                                      auto(default), none, spatial, temporal
       --(no-)adapt-transform       [H264] set adaptive transform mode (default=auto)
    
       --cabac                      [H264] use CABAC
       --cavlc                      [H264] use CAVLC (no CABAC)
       --bluray                     [H264] for bluray / default: off
       --(no-)deblock               [H264] enable(disable) deblock filter
    
       --cu-max <int>               [HEVC] set max CU size
       --cu-min  <int>              [HEVC] set min CU size
                                      8, 16, 32 are avaliable
        warning: it is not recommended to use --cu-max or --cu-min,
                 leaving it auto will enhance video quality.
       --videoformat <string>       undef, ntsc, component, pal, secam, mac
                                     default: undef
       --colormatrix <string>       undef, auto, bt709, smpte170m, bt470bg
                                    smpte240m, YCgCo, fcc, GBR, bt2020nc
                                    bt2020c
                                     default: undef
       --colorprim <string>         undef, auto, bt709, smpte170m, bt470m
                                    bt470bg, smpte240m, film, bt2020
                                     default: undef
       --transfer <string>          undef, auto, bt709, smpte170m, bt470m
                                    bt470bg, smpte240m, linear, log100, log316
                                    iec61966-2-4, bt1361e, iec61966-2-1
                                    bt2020-10, bt2020-12, smpte2084, smpte428
                                    arib-srd-b67
                                     default: undef
       --aud                        insert aud nal unit to ouput stream.
       --pic-struct                 insert pic-timing SEI with pic_struct.
       --chromaloc <int>            set chroma location flag [ 0 ... 5 ]
                                      default: 0 = unspecified
       --fullrange                  set fullrange
       --max-cll <int>,<int>        set MaxCLL and MaxFall in nits. e.g. "1000,300"
       --master-display <string>    set Mastering display data.
          e.g. "G(13250,34500)B(7500,3000)R(34000,16000)WP(15635,16450)L(10000000,1)"
    
       --interlace <string>         set input as interlaced
                                      tff, bff
       --vpp-deinterlace <string>   set deinterlace mode / default: none
                                      none, bob, adaptive (normal)
                                      available only with avhw reader
       --vpp-resize <string>        default, nn, npp_linear, cubic, super
                                    lanczos, bilinear, spline36
                                     default: default
       --vpp-gauss <int>            disabled, 3, 5, 7
                                     default: disabled
       --vpp-knn [<param1>=<value>][,<param2>=<value>][...]
         enable denoise filter by K-nearest neighbor.
        params
          radius=<int>              radius of knn (default=3)
          strength=<float>          strength of knn (default=0.08, 0.0-1.0)
          lerp=<float>              balance of orig & blended pixel (default=0.20)
                                      lower value results strong denoise.
          th_lerp=<float>           edge detect threshold (default=0.80, 0.0-1.0)
                                      higher value will preserve edge.
    
       --vpp-pmd [<param1>=<value>][,<param2>=<value>][...]
         enable denoise filter by pmd.
        params
          apply_count=<int>         count to apply pmd denoise (default=2)
          strength=<float>          strength of pmd (default=100.00, 0.0-100.0)
          threshold=<float>         threshold of pmd (default=100.00, 0.0-255.0)
                                      lower value will preserve edge.
    
       --vpp-unsharp [<param1>=<value>][,<param2>=<value>][...]
         enable unsharp filter.
        params
          radius=<int>              filter range for edge detection (default=3, 1-9)
          weight=<float>            strength of filter (default=0.50, 0-10)
          threshold=<float>         min brightness change to be sharpened (default=10.00, 0-255)
    
       --vpp-edgelevel [<param1>=<value>][,<param2>=<value>][...]
         edgelevel filter to enhance edge.
        params
          strength=<float>          strength (default=0, -31 - 31)
          threshold=<float>         threshold to ignore noise (default=20.0, 0-255)
          black=<float>             allow edge to be darker on edge enhancement
                                      (default=0.0, 0-31)
          white=<float>             allow edge to be brighter on edge enhancement
                                      (default=0.0, 0-31)
    
       --vpp-deband [<param1>=<value>][,<param2>=<value>][...]
         enable deband filter.
        params
          range=<int>               range (default=15, 0-127)
          sample=<int>              sample (default=1, 0-2)
          thre=<int>                threshold for y, cb & cr
          thre_y=<int>              threshold for y (default=15, 0-31)
          thre_cb=<int>             threshold for cb (default=15, 0-31)
          thre_cr=<int>             threshold for cr (default=15, 0-31)
          dither=<int>              strength of dither for y, cb & cr
          dither_y=<int>            strength of dither for y (default=15, 0-31)
          dither_c=<int>            strength of dither for cb/cr (default=15, 0-31)
          seed=<int>                rand seed (default=1234)
          blurfirst                 blurfirst (default=off)
          rand_each_frame           generate rand for each frame (default=off)
       --vpp-afs [<param1>=<value>][,<param2>=<value>][...]
         enable auto field shift deinterlacer
        params
          preset=<string>
              default, triple, double, anime, cinema, min_afterimg,
              24fps, 24fps_sd, 30fps
          ini=<string>
              read setting from ini file specified (output of afs.auf)
    
          !! params from preset & ini will be overrided by user settings below !!
    
                       Aviutl????????
          top=<int>           (?)         clip range to scan (default=16)
          bottom=<int>        (?)         clip range to scan (default=16)
          left=<int>          (?)         clip range to scan (default=32)
          right=<int>         (?)         clip range to scan (default=32)
                                            left & right must be muitiple of 4
          method_switch=<int> (???)     (default=0, 0-256)
          coeff_shift=<int>   (???)     (default=192, 0-256)
          thre_shift=<int>    (?(???)) stripe(shift)thres (default=128, 0-1024)
          thre_deint=<int>    (?(??))   stripe(deint)thres (default=48, 0-1024)
          thre_motion_y=<int> (Y??)      Y motion threshold (default=112, 0-1024)
          thre_motion_c=<int> (C??)      C motion threshold (default=224, 0-1024)
          level=<int>         (??Lv)     set deint level    (default=3, 0-4
          shift=<bool>  (????????) enable field shift (default=on)
          drop=<bool>   (????)         enable frame drop  (default=off)
          smooth=<bool> (??????)     enable smoothing   (default=off)
          24fps=<bool>  (24fps?)          force 30fps->24fps (default=off)
          tune=<bool>   (?????)       show scan result   (default=off)
          rff=<bool>                       rff flag aware     (default=off)
          timecode=<bool>                  output timecode    (default=off)
          log=<bool>                       output log         (default=off)
    
       --vpp-rff                    apply rff flag, with avhw reader only.
    
       --vpp-tweak [<param1>=<value>][,<param2>=<value>][...]
         apply brightness, constrast, gamma, hue adjustment.
        params
          brightness=<float>        (default=0.0, -1.0 - 1.0)
          contrast=<float>          (default=1.0, -2.0 - 2.0)
          gamma=<float>             (default=1.0,  0.1 - 10.0)
          saturation=<float>        (default=1.0,  0.0 - 3.0)
          hue=<float>               (default=0.0, -180 - 180)
    
       --vpp-pad <int>,<int>,<int>,<int>
         add padding to left,top,right,bottom (in pixels)
    
       --vpp-select-every <int>[,offset=<int>]
         select one frame per specified frames and create output.
       --vpp-delogo <string>        set delogo file path
       --vpp-delogo-select <string> set target logo name or auto select file
                                     or logo index starting from 1.
       --vpp-delogo-pos <int>:<int> set delogo pos offset
       --vpp-delogo-depth <int>     set delogo depth [default:128]
       --vpp-delogo-y  <int>        set delogo y  param
       --vpp-delogo-cb <int>        set delogo cb param
       --vpp-delogo-cr <int>        set delogo cr param
       --vpp-perf-monitor           check duration of each filter.
                                      may decrease overall transcode performance.
       --cuda-schedule <string>     set cuda schedule mode (default: sync).
           auto  : let cuda driver to decide
           spin  : CPU will spin when waiting GPU tasks,
                   will provide highest performance but with high CPU utilization.
           yield : CPU will yield when waiting GPU tasks.
           sync  : CPU will sleep when waiting GPU tasks, performance might
                    drop slightly, while CPU utilization will be lower,
                    especially on HW decode mode.
    
       --output-buf <int>           buffer size for output in MByte
                                     default 8 MB (0-128)
       --max-procfps <int>         limit encoding speed for lower utilization.
                                     default:0 (no limit)
       --output-thread <int>        set output thread num
                                     -1: auto (= default)
                                      0: disable (slow, but less memory usage)
                                      1: use one thread
    
       --log <string>               set log file name
       --log-level <string>         set log level
                                      debug, info(default), warn, error
       --log-framelist <string>     output frame info of avhw reader to path
    
       --perf-monitor [<string>][,<string>]...
           check performance info of encoder and output to log file
           select counter from below, default = all
                                     
         counters for perf-monitor
                                     all          ... monitor all info
                                     cpu_total    ... cpu total usage (%)
                                     cpu_kernel   ... cpu kernel usage (%)
                                     cpu_main     ... cpu main thread usage (%)
                                     cpu_enc      ... cpu encode thread usage (%)
                                     cpu_in       ... cpu input thread usage (%)
                                     cpu_out      ... cpu output thread usage (%)
                                     cpu_aud_proc ... cpu aud proc thread usage (%)
                                     cpu_aud_enc  ... cpu aud enc thread usage (%)
                                     cpu          ... monitor all cpu info
                                     gpu_load    ... gpu usage (%)
                                     gpu_clock   ... gpu avg clock
                                     vee_load    ... gpu video encoder usage (%)
                                     ve_clock    ... gpu video engine clock
                                     gpu         ... monitor all gpu info
                                     queue       ... queue usage
                                     mem_private ... private memory (MB)
                                     mem_virtual ... virtual memory (MB)
                                     mem         ... monitor all memory info
                                     io_read     ... io read  (MB/s)
                                     io_write    ... io write (MB/s)
                                     io          ... monitor all io info
                                     fps         ... encode speed (fps)
                                     fps_avg     ... encode avg. speed (fps)
                                     bitrate     ... encode bitrate (kbps)
                                     bitrate_avg ... encode avg. bitrate (kbps)
                                     frame_out   ... written_frames
                                     
       --perf-monitor-interval <int> set perf monitor check interval (millisec)
                                     default 500, must be 50 or more
    users currently on my ignore list: deadrats, Stears555
    Quote Quote  



Similar Threads

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