Wednesday, 22 April 2015

How to use Webm

/*****************************************************************************
*                                                   Encode
******************************************************************************/
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.

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)
            --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
            --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
            --frame-parallel=<arg>     Enable frame parallel decodability features
            --aq-mode=<arg>             Adaptive quantization mode (0: off (default), 1: variance 2: complexity, 3: cyclic refresh)
            --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

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.4.0
    vp9    - WebM Project VP9 Encoder v1.4.0

Example :./vpxenc  test.yuv -o output_vp8.webm   --codec=vp8 --i420 -w 176  -h 144

/*****************************************************************************
*                                                   Decode
******************************************************************************/
Usage: ./vpxdec <options> filename

Options:
            --codec=<arg>               Codec to use
            --yv12                     Output raw YV12 frames
            --i420                     Output raw I420 frames
            --flipuv                   Flip the chroma planes in the output
            --rawvideo                 Output raw YUV frames
            --noblit                   Don't process the decoded frames
            --progress                 Show progress after each frame decodes
            --limit=<arg>               Stop decoding after n frames
            --skip=<arg>               Skip the first n input frames
            --postproc                 Postprocess decoded frames
            --summary                   Show timing summary
  -o <arg>, --output=<arg>             Output file name pattern (see below)
  -t <arg>, --threads=<arg>             Max threads to use
            --frame-parallel           Frame parallel decode
  -v,       --verbose                   Show version string
  -S,       --scale                     Scale output frames uniformly
            --frame-buffers=<arg>       Number of frame buffers to use
            --md5                       Compute the MD5 sum of the decoded frame
            --error-concealment         Enable decoder error-concealment
  -k,       --keep-going               (debug) Continue decoding after error

VP8 Postprocessing Options:
            --noise-level=<arg>         Enable VP8 postproc add noise
            --deblock                   Enable VP8 deblocking
            --demacroblock-level=<arg> Enable VP8 demacroblocking, w/ level
            --pp-debug-info=<arg>       Enable VP8 visible debug info
            --pp-dbg-ref-frame=<arg>   Display only selected reference frame per macro block
            --pp-dbg-mb-modes=<arg>     Display only selected macro block modes
            --pp-dbg-b-modes=<arg>     Display only selected block modes
            --pp-dbg-mvs=<arg>         Draw only selected motion vectors
            --mfqe                     Enable multiframe quality enhancement

Output File Patterns:

  The -o argument specifies the name of the file(s) to write to. If the
  argument does not include any escape characters, the output will be
  written to a single file. Otherwise, the filename will be calculated by
  expanding the following escape characters:

%w   - Frame width
%h   - Frame height
%<n> - Frame number, zero padded to <n> places (1..9)

  Pattern arguments are only supported in conjunction with the --yv12 and
  --i420 options. If the -o option is not specified, the output will be
  directed to stdout.

Included decoders:

    vp8    - WebM Project VP8 Decoder v1.4.0
    vp9    - WebM Project VP9 Decoder v1.4.0

Example : ./vpxdec  --codec=vp8    --rawvideo   -o  old.yuv  output_vp8.webm
/*****************************************************************************
*  Testing
******************************************************************************/
/libvpx/build/examples

http://www.webmproject.org/docs/webm-sdk/example_simple_encoder.html
./simple_encoder vp8 176 140  test.yuv  test.ivf  1 0
http://www.webmproject.org/docs/webm-sdk/example_simple_decoder.html
./simple_decoder   test.ivf  old.yuv

Installing vlc on Ubuntu
sudo apt-get update
sudo apt-get install vlc browser-plugin-vlc

/*****************************************************************************
*                                                End
******************************************************************************/

http://paulbourke.net/dataformats/yuv/
http://www.webmproject.org/docs/encoder-parameters/
http://trace.eas.asu.edu/yuv/
https://discoverybiz.net/enu0/faq/faq_YUVDataRangeByBreeze.html

No comments:

Post a Comment