๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด ํ”„๋ ˆ์ž„์›Œํฌ GStreamer 1.22.0 ์‚ฌ์šฉ ๊ฐ€๋Šฅ

1.22๋…„์˜ ๊ฐœ๋ฐœ ๋์— ๋ฏธ๋””์–ด ํ”Œ๋ ˆ์ด์–ด์™€ ์˜ค๋””์˜ค/๋น„๋””์˜ค ํŒŒ์ผ ๋ณ€ํ™˜๊ธฐ๋ถ€ํ„ฐ VoIP ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ์ŠคํŠธ๋ฆฌ๋ฐ ์‹œ์Šคํ…œ์— ์ด๋ฅด๊ธฐ๊นŒ์ง€ ๊ด‘๋ฒ”์œ„ํ•œ ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ํฌ๋กœ์Šค ํ”Œ๋žซํผ ๊ตฌ์„ฑ ์š”์†Œ ์„ธํŠธ์ธ GStreamer 2.1๊ฐ€ ์ถœ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. GStreamer ์ฝ”๋“œ๋Š” LGPLv1.0์— ๋”ฐ๋ผ ๋ผ์ด์„ผ์Šค๊ฐ€ ๋ถ€์—ฌ๋ฉ๋‹ˆ๋‹ค. ์ด์™€ ๋ณ„๋„๋กœ gst-plugins-base, gst-plugins-good, gst-plugins-bad, gst-plugins-ugly ํ”Œ๋Ÿฌ๊ทธ์ธ์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๋Š” ๋ฌผ๋ก  gst-libav ๋ฐ”์ธ๋”ฉ ๋ฐ gst-rtsp-server ์ŠคํŠธ๋ฆฌ๋ฐ ์„œ๋ฒ„๋„ ๊ฐœ๋ฐœ ์ค‘์ž…๋‹ˆ๋‹ค. . API ๋ฐ ABI ์ˆ˜์ค€์—์„œ ์ƒˆ ๋ฆด๋ฆฌ์Šค๋Š” XNUMX ๋ถ„๊ธฐ์™€ ์ด์ „ ๋ฒ„์ „๊ณผ ํ˜ธํ™˜๋ฉ๋‹ˆ๋‹ค. ๋ฐ”์ด๋„ˆ๋ฆฌ ์–ด์…ˆ๋ธ”๋ฆฌ๋Š” ๊ณง Android, iOS, macOS ๋ฐ Windows์šฉ์œผ๋กœ ์ค€๋น„๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค(Linux์—์„œ๋Š” ๋ฐฐํฌํŒ์˜ ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค).

GStreamer 1.22์˜ ์ฃผ์š” ๊ฐœ์„  ์‚ฌํ•ญ:

  • AV1 ๋น„๋””์˜ค ์ธ์ฝ”๋”ฉ ํ˜•์‹์— ๋Œ€ํ•œ ์ง€์›์ด ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. VAAPI/VA, AMF, D1D3, NVCODEC, QSV ๋ฐ Intel MediaSDK API๋ฅผ ํ†ตํ•ด AV11 ์ธ์ฝ”๋”ฉ ๋ฐ ๋””์ฝ”๋”ฉ์— ํ•˜๋“œ์›จ์–ด ๊ฐ€์†์„ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. AV1์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด RTP ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. MP1, Matroska ๋ฐ WebM ์ปจํ…Œ์ด๋„ˆ์—์„œ AV4 ๊ตฌ๋ฌธ ๋ถ„์„์ด ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์–ด์…ˆ๋ธ”๋ฆฌ์—๋Š” dav1d ๋ฐ rav1e ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” AV1 ์ธ์ฝ”๋” ๋ฐ ๋””์ฝ”๋”๊ฐ€ ์žˆ๋Š” ์š”์†Œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • Qt6์— ๋Œ€ํ•œ ์ง€์›์ด ๊ตฌํ˜„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Qt6์„ ์‚ฌ์šฉํ•˜์—ฌ QML ์žฅ๋ฉด ๋‚ด์—์„œ ๋น„๋””์˜ค๋ฅผ ๋ Œ๋”๋งํ•˜๋Š” qml6glsink ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • GTK4 ๋ฐ Wayland๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ Œ๋”๋งํ•˜๊ธฐ ์œ„ํ•ด gtk4paintablesink ๋ฐ gtkwaylandsink ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • HLS, DASH ๋ฐ MSS(Microsoft Smooth Streaming) ํ”„๋กœํ† ์ฝœ์„ ์ง€์›ํ•˜๋Š” ์ ์‘ํ˜• ์ŠคํŠธ๋ฆฌ๋ฐ์„ ์œ„ํ•œ ์ƒˆ๋กœ์šด ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ํฌ๊ธฐ ๊ฐ์†Œ์— ์ตœ์ ํ™”๋œ ๋‹จ์ˆœํ•œ ์–ด์…ˆ๋ธ”๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • WebRTC ๋™์‹œ ๋ฐฉ์†ก ๋ฐ Google ํ˜ผ์žก ์ œ์–ด์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • WebRTC๋ฅผ ํ†ตํ•ด ์ „์†กํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ„๋‹จํ•˜๊ณ  ๋…๋ฆฝ์ ์ธ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.
  • ์กฐ๊ฐํ™”๋œ ๋ฐ์ดํ„ฐ์™€ ์กฐ๊ฐํ™”๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ง€์›ํ•˜๋Š” ์ƒˆ๋กœ์šด MP4 ๋ฏธ๋””์–ด ์ปจํ…Œ์ด๋„ˆ ํŒจ์ปค๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • Amazon AWS ์Šคํ† ๋ฆฌ์ง€ ๋ฐ ์˜ค๋””์˜ค ์ „์‚ฌ ์„œ๋น„์Šค๋ฅผ ์œ„ํ•œ ์ƒˆ๋กœ์šด ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • Rust ์–ธ์–ด์— ๋Œ€ํ•œ ๋ฐ”์ธ๋”ฉ์ด ์—…๋ฐ์ดํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Rust๋กœ ์ž‘์„ฑ๋œ 19๊ฐœ์˜ ์ƒˆ๋กœ์šด ํ”Œ๋Ÿฌ๊ทธ์ธ, ํšจ๊ณผ ๋ฐ ์š”์†Œ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค(gst-plugins-rs). ์ƒˆ๋กœ์šด GStreamer์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ์ค‘ 33%๊ฐ€ Rust์—์„œ ๊ตฌํ˜„๋˜์—ˆ์œผ๋ฉฐ(๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ๋ฐ”์ธ๋”ฉ ๋ฐ ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ด€๋ จ) gst-plugins-rs ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ธํŠธ๋Š” ๊ฐ€์žฅ ํ™œ๋ฐœํ•˜๊ฒŒ ๊ฐœ๋ฐœ๋œ GStreamer ๋ชจ๋“ˆ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. Rust๋กœ ์ž‘์„ฑ๋œ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ๋ชจ๋“  ์–ธ์–ด์˜ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ž‘์—…์€ C ๋ฐ C++์—์„œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค.
  • Rust ํ”Œ๋Ÿฌ๊ทธ์ธ์€ Windows ๋ฐ macOS ํ”Œ๋žซํผ์šฉ ๊ณต์‹ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒจํ‚ค์ง€์˜ ์ผ๋ถ€๋กœ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค(Linux, Windows ๋ฐ macOS์—์„œ๋Š” ์–ด์…ˆ๋ธ”๋ฆฌ ๋ฐ ์ „๋‹ฌ์ด ์ง€์›๋ฉ๋‹ˆ๋‹ค).
  • Rust๋กœ ์ž‘์„ฑ๋œ WebRTC ๊ธฐ๋ฐ˜ ๋ฏธ๋””์–ด ์„œ๋ฒ„๊ฐ€ ๊ตฌํ˜„๋˜์–ด WHIP(WebRTC HTTP ์ˆ˜์ง‘) ๋ฐ WHEP(WebRTC HTTP ์†ก์‹ )๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • ๋น„๋””์˜ค ๋ณ€ํ™˜ ๋ฐ ์Šค์ผ€์ผ๋ง ๊ธฐ๋Šฅ์„ ๊ฒฐํ•ฉํ•œ videocolorscale ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์ƒ‰์‹ฌ๋„๊ฐ€ ๋†’์€ ๋น„๋””์˜ค์— ๋Œ€ํ•œ ์ง€์›์ด ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • Navigation API์— ํ„ฐ์น˜์Šคํฌ๋ฆฐ ์ด๋ฒคํŠธ์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฏธ๋””์–ด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํŒจํ‚ค์ง•ํ•˜๊ธฐ ์ „์— PTS/DTS ์žฌ๊ตฌ์„ฑ์„ ์œ„ํ•œ H.264/H.265 ํƒ€์ž„์Šคํƒฌํ”„ ์ˆ˜์ • ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • Linux ํ”Œ๋žซํผ์—์„œ๋Š” ํ•˜๋“œ์›จ์–ด ๊ฐ€์†์„ ์‚ฌ์šฉํ•˜์—ฌ ๋น„๋””์˜ค๋ฅผ ์ธ์ฝ”๋”ฉ, ๋””์ฝ”๋”ฉ, ํ•„ํ„ฐ๋ง ๋ฐ ๋ Œ๋”๋งํ•  ๋•Œ ๋ฒ„ํผ์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•˜๋„๋ก DMA ์‚ฌ์šฉ์ด ๊ฐœ์„ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • CUDA์™€์˜ ํ†ตํ•ฉ์ด ๊ฐœ์„ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. gst-cuda ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฐ cudaconvertscale ์š”์†Œ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์œผ๋ฉฐ D3D11 ๋ฐ NVIDIA dGPU NVMM ์š”์†Œ์™€์˜ ํ†ตํ•ฉ์ด ์ œ๊ณต๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • Direct3D11๊ณผ์˜ ํ†ตํ•ฉ์ด ๊ฐœ์„ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด gst-d3d11 ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์œผ๋ฉฐ d3d11screencapture, d3d11videosink, d3d11convert ๋ฐ d3d11compositor ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ๊ธฐ๋Šฅ์ด ํ™•์žฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • AMD GPU์˜ ๊ฒฝ์šฐ AMF(Advanced Media Framework) SDK๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ์ถ•๋œ H.264/AVC, H.265/HEVC ๋ฐ AV1 ํ˜•์‹์˜ ์ƒˆ๋กœ์šด ํ•˜๋“œ์›จ์–ด ๊ฐ€์† ๋น„๋””์˜ค ์ธ์ฝ”๋”๊ฐ€ ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค.
  • applemedia ํ”Œ๋Ÿฌ๊ทธ์ธ์— H.265/HEVC ๋น„๋””์˜ค ์ธ์ฝ”๋”ฉ ๋ฐ ๋””์ฝ”๋”ฉ์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • androidmedia ํ”Œ๋Ÿฌ๊ทธ์ธ์— H.265/HEVC ๋น„๋””์˜ค ์ธ์ฝ”๋”ฉ์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๊ฐ•์ œ ๋ผ์ด๋ธŒ ์†์„ฑ์ด audiomixer, compositor, glvideomixer ๋ฐ d3d11compositor ํ”Œ๋Ÿฌ๊ทธ์ธ์— ์ถ”๊ฐ€๋˜์–ด ๋ผ์ด๋ธŒ ๋ชจ๋“œ๋ฅผ ๊ฐ•์ œ๋กœ ํ™œ์„ฑํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€