728x90
반응형
Chapter 4. Encode Examples
이 섹션에서는 일부 GStreamer 파이프라인 예제와 지원되는 디바이스를 사용하여 비디오 인코딩을 수행하는 방법을 보여준다.
4.1. i.MX 8M
i.MX 8M 제품군은 Hantro VPU IP를 채택했다. 이 VPU는 다음과 같은 비디오 인코딩 가속기 솔루션을 제공한다.
4.1.1. H.264 Encode (HW Accelerated Encode)
$ gst-launch-1.0 videotestsrc ! \
video/x-raw, format=I420, width=640, height=480 ! vpuenc_h264 ! \
filesink location=test.mp4
정보
i.MX 8M Quad EVK와 i.MX 8M Nano EVK에서는 HW 인코딩 가속기 기능을 지원하지 않는다.
4.1.2. VP8 Encode (HW Accelerated Encode)
$ gst-launch-1.0 videotestsrc ! \
video/x-raw, format=I420, width=640, height=480 ! vpuenc_vp8 ! \
matroskamux ! filesink location=test.mkv
4.2. i.MX 8X/8QM
i.MX 8QXP와 i.MX 8QM SoC에는 Amphion VPU IP가 장착되어 있다. 이 VPU는 다음과 같은 비디오 인코더 가속기 솔루션을 제공한다.
4.2.1. H.264 Encode (HW Accelerated Decode)
$ gst-launch-1.0 videotestsrc ! \
video/x-raw, format=NV12, width=640, height=480 ! v4l2h264enc ! \
filesink location=test.mp4
4.2.2. Additional control of v4l2 (V4L2의 추가 제어)
$ v4l2-ctl --list-ctrls -d /dev/video13
실행 후 다음과 같이 출력되어야 한다 :
User Controls min_number_of_output_buffers (int) : min=1 max=32 step=1 default=3 value=3 flags=read-only, volatile Codec Controls video_b_frames (int) : min=0 max=4 step=1 default=2 value=2 flags=update video_gop_size (int) : min=1 max=300 step=1 default=30 value=30 flags=volatile, execute-on-write video_bitrate_mode (menu) : min=0 max=1 default=0 value=0 flags=update video_bitrate (int) : min=16384 max=251658240 step=1024 default=2097152 value=2097152 video_peak_bitrate (int) : min=16384 max=251658240 step=1024 default=8388608 value=8388608 force_key_frame (button) : flags=write-only, execute-on-write h264_i_frame_qp_value (int) : min=0 max=51 step=1 default=25 value=25 h264_p_frame_qp_value (int) : min=0 max=51 step=1 default=25 value=25 h264_b_frame_qp_value (int) : min=0 max=51 step=1 default=25 value=25 h264_i_frame_period (int) : min=1 max=300 step=1 default=30 value=30 flags=volatile, execute-on-write h264_level (menu) : min=0 max=15 default=11 value=11 h264_profile (menu) : min=0 max=4 default=0 value=0 h264_arbitrary_slice_ordering (int) : min=0 max=1 step=1 default=1 value=1
그런 다음 제공된 정보를 사용하여 아래와 같이 더 많은 인코딩 파라미터를 구성할 수 있다 :
$ gst-launch-1.0 v4l2src device=/dev/video1 ! video/x-raw,width=640,height=480 ! \
v4l2h264enc extra-controls="controls,h264_entropy_mode=0,video_bitrate=245000;" ! \
h264parse ! v4l2h264dec ! queue ! waylandsink sync=false
그리고 CPU 사용량을 줄이려면 다음을 사용한다 :
$ gst-launch-1.0 v4l2src device=/dev/video0 num-buffers=300 io-mode=dmabuf ! \
'video/x-raw,format=(string)NV12,width=1920,height=1080,framerate=(fraction)30/1' ! \
queue ! v4l2h264enc output-io-mode=dmabuf-import ! avimux ! filesink location=test.avi
728x90
반응형
'NXP i.MX SoC Family > i.MX 8 GStreamer User Guide' 카테고리의 다른 글
i.MX 8 GStreamer User Guide - Camera Examples (0) | 2022.04.20 |
---|---|
i.MX 8 GStreamer User Guide - Mux/demux Examples (0) | 2022.04.20 |
i.MX 8 GStreamer User Guide - Decode Examples (0) | 2022.04.18 |
i.MX 8 GStreamer User Guide - GStreamer-1.0 Plugin Reference (0) | 2022.04.18 |
i.MX 8 GStreamer User Guide - Introduction (0) | 2022.04.15 |