VideoHelp Forum
+ Reply to Thread
Results 1 to 4 of 4
Thread
  1. Hi, Recently I was testing and comparing different bitrates and resolutions encodes of VP9 and HEVC using FFMPEG and x265 respectively, now what I need to prove is the VP9 (profile 2) of 10 bit, I understand that I need a version of ffmpeg configured with --enable-vp9-highbitdepth, but before getting into that I would like to try other possibilities.
    Searching the forum I found this post https://forum.videohelp.com/threads/368407-Anyone-tested-VP9-10bit where they use ffmpeg and vpxenc.

    The command line that I am using is the following:
    ffmpeg.exe -i "video.m2ts" -s 3840x2160 -r 23.976 -an -sn -f rawvideo -pix_fmt yuv444p10le - | vpxenc.exe -v --bit-depth = 10 --input-bit-depth = 10 --i420 --profile = 2 --passes = 1 --pass = 1 --good --codec = vp9 --fps = 24000/1001 -w 3840 -h 2160 --target-bitrate = 50000 - -o "output.webm"
    The following error appears:

    ffmpeg version N-83372-g08b0981 Copyright (c) 2000-2017 the FFmpeg developers
    built with gcc 5.4.0 (GCC)
    configuration: --enable-gpl --enable-version3 --enable-cuda --enable-cuvid --enable-d3d11va --enable-dxva2 --enable-libmfx --enable-nvenc --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-lzma --enable-decklink --enable-zlib
    libavutil 55. 46.100 / 55. 46.100
    libavcodec 57. 75.100 / 57. 75.100
    libavformat 57. 66.101 / 57. 66.101
    libavdevice 57. 2.100 / 57. 2.100
    libavfilter 6. 72.100 / 6. 72.100
    libswscale 4. 3.101 / 4. 3.101
    libswresample 2. 4.100 / 2. 4.100
    libpostproc 54. 2.100 / 54. 2.100
    Input #0, mpegts, from '00002.m2ts':
    Duration: 00:01:03.61, start: 4200.000000, bitrate: 63898 kb/s
    Program 1
    Stream #0:0[0x1011]: Video: hevc (Main 10) (HEVC / 0x43564548), yuv420p10le(tv, bt2020nc/bt2020/smpte2084), 3840x2160 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 90k tbn, 23.98 tbc
    Output #0, rawvideo, to 'pipe:':
    Metadata:
    encoder : Lavf57.66.101
    Stream #0:0: Video: rawvideo (Y3[0][10] / 0xA003359), yuv444p10le, 3840x2160 [SAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 23.98 fps, 23.98 tbn, 23.98 tbc
    Metadata:
    encoder : Lavc57.75.100 rawvideo
    Stream mapping:
    Stream #0:0 -> #0:0 (hevc (native) -> rawvideo (native))
    Press [q] to stop, [?] for help
    Error: Unrecognized option --bit-depth=10

    Usage: vpxenc <options> -o dst_filename src_filename

    Options:
    -D, --debug Debug mode (makes output deterministic)
    -o <arg>, --output=<arg> Output filename
    --codec=<arg> Codec to use
    -p <arg>, --passes=<arg> Number of passes (1/2)
    --pass=<arg> Pass to execute (1/2)
    --fpf=<arg> First pass statistics file name
    --limit=<arg> Stop encoding after n input frames
    --skip=<arg> Skip the first n input frames
    -d <arg>, --deadline=<arg> Deadline per frame (usec)
    --best Use Best Quality Deadline
    --good Use Good Quality Deadline
    --rt Use Realtime Quality Deadline
    -q, --quiet Do not print encode progress
    -v, --verbose Show encoder parameters
    --psnr Show PSNR in status line
    --webm Output WebM (default when WebM IO is enabled)
    --ivf Output IVF
    -P, --output-partitions Makes encoder output partitions. Requires IVF output!
    --q-hist=<arg> Show quantizer histogram (n-buckets)
    --rate-hist=<arg> Show rate histogram (n-buckets)
    --disable-warnings Disable warnings about potentially incorrect encode settings.
    -y, --disable-warning-prompt Display warnings, but do not prompt user to continue.
    --test-decode=<arg> Test encode/decode mismatch
    off, fatal, warn

    Encoder Global Options:
    --yv12 Input file is YV12
    --i420 Input file is I420 (default)
    --i422 Input file is I422
    --i444 Input file is I444
    --i440 Input file is I440
    -u <arg>, --usage=<arg> Usage profile number to use
    -t <arg>, --threads=<arg> Max number of threads to use
    --profile=<arg> Bitstream profile number to use
    -w <arg>, --width=<arg> Frame width
    -h <arg>, --height=<arg> Frame height
    --stereo-mode=<arg> Stereo 3D video format
    mono, left-right, bottom-top, top-bottom, right-left
    --timebase=<arg> Output timestamp precision (fractional seconds)
    --fps=<arg> Stream frame rate (rate/scale)
    --error-resilient=<arg> Enable error resiliency features
    --lag-in-frames=<arg> Max number of frames to lag

    Rate Control Options:
    --drop-frame=<arg> Temporal resampling threshold (buf %)
    --resize-allowed=<arg> Spatial resampling enabled (bool)
    --resize-width=<arg> Width of encoded frame
    --resize-height=<arg> Height of encoded frame
    --resize-up=<arg> Upscale threshold (buf %)
    --resize-down=<arg> Downscale threshold (buf %)
    --end-usage=<arg> Rate control mode
    vbr, cbr, cq, q
    --target-bitrate=<arg> Bitrate (kbps)
    --min-q=<arg> Minimum (best) quantizer
    --max-q=<arg> Maximum (worst) quantizer
    --undershoot-pct=<arg> Datarate undershoot (min) target (%)
    --overshoot-pct=<arg> Datarate overshoot (max) target (%)
    --buf-sz=<arg> Client buffer size (ms)
    --buf-initial-sz=<arg> Client initial buffer size (ms)
    --buf-optimal-sz=<arg> Client optimal buffer size (ms)

    Twopass Rate Control Options:
    --bias-pct=<arg> CBR/VBR bias (0=CBR, 100=VBR)
    --minsection-pct=<arg> GOP min bitrate (% of target)
    --maxsection-pct=<arg> GOP max bitrate (% of target)

    Keyframe Placement Options:
    --kf-min-dist=<arg> Minimum keyframe interval (frames)
    --kf-max-dist=<arg> Maximum keyframe interval (frames)
    --disable-kf Disable keyframe placement

    VP8 Specific Options:
    --cpu-used=<arg> CPU Used (-16..16)
    --auto-alt-ref=<arg> Enable automatic alt reference frames
    --noise-sensitivity=<arg> Noise sensitivity (frames to blur)
    --sharpness=<arg> Loop filter sharpness (0..7)
    --static-thresh=<arg> Motion detection threshold
    --token-parts=<arg> Number of token partitions to use, log2
    --arnr-maxframes=<arg> AltRef max frames (0..15)
    --arnr-strength=<arg> AltRef filter strength (0..6)
    --arnr-type=<arg> AltRef type
    --tune=<arg> Material to favor
    psnr, ssim
    --cq-level=<arg> Constant/Constrained Quality level
    --max-intra-rate=<arg> Max I-frame bitrate (pct)
    --gf-cbr-boost=<arg> Boost for Golden Frame in CBR mode (pct)
    --screen-content-mode=<arg Screen content mode

    VP9 Specific Options:
    --cpu-used=<arg> CPU Used (-8..8)
    --auto-alt-ref=<arg> Enable automatic alt reference frames
    --sharpness=<arg> Loop filter sharpness (0..7)
    --static-thresh=<arg> Motion detection threshold
    --tile-columns=<arg> Number of tile columns to use, log2
    --tile-rows=<arg> Number of tile rows to use, log2 (set to 0 while threads > 1)
    --arnr-maxframes=<arg> AltRef max frames (0..15)
    --arnr-strength=<arg> AltRef filter strength (0..6)
    --arnr-type=<arg> AltRef type
    --tune=<arg> Material to favor
    psnr, ssim
    --cq-level=<arg> Constant/Constrained Quality level
    --max-intra-rate=<arg> Max I-frame bitrate (pct)
    --max-inter-rate=<arg> Max P-frame bitrate (pct)
    --gf-cbr-boost=<arg> Boost for Golden Frame in CBR mode (pct)
    --lossless=<arg> Lossless mode (0: false (default), 1: true)
    --frame-parallel=<arg> Enable frame parallel decodability features
    --aq-mode=<arg> Adaptive quantization mode (0: off (default), 1: variance 2: complexity, 3: cyclic refresh, 4: equator360)
    --alt-ref-aq=<arg> Special adaptive quantization for the alternate reference frames.
    --frame-boost=<arg> Enable frame periodic boost (0: off (default), 1: on)
    --noise-sensitivity=<arg> Noise sensitivity (frames to blur)
    --tune-content=<arg> Tune content type
    default, screen
    --color-space=<arg> The color space of input content:
    unknown, bt601, bt709, smpte170, smpte240, bt2020, reserved, sRGB
    --min-gf-interval=<arg> min gf/arf frame interval (default 0, indicating in-built behavior)
    --max-gf-interval=<arg> max gf/arf frame interval (default 0, indicating in-built behavior)
    --target-level=<arg> Target level (255: off (default); 0: only keep level stats; 10: level 1.0; 11: level 1.1; ... 62: level 6.2)
    --row-mt=<arg> Enable row based non-deterministic multi-threading in VP9

    Stream timebase (--timebase):
    The desired precision of timestamps in the output, expressed
    in fractional seconds. Default is 1/1000.

    Included encoders:

    vp8 - WebM Project VP8 Encoder v1.6.1-510-gc530208ae
    vp9 - WebM Project VP9 Encoder v1.6.1-510-gc530208ae (default)

    Use --codec to switch to a non-default encoder.

    av_interleaved_write_frame(): Broken pipe
    Error writing trailer of pipe:: Broken pipeframe= 1 fps=0.0 q=-0.0 Lsize= 48600kB time=00:00:00.04 bitrate=9545679.5kbits/s speed=0.0721x
    video:48600kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.000000%
    Conversion failed!
    I tried the latest version of ffmpeg and I get the same error, if someone could help me with something.


    PD: Sorry for my English
    Quote Quote  
  2. LigH's VPX builds offer 10 bit encoding.
    ffmpeg -i "INPUT" -strict -1 -pix_fmt yuv420p10le -f yuv4mpegpipe - | vpxenc --codec=vp9 --fpf=STATSFILE --pass=1 --passes=2 --profile=2 --bit-depth=10 -o "OUTPUT.WEBM" -
    Quote Quote  
  3. Member hydra3333's Avatar
    Join Date
    Oct 2009
    Location
    Australia
    Search Comp PM
    Or build your own ffmpeg .exe for Windows (cross-compiling) in an ubuntu VM using https://github.com/DeadSix27/python_cross_compile_script
    (you would need to edit and add the --enable-vp9-highbitdepth setting to the 'libvpx' configure first in your local copy of the .py file)

    It's easy, the free vmware player can create VMs and you can auto-install the latest ubuntu, then follow the instructions at that site and sit back and watch it happen over a few cuppas. It even comes with and option to build a ffmpeg .exe with OpenCL. It's great. As a side-result you also get the latest vpxenc and vpxdec built too.
    Quote Quote  
  4. Code:
    Error: Unrecognized option --bit-depth=10
    
    Usage: vpxenc <options> -o dst_filename src_filename
    -> error isn't with ffmpeg, it's with the vpxenc version you are using, which wasn't build with 10bit support.
    Using Media Autobuild Suite you could build vpxenc, ffmpeg and a bunch of other tools without having to use a VM.
    alternatively LigHs builds which sneaker linked to should be fine too.

    Cu Selur
    users currently on my ignore list: deadrats, Stears555
    Quote Quote  



Similar Threads

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