Open Source Media Framework - GStreamer, Video Acceleration API (VAAPI) & Intel® Media SDK Command-Line Examples

ID 751775
Updated 3/11/2022
Version Latest
Public

author-image

By

Help

  • gstreamer help

#gst-inspect-1.0 -h

  • Check supported decoder/encoder/vpp(video post-process) list

#gst-inspect-1.0 vaapi

#gst-inspect-1.0 msdk

  • Check private option list of a decode/encode/vpp

#gst-inspect-1.0 vaapih264dec

#gst-inspect-1.0 msdkh264dec

Decode

  • AVC/H264 DECODE

gst-vaapi:

gst-launch-1.0 -vf filesrc location=./test.h264 ! h264parse ! vaapih264dec ! videoconvert ! video/x-raw,format=I420 ! checksumsink2 file-checksum=true frame-checksum=false plane-checksum=false dump-output=false qos=false
gst-msdk:

gst-launch-1.0 -vf filesrc location=./test.h264 ! h264parse ! msdkh264dec ! videoconvert ! video/x-raw,format=I420 ! checksumsink2 file-checksum=true frame-checksum=false plane-checksum=false dump-output=false qos=false

  • HEVC/H265 8BIT DECODE

gst-vaapi:

gst-launch-1.0 -vf filesrc location=./test.h265 ! h265parse ! vaapih265dec ! videoconvert ! video/x-raw,format=I420 ! checksumsink2 file-checksum=true frame-checksum=false plane-checksum=false dump-output=false qos=false
gst-msdk:

gst-launch-1.0 -vf filesrc location=./test.h265 ! h265parse ! msdkh265dec ! videoconvert ! video/x-raw,format=I420 ! checksumsink2 file-checksum=true frame-checksum=false plane-checksum=false dump-output=false qos=false

  • HEVC/H265 10BIT DECODE

gst-vaapi: gst-launch-1.0 -q filesrc location=./test-10bit.h265 ! h265parse '!' vaapih265dec ! videoconvert ! video/x-raw,format=P010_10LE ! checksumsink2 frame-checksum=FALSE file-checksum=TRUE plane-checksum=FALSE dump-output=false qos=false
gst-msdk: gst-launch-1.0 -q filesrc location=./test-10bit.h265 ! h265parse '!' msdkh265dec ! videoconvert ! video/x-raw,format=P010_10LE ! checksumsink2 frame-checksum=FALSE file-checksum=TRUE plane-checksum=FALSE dump-output=false qos=false

Playback

  • HEVC/H265 8BIT PLAYBACK

gst-vaapi:
#gst-launch-1.0 -vf filesrc location=./test.h265 ! h265parse ! vaapih265dec ! vaapisink display=0

(display: 0-Auto detection,1-x11,3-wayland,4-drm,5-egl)
#gst-launch-1.0 -vf filesrc location=./test.h265 ! h265parse ! vaapih265dec ! vaapipostproc hue=150 brightness=1 contrast=1 saturation=1 ! vaapisink  

#gst-launch-1.0 -vf filesrc location=./test.h265 ! h265parse ! vaapih265dec ! glimagesink
#gst-launch-1.0 -vf filesrc location=./test.h265 ! h265parse ! vaapih265dec ! vaapipostproc hue=150 brightness=1 contrast=1 saturation=1 ! glimagesink

gst-msdk:
#gst-launch-1.0 -vf filesrc location=./test.h265 ! h265parse ! msdkh265dec ! glimagesink
#gst-launch-1.0 -vf filesrc location=./test.h265 ! h265parse ! msdkh265dec ! msdkvpp hue=150 brightness=1 contrast=1 saturation=1 ! glimagesink

  • HEVC/H265 10BIT PLAYBACK

gst-vaapi:
#gst-launch-1.0 -q filesrc location=./test-10bit.h265 ! h265parse ! vaapih265dec ! vaapipostproc ! video/x-raw,format=P010_LE ! vaapisink display=0

(display: 0-Auto detection,1-x11,3-wayland,4-drm,5-egl)
gst-msdk:
#gst-launch-1.0 -q filesrc location=./test-10bit.h265 ! h265parse ! msdkh265dec ! msdkvpp !  video/x-raw(memory:DMABuf),format=P010_LE ! glimagesink

Encode

  • AVC/H264 Encode:

CQP:

gst-vaapi:
#gst-launch-1.0 -vf filesrc location=./1080p_i420.yuv num-buffers=150 ! rawvideoparse format=i420 width=1920 height=1080 ! videoconvert ! video/x-raw,format=NV12 ! vaapih264enc rate-control=cqp init-qp=14 quality-level=4 keyframe-period=30 num-slices=1 refs=1 max-bframes=2 ! video/x-h264,profile=main ! h264parse ! filesink location=./output-profilemain-cqp-ipb-gop30-1080p-qp14-ql4.h264

gst-msdk:
#gst-launch-1.0 -vf filesrc location=./1080p_i420.yuv num-buffers=150 ! rawvideoparse format=i420 width=1920 height=1080 ! videoconvert ! video/x-raw,format=NV12 ! msdkh264enc rate-control=cqp qpi=28 qpp=28 qpb=28 gop-size=30 num-slices=1 ref-frames=1 b-frames=2 target-usage=4 hardware=true ! video/x-h264,profile=main ! h264parse ! filesink location=./output-profilemain-cqp-ipb-gop30-1080p-qp14-ql4.h264

CBR

gst-vaapi:

#gst-launch-1.0 -vf filesrc location=./1080p_i420.yuv num-buffers=150 ! rawvideoparse format=i420 width=1920 height=1080 framerate=25 ! videoconvert ! video/x-raw,format=NV12 ! vaapih264enc rate-control=cbr bitrate=8000 quality-level=4 keyframe-period=30 num-slices=1 refs=1 max-bframes=2 ! video/x-h264,profile=main ! h264parse ! filesink location=./output-profilemain-cbr-ipb-gop30-1080p-8mbps-ql4.h264

gst-msdk:

#gst-launch-1.0 -vf filesrc location=./1080p_i420.yuv num-buffers=150 ! rawvideoparse format=i420 width=1920 height=1080 framerate=25 ! videoconvert ! video/x-raw,format=NV12 ! msdkh264enc rate-control=cbr bitrate=8000 target-usage=4 gop-size=30 num-slices=1 ref-frames=1 b-frames=2 hardware=true ! video/x-h264,profile=main ! h264parse ! filesink location=./output-profilemain-cbr-ipb-gop30-1080p-8mbps-ql4.h264

VBR

gst-vaapi:

#gst-launch-1.0 -vf filesrc location=./1080p_i420.yuv num-buffers=150 ! rawvideoparse format=i420 width=1920 height=1080 framerate=25 ! videoconvert ! video/x-raw,format=NV12 ! vaapih264enc rate-control=vbr bitrate=8000 quality-level=4 keyframe-period=30 num-slices=1 refs=1 max-bframes=2 ! video/x-h264,profile=main ! h264parse ! filesink location=./output-profilemain-vbr-ipb-gop30-1080p-8mbps-ql4.h264

gst-msdk:

#gst-launch-1.0 -vf filesrc location=./1080p_i420.yuv num-buffers=150 ! rawvideoparse format=i420 width=1920 height=1080 framerate=25 ! videoconvert ! video/x-raw,format=NV12 ! msdkh264enc rate-control=vbr bitrate=8000 target-usage=4 gop-size=30 num-slices=1 ref-frames=1 b-frames=2 hardware=true ! video/x-h264,profile=main ! h264parse ! filesink location=./output-profilemain-vbr-ipb-gop30-1080p-8mbps-ql4.h264

  • HEVC/H265 Encode:

CQP:

gst-vaapi:
#gst-launch-1.0 -vf filesrc location=./1080p_i420.yuv num-buffers=150 ! rawvideoparse format=i420 width=1920 height=1080 ! videoconvert ! video/x-raw,format=NV12 ! vaapih265enc rate-control=cqp init-qp=14 quality-level=4 keyframe-period=30 num-slices=1 refs=1 max-bframes=2 ! video/x-h265,profile=main ! h265parse ! filesink location=./output-profilemain-cqp-ipb-gop30-1080p-qp14-ql4.h265

gst-msdk:
#gst-launch-1.0 -vf filesrc location=./1080p_i420.yuv num-buffers=150 ! rawvideoparse format=i420 width=1920 height=1080 ! videoconvert ! video/x-raw,format=NV12 ! msdkh265enc rate-control=cqp qpi=28 qpp=28 qpb=28 gop-size=30 num-slices=1 ref-frames=1 b-frames=2 target-usage=4 hardware=true ! video/x-h265,profile=main ! h265parse ! filesink location=./output-profilemain-cqp-ipb-gop30-1080p-qp14-ql4.h265

CBR

gst-vaapi:

#gst-launch-1.0 -vf filesrc location=./1080p_i420.yuv num-buffers=150 ! rawvideoparse format=i420 width=1920 height=1080 framerate=25 ! videoconvert ! video/x-raw,format=NV12 ! vaapih265enc rate-control=cbr bitrate=8000 quality-level=4 keyframe-period=30 num-slices=1 refs=1 max-bframes=2 ! video/x-h265,profile=main ! h265parse ! filesink location=./output-profilemain-cbr-ipb-gop30-1080p-8mbps-ql4.h265

gst-msdk:

#gst-launch-1.0 -vf filesrc location=./1080p_i420.yuv num-buffers=150 ! rawvideoparse format=i420 width=1920 height=1080 framerate=25 ! videoconvert ! video/x-raw,format=NV12 ! msdkh265enc rate-control=cbr bitrate=8000 target-usage=4 gop-size=30 num-slices=1 ref-frames=1 b-frames=2 hardware=true ! video/x-h265,profile=main ! h265parse ! filesink location=./output-profilemain-cbr-ipb-gop30-1080p-8mbps-ql4.h265

VBR

gst-vaapi:

#gst-launch-1.0 -vf filesrc location=./1080p_i420.yuv num-buffers=150 ! rawvideoparse format=i420 width=1920 height=1080 framerate=25 ! videoconvert ! video/x-raw,format=NV12 ! vaapih265enc rate-control=vbr bitrate=8000 quality-level=4 keyframe-period=30 num-slices=1 refs=1 max-bframes=2 ! video/x-h265,profile=main ! h265parse ! filesink location=./output-profilemain-vbr-ipb-gop30-1080p-8mbps-ql4.h265

gst-msdk:

#gst-launch-1.0 -vf filesrc location=./1080p_i420.yuv num-buffers=150 ! rawvideoparse format=i420 width=1920 height=1080 framerate=25 ! videoconvert ! video/x-raw,format=NV12 ! msdkh265enc rate-control=vbr bitrate=8000 target-usage=4 gop-size=30 num-slices=1 ref-frames=1 b-frames=2 hardware=true ! video/x-h265,profile=main ! h265parse ! filesink location=./output-profilemain-vbr-ipb-gop30-1080p-8mbps-ql4.h265

  • HEVC/H265 10BIT ENCODE

CQP:

gst-vaapi:
#gst-launch-1.0 -vf filesrc location=./1080p_10bit.P010 num-buffers=150 ! rawvideoparse format=p010-10le width=1920 height=1080 ! videoconvert ! video/x-raw,format=P010_10LE ! vaapih265enc rate-control=cqp init-qp=14 quality-level=4 keyframe-period=30 num-slices=1 refs=1 max-bframes=2 ! video/x-h265,profile=main-10 ! h265parse ! filesink location=./output-profilemain10-cqp-ipb-gop30-1080p-qp14-ql4.h265

gst-msdk:
#gst-launch-1.0 -vf filesrc location=./1080p_10bit.P010 num-buffers=150 ! rawvideoparse format=p010-10le width=1920 height=1080 ! videoconvert ! video/x-raw,format=P010_10LE ! msdkh265enc rate-control=cqp qpi=28 qpp=28 qpb=28 gop-size=30 num-slices=1 ref-frames=1 b-frames=2 target-usage=4 hardware=true ! video/x-h265,profile=main-10 ! h265parse ! filesink location=./output-profilemain10-cqp-ipb-gop30-1080p-qp14-ql4.h265

CBR

gst-vaapi:

#gst-launch-1.0 -vf filesrc location=./1080p_10bit.P010 num-buffers=150 ! rawvideoparse format=p010-10le width=1920 height=1080 framerate=25 ! videoconvert ! video/x-raw,format=P010_10LE ! vaapih265enc rate-control=cbr bitrate=8000 quality-level=4 keyframe-period=30 num-slices=1 refs=1 max-bframes=2 ! video/x-h265,profile=main-10 ! h265parse ! filesink location=./output-profilemain10-cbr-ipb-gop30-1080p-8mbps-ql4.h265

gst-msdk:

#gst-launch-1.0 -vf filesrc location=./1080p_10bit.P010 num-buffers=150 ! rawvideoparse format=p010-10le width=1920 height=1080 framerate=25 ! videoconvert ! video/x-raw,format=P010_10LE ! msdkh265enc rate-control=cbr bitrate=8000 target-usage=4 gop-size=30 num-slices=1 ref-frames=1 b-frames=2 hardware=true ! video/x-h265,profile=main-10 ! h265parse ! filesink location=./output-profilemain10-cbr-ipb-gop30-1080p-8mbps-ql4.h265

VBR

gst-vaapi:

#gst-launch-1.0 -vf filesrc location=./1080p_10bit.P010 num-buffers=150 ! rawvideoparse format=p010-10le width=1920 height=1080 framerate=25 ! videoconvert ! video/x-raw,format=P010_10LE ! vaapih265enc rate-control=vbr bitrate=8000 quality-level=4 keyframe-period=30 num-slices=1 refs=1 max-bframes=2 ! video/x-h265,profile=main-10 ! h265parse ! filesink location=./output-profilemain10-vbr-ipb-gop30-1080p-8mbps-ql4.h265

gst-msdk:

#gst-launch-1.0 -vf filesrc location=./1080p_10bit.P010 num-buffers=150 ! rawvideoparse format=p010-10le width=1920 height=1080 framerate=25 ! videoconvert ! video/x-raw,format=P010_10LE ! msdkh265enc rate-control=vbr bitrate=8000 target-usage=4 gop-size=30 num-slices=1 ref-frames=1 b-frames=2 hardware=true ! video/x-h265,profile=main-10 ! h265parse ! filesink location=./output-profilemain10-vbr-ipb-gop30-1080p-8mbps-ql4.h265

  • AVC AND HEVC 8BIT/10BIT ENCODE VDENC (LOW POWER) ENCODE

gst-vaapi: to add “tune=3” option for each AVC CQP/CBR/VBR test command line

#gst-launch-1.0 -vf filesrc location=./1080p_i420.yuv num-buffers=150 ! rawvideoparse format=i420 width=1920 height=1080 framerate=25 ! videoconvert ! video/x-raw,format=NV12 ! vaapih264enc rate-control=cbr bitrate=8000 quality-level=4 keyframe-period=30 num-slices=1 refs=1 max-bframes=2 tune=3 ! video/x-h264,profile=main ! h264parse ! filesink location=./output-profilemain-cbr-ipb-gop30-1080p-8mbps-ql4-lowpower.h264

 

gst-msdk: to add “low-power=true” option for each AVC CQP/CBR/VBR test command line

#gst-launch-1.0 -vf filesrc location=./1080p_i420.yuv num-buffers=150 ! rawvideoparse format=i420 width=1920 height=1080 framerate=25 ! videoconvert ! video/x-raw,format=NV12 ! msdkh264enc rate-control=cbr bitrate=8000 target-usage=4 gop-size=30 num-slices=1 ref-frames=1 b-frames=2 hardware=true low-power=true! video/x-h264,profile=main ! h264parse ! filesink location=./output-profilemain-cbr-ipb-gop30-1080p-8mbps-ql4-lowpower.h264

 

gst-vaapi/msdk don’t support HEVC 8/10bit VDENC encode

VPP

  • DE-INTERLACE

gst-vaapi:
gst-launch-1.0 filesrc location=./1920x1080i.264 ! h264parse ! vaapih264dec ! vaapipostproc deinterlace-mode=1 deinterlace-method=bob ! vaapih264enc rate-control=cbr bitrate=5000 keyframe-period=30 max-bframes=2 cabac=true  ! video/x-h264,profile=main ! h264parse ! filesink location=./vpp_di_1920x1080.h264
gst-msdk:
gst-launch-1.0 filesrc location=./1920x1080i.264 ! h264parse ! msdkh264dec ! vaapipostproc deinterlace-mode=1 deinterlace-method=bob ! msdkh264enc rate-control=cbr bitrate=5000 gop-size=30 b-frames=2  ! video/x-h264,profile=main ! h264parse ! filesink location=./vpp_di_1920x1080.h264

  • DE-NOISE

gst-vaapi:
gst-launch-1.0 -vf filesrc location=./1920x1080_NV12.yuv num-buffers=10 ! rawvideoparse format=nv12 width=1920 height=1080 ! vaapipostproc format=nv12 width=1920 height=1080 denoise=0.0 ! checksumsink2 file-checksum=false frame-checksum=false plane-checksum=false dump-output=true dump-location=./vpp_dn_50_NV12_1920x1080.yuv
gst-msdk:
gst-launch-1.0 -vf filesrc location=./1920x1080_NV12.yuv num-buffers=10 ! rawvideoparse format=nv12 width=1920 height=1080 ! msdkvpp hardware=true denoise=50 ! videoconvert ! video/x-raw,format=NV12 ! checksumsink2 file-checksum=false frame-checksum=false plane-checksum=false dump-output=true dump-location=./vpp_dn_50_NV12_1920x1080.yuv

  • SCALING

gst-vaapi:(scaling-mode: 0, 1, 2)
gst-launch-1.0 -vf filesrc location=./1920x1080_NV12.yuv num-buffers=1 ! rawvideoparse format=nv12 width=1920 height=1080 ! vaapipostproc format=nv12 width=1280 height=720 scale-method=1 ! checksumsink2 file-checksum=false frame-checksum=false plane-checksum=false dump-output=true dump-location=./vpp_scale_NV12_1280x720.yuv
gst-msdk: (scaling-mode: 0, 1, 2)
gst-launch-1.0 -vf filesrc location=./1920x1080_NV12.yuv num-buffers=1 ! rawvideoparse format=nv12 width=1920 height=1080 ! videoconvert ! video/x-raw,format=NV12 ! msdkvpp hardware=true scaling-mode=1 ! videoconvert  ! video/x-raw,width=1280,height=720,format=NV12 ! checksumsink2 file-checksum=false frame-checksum=false plane-checksum=false dump-output=true dump-location=./vpp_scale_NV12_1280x720.yuv

  • CSC

I420->NV12

gst-vaapi:
gst-launch-1.0 -vf filesrc location=./1080p_i420.yuv ! videoparse format=i420 width=1920 height=1080 ! vaapipostproc format=nv12 ! checksumsink2 frame-checksum=false dump-output=true dump-location=./1080p_nv12.yuv
ffmpeg-qsv: not ready
gst-launch-1.0 filesrc location=./1080p_i420.yuv ! videoparse format=i420 width=1920 height=1080 ! msdkvpp hardware=true ! video/x-raw,format=NV12 ! videoconvert ! video/x-raw,format=NV12 ! checksumsink2 frame-checksum=false  dump-output=true dump-location=./1080p_nv12.yuv

  • PROCAMP

brightness
gst-vaapi:
gst-launch-1.0 -vf filesrc location=./1920x1080.yv12 num-buffers=1 ! rawvideoparse format=yv12 width=1920 height=1080 ! vaapipostproc format=yv12 width=1920 height=1080 brightness=0.0 ! checksumsink2 file-checksum=false frame-checksum=false plane-checksum=false dump-output=true dump-location=./vpp_brightness_50_YV12_1920x1080.yuv
gst-msdk:
gst-launch-1.0 -vf filesrc location=./1920x1080.yv12 num-buffers=1 ! rawvideoparse format=yv12 width=1920 height=1080 ! msdkvpp hardware=true brightness=0.0 ! videoconvert ! video/x-raw,format=YV12 ! checksumsink2 file-checksum=false frame-checksum=false plane-checksum=false dump-output=true dump-location=./vpp_brightness_50_YV12_1920x1080.yuv
contrast
gst-vaapi:
gst-launch-1.0 -vf filesrc location=./1920x1080.yv12 num-buffers=1 ! rawvideoparse format=yv12 width=1920 height=1080 ! vaapipostproc format=yv12 width=1920 height=1080 contrast=1.0 ! checksumsink2 file-checksum=false frame-checksum=false plane-checksum=false dump-output=true dump-location=./vpp_contrast_50_YV12_1920x1080.yuv
gst-msdk:
gst-launch-1.0 -vf filesrc location=./1920x1080.yv12 num-buffers=1 ! rawvideoparse format=yv12 width=1920 height=1080 ! msdkvpp hardware=true contrast=5.0 ! videoconvert ! video/x-raw,format=YV12 ! checksumsink2 file-checksum=false frame-checksum=false plane-checksum=false dump-output=true dump-location=./vpp_contrast_50_YV12_1920x1080.yuv
hue
gst-vaapi:
gst-launch-1.0 -vf filesrc location=./1920x1080.yv12 num-buffers=1 ! rawvideoparse format=yv12 width=1920 height=1080 ! vaapipostproc format=yv12 width=1920 height=1080 hue=0.0 ! checksumsink2 file-checksum=false frame-checksum=false plane-checksum=false dump-output=true dump-location=.vpp_hue_50_YV12_1920x1080.yuv
gst-msdk:
gst-launch-1.0 -vf filesrc location=./1920x1080.yv12 num-buffers=1 ! rawvideoparse format=yv12 width=1920 height=1080 ! msdkvpp hardware=true hue=0.0 ! videoconvert ! video/x-raw,format=YV12 ! checksumsink2 file-checksum=false frame-checksum=false plane-checksum=false dump-output=true dump-location=./vpp_hue_50_YV12_1920x1080.yuv
saturation
gst-vaapi:
gst-launch-1.0 -vf filesrc location=./1920x1080.yv12 num-buffers=1 ! rawvideoparse format=yv12 width=1920 height=1080 ! vaapipostproc format=yv12 width=1920 height=1080 saturation=1.0 ! checksumsink2 file-checksum=false frame-checksum=false plane-checksum=false dump-output=true dump-location=./w1920_h1080_YV12_saturation_50_YV12_1920x1080.yuv
gst-msdk:
gst-launch-1.0 -vf filesrc location=./1920x1080.yv12 num-buffers=1 ! rawvideoparse format=yv12 width=1920 height=1080 ! msdkvpp hardware=true saturation=5.0 ! videoconvert ! video/x-raw,format=YV12 ! checksumsink2 file-checksum=false frame-checksum=false plane-checksum=false dump-output=true dump-location=./w1920_h1080_YV12_saturation_50_YV12_1920x1080.yuv

  • Sharpness

gst-vaapi:
gst-launch-1.0 -vf filesrc location=./1920x1080.yv12 num-buffers=1 ! rawvideoparse format=yv12 width=1920 height=1080 ! vaapipostproc format=yv12 width=1920 height=1080 sharpen=0.5 ! checksumsink2 file-checksum=false frame-checksum=false plane-checksum=false dump-output=true dump-location=./vpp_sharpness_75_YV12_1920x1080.yuv
gst-msdk:
not support

  • Mirroring

gst-vaapi: not support
gst-msdk:
gst-launch-1.0 -vf filesrc location=./1920x1080.yv12 num-buffers=1 ! rawvideoparse format=yv12 width=1920 height=1080 ! videoconvert ! video/x-raw,format=NV12 ! msdkvpp hardware=true mirroring=1 ! videoconvert ! video/x-raw,format=YV12 ! checksumsink2 file-checksum=false frame-checksum=false plane-checksum=false dump-output=true dump-location=./vpp_mirroring_1_YV12_1920x1080.yuv

  • Rotation

gst-vaapi: not support
gst-msdk:
gst-launch-1.0 -vf filesrc location=./1920x1080.yv12 num-buffers=1 ! rawvideoparse format=yv12 width=1920 height=1080 ! msdkvpp hardware=true rotation=90 ! videoconvert ! video/x-raw,format=YV12 ! checksumsink2 file-checksum=false frame-checksum=false plane-checksum=false dump-output=true dump-location=./vpp_rotation_90_YV12_1920x1080.yuv

Transcode 1:1 without VPP

  • H264->H264

gst-vaapi:
gst-launch-1.0 filesrc location=./input.h264 ! h264parse ! vaapih264dec ! vaapih264enc rate-control=cbr bitrate=5000 keyframe-period=30 max-bframes=2 cabac=true  ! video/x-h264,profile=main ! h264parse ! filesink location=./bluesky-1-14-4-main.h264
gst-msdk:
gst-launch-1.0 filesrc location=./input.h264 ! h264parse ! msdkh264dec ! msdkh264enc rate-control=cbr bitrate=5000 gop-size=30 b-frames=2  ! video/x-h264,profile=main ! h264parse ! filesink location=./output.h264

  • H264->H265

gst-vaapi:
gst-launch-1.0 filesrc location=./input.h264 ! h264parse ! vaapih264dec ! vaapih265enc rate-control=cbr bitrate=5000 keyframe-period=30 max-bframes=2 ! video/x-h265,profile=main ! h265parse ! filesink location=./output.h265
gst-msdk:
gst-launch-1.0 filesrc location=./input.h264 ! h264parse ! msdkh264dec ! msdkh265enc rate-control=cbr bitrate=5000 gop-size=30 b-frames=2  ! video/x-h265,profile=main ! h265parse ! filesink location=./output.h265

  • H265->H264

gst-vaapi:
gst-launch-1.0 filesrc location=./input.h265 ! h265parse ! vaapih265dec ! vaapih264enc rate-control=cbr bitrate=5000 keyframe-period=30 max-bframes=2 cabac=true  ! video/x-h264,profile=main ! h264parse ! filesink location=./output.h264
gst-msdk:
gst-launch-1.0 filesrc location=./input.h265 ! h265parse ! msdkh265dec ! msdkh264enc rate-control=cbr bitrate=5000 gop-size=30 b-frames=2  ! video/x-h264,profile=main ! h264parse ! filesink location=./output.h264

  • H265->H265

gst-vaapi:
gst-launch-1.0 filesrc location=./input.h265 ! h265parse ! vaapih265dec ! vaapih265enc rate-control=cbr bitrate=5000 keyframe-period=30 max-bframes=2 ! video/x-h265,profile=main ! h265parse ! filesink location=./output.h265
gst-msdk:
gst-launch-1.0 filesrc location=./input.h265 ! h265parse ! msdkh265dec ! msdkh265enc rate-control=cbr bitrate=5000 gop-size=30 b-frames=0 ! video/x-h265,profile=main ! h265parse ! filesink location=./output.h265

Transcode 1:1 with VPP

  • H264->VPP SCALING->H264

gst-vaapi:
gst-launch-1.0 filesrc location=./input_1080p.h264 ! h264parse ! vaapih264dec ! vaapipostproc width=1280 height=720 scale-method=1 ! vaapih264enc rate-control=cbr bitrate=5000 keyframe-period=30 max-bframes=2 cabac=true  ! video/x-h264,profile=main ! h264parse ! filesink location=./output_720p.h264
gst-msdk:
gst-launch-1.0 filesrc location=./input_1080p.h264 ! h264parse ! msdkh264dec ! msdkvpp hardware=true scaling-mode=1 ! videoconvert  ! video/x-raw,width=1280,height=720 ! msdkh264enc rate-control=cbr bitrate=5000 gop-size=30 b-frames=2 ! video/x-h264,profile=main ! h264parse ! filesink location=./output_720p.h264

  • H264->VPP PROCAMP(BRIGHTNESS/CONTRAST/SATURATION/HUE)->H264

gst-vaapi:
gst-launch-1.0 filesrc location=./input.h264 ! h264parse ! vaapih264dec ! vaapipostproc hue=180 ! vaapih264enc rate-control=cbr bitrate=5000 keyframe-period=30 max-bframes=2 cabac=true  ! video/x-h264,profile=main ! h264parse ! filesink location=./output.h264
gst-launch-1.0 filesrc location=./input.h264 ! h264parse ! vaapih264dec ! vaapipostproc saturation=1 ! vaapih264enc rate-control=cbr bitrate=5000 keyframe-period=30 max-bframes=2 cabac=true  ! video/x-h264,profile=main ! h264parse ! filesink location=./output.h264
gst-launch-1.0 filesrc location=./input.h264 ! h264parse ! vaapih264dec ! vaapipostproc contrast=1 ! vaapih264enc rate-control=cbr bitrate=5000 keyframe-period=30 max-bframes=2 cabac=true  ! video/x-h264,profile=main ! h264parse ! filesink location=./output.h264
gst-launch-1.0 filesrc location=./input.h264 ! h264parse ! vaapih264dec ! vaapipostproc brightness=0.0 ! vaapih264enc rate-control=cbr bitrate=5000 keyframe-period=30 max-bframes=2 cabac=true  ! video/x-h264,profile=main ! h264parse ! filesink location=./output.h264
gst-msdk:
gst-launch-1.0 filesrc location=./input.h264 ! h264parse ! msdkh264dec ! msdkvpp hardware=true hue=180 ! msdkh264enc rate-control=cbr bitrate=5000 gop-size=30 b-frames=2  ! video/x-h264,profile=main ! h264parse ! filesink location=./output.h264
gst-launch-1.0 filesrc location=./input.h264 ! h264parse ! msdkh264dec ! msdkvpp hardware=true saturation=6 ! msdkh264enc rate-control=cbr bitrate=5000 gop-size=30 b-frames=2  ! video/x-h264,profile=main ! h264parse ! filesink location=./output.h264
gst-launch-1.0 filesrc location=./input.h264 ! h264parse ! msdkh264dec ! msdkvpp hardware=true contrast=6 ! msdkh264enc rate-control=cbr bitrate=5000 gop-size=30 b-frames=2  ! video/x-h264,profile=main ! h264parse ! filesink location=./output.h264
gst-launch-1.0 filesrc location=./input.h264 ! h264parse ! msdkh264dec ! msdkvpp hardware=true brightness=0.0 ! msdkh264enc rate-control=cbr bitrate=5000 gop-size=30 b-frames=2  ! video/x-h264,profile=main ! h264parse ! filesink location=./output.h264

 

Project

Open Source Media Framework