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

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

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

  • GitLab ๊ฐœ๋ฐœ์€ ๋ชจ๋“  ๋ชจ๋“ˆ์— ๊ณตํ†ต๋œ ๋‹จ์ผ ์ €์žฅ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์ „ํ™˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • GstPlayer API๋ฅผ ๋Œ€์ฒดํ•˜๊ณ  ์ฝ˜ํ…์ธ  ์žฌ์ƒ์„ ์œ„ํ•œ ์œ ์‚ฌํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ์ƒˆ๋กœ์šด ๊ณ ๊ธ‰ GstPlay ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹จ, GObject ์‹ ํ˜ธ ๋Œ€์‹  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์•Œ๋ฆฌ๊ธฐ ์œ„ํ•ด ๋ฉ”์‹œ์ง€ ๋ฒ„์Šค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ์ ์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค.
  • WebM ํˆฌ๋ช…๋„ ์ •๋ณด ๋””์ฝ”๋”ฉ์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์–ด ํˆฌ๋ช…ํ•œ ์˜์—ญ์ด ์žˆ๋Š” VP8/VP9 ๋น„๋””์˜ค๋ฅผ ์žฌ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ธ์ฝ”๋”ฉ ํ”„๋กœํ•„์— ์ถ”๊ฐ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋ณ„ ์†์„ฑ์„ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • Compositor๋Š” ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ๋น„๋””์˜ค ๋ณ€ํ™˜ ๋ฐ ๋ฏน์‹ฑ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • depayloader ๋ฐ payloader ํด๋ž˜์Šค๋Š” ์ถ”๊ฐ€ RTP ํ—ค๋”(RTP ํ—ค๋” ํ™•์žฅ) ์ž‘์—…์— ๋Œ€ํ•œ ํ†ตํ•ฉ ์ง€์›์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • SMPTE 2022-1 2-D(์ˆœ๋ฐฉํ–ฅ ์˜ค๋ฅ˜ ์ˆ˜์ •) ๋ฉ”์ปค๋‹ˆ์ฆ˜์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • VP8, VP9 ๋ฐ H.265 ์ฝ”๋ฑ์šฉ Encodebin ๋ฐ transcodebin์€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋งŒ ํŠธ๋žœ์Šค์ฝ”๋”ฉ์ด ์ˆ˜ํ–‰๋˜๊ณ  ๋‚˜๋จธ์ง€ ์‹œ๊ฐ„์—๋Š” ๊ธฐ์กด ์ŠคํŠธ๋ฆผ์ด ์ „๋‹ฌ๋˜๋Š” ์Šค๋งˆํŠธ ์ธ์ฝ”๋”ฉ ๋ชจ๋“œ๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.
  • Souphttpsrc ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์ด์ œ libsoup2 ๋ฐ libsoup3๊ณผ ํ˜ธํ™˜๋ฉ๋‹ˆ๋‹ค.
  • ์ค‘๊ฐ„ ํ”„๋ ˆ์ž„(์„œ๋ธŒํ”„๋ ˆ์ž„) ์ˆ˜์ค€์—์„œ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ๋””์ฝ”๋”ฉํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์–ด ์ „์ฒด ํ”„๋ ˆ์ž„์ด ์ˆ˜์‹ ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ๋””์ฝ”๋”ฉ์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ตœ์ ํ™”์— ๋Œ€ํ•œ ์ง€์›์€ OpenJPEG JPEG 2000, FFmpeg H.264 ๋ฐ OpenMAX H.264/H.265 ๋””์ฝ”๋”์— ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • RTP, WebRTC ๋ฐ RTSP ํ”„๋กœํ† ์ฝœ์— ๋Œ€ํ•œ ๋น„๋””์˜ค๋ฅผ ๋””์ฝ”๋”ฉํ•  ๋•Œ ํŒจํ‚ท ์†์‹ค, ๋ฐ์ดํ„ฐ ์†์ƒ ๋ฐ ํ‚ค ํ”„๋ ˆ์ž„ ์š”์ฒญ์˜ ์ž๋™ ์ฒ˜๋ฆฌ๊ฐ€ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.
  • mp4 ๋ฐ Matroska ๋ฏธ๋””์–ด ์ปจํ…Œ์ด๋„ˆ ํŒจ์ปค์— ์ฆ‰์‹œ ์ฝ”๋ฑ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด H.264/H.265 ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ์˜ ํ”„๋กœํ•„, ๋ ˆ๋ฒจ ๋ฐ ํ•ด์ƒ๋„๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์กฐ๊ฐ๋‚œ mp4 ๋ฏธ๋””์–ด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๋ชจ๋“œ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • WPE(WebKit Port for Embedded) ๊ธฐ๋ฐ˜ ํฌํŠธ์— ์˜ค๋””์˜ค ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์ƒ‰์ƒ ๊ณต๊ฐ„ ๋ณ€ํ™˜, ์š”์†Œ ํฌ๊ธฐ ์กฐ์ • ๋ฐ ์š”์†Œ ๋กœ๋”ฉ์— CUDA๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • OpenGL glupload ๋ฐ gldownload ์š”์†Œ์— ๋Œ€ํ•œ NVMM(NVIDIA ๋ฉ”๋ชจ๋ฆฌ ๋ชจ๋“ˆ) ๋ฉ”๋ชจ๋ฆฌ์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • WebRTC ์ง€์›์ด ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๋” ๋งŽ์€ ๋””์ฝ”๋”์™€ ํ›„์ฒ˜๋ฆฌ ์š”์†Œ๋ฅผ ์ง€์›ํ•˜๋Š” VA-API(Video Acceleration API)์šฉ ์ƒˆ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์ œ์•ˆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • AppSink API์—๋Š” ๋ฒ„ํผ ๋ฐ ๋ฒ„ํผ ๋ชฉ๋ก ์™ธ์—๋„ ์ด๋ฒคํŠธ์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๋‚ด๋ถ€ ๋Œ€๊ธฐ์—ด์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์„ค์ •์ด AppSrc์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • Rust ์–ธ์–ด ๋ฐ”์ธ๋”ฉ์„ ์—…๋ฐ์ดํŠธํ•˜๊ณ  Rust๋กœ ์ž‘์„ฑ๋œ 26๊ฐœ์˜ ์ƒˆ๋กœ์šด ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค(gst-plugins-rs).
  • AES ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•œ ์•”ํ˜ธํ™” ๋ฐ ์•”ํ˜ธ ํ•ด๋…์„ ์œ„ํ•œ aesdec ๋ฐ aesenc ์š”์†Œ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ํ…Œ์ŠคํŠธ ๋ฐ ๋””๋ฒ„๊น…์„ ์œ„ํ•ด fakeaudiosink ๋ฐ videocodectestsink ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์ตœ์†Œํ•œ์˜ GStreamer ๋นŒ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ํ–ฅ์ƒ๋œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.
  • FFmpeg 5.0์œผ๋กœ ๋นŒ๋“œํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • Linux์˜ ๊ฒฝ์šฐ MPEG-2 ๋ฐ VP9 ์ฝ”๋ฑ ๋ฒ„์ „์ด ๊ตฌํ˜„๋˜์–ด ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š๊ณ  ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค(Stateless).
  • Windows์˜ ๊ฒฝ์šฐ Direct3D11/DXVA ๊ธฐ๋ฐ˜ ๋””์ฝ”๋”์— AV1 ๋ฐ MPEG-2 ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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