{"id":1167,"date":"2025-08-25T15:34:24","date_gmt":"2025-08-25T06:34:24","guid":{"rendered":"https:\/\/www.decteng.com\/ko\/?p=1167"},"modified":"2025-08-26T10:56:06","modified_gmt":"2025-08-26T01:56:06","slug":"obs-youtube-hls-push-stream-capture-to-debug-pushcap","status":"publish","type":"post","link":"https:\/\/www.decteng.com\/ko\/obs-youtube-hls-push-stream-capture-to-debug-pushcap\/","title":{"rendered":"HLS \ucd9c\ub825 \ub514\ubc84\uadf8\uc6a9 \uac04\uc774 HLS PUSH \uc218\uc2e0 \uc11c\ubc84\ub85c OBS HLS PUSH \uc2a4\ud2b8\ub9bc \ucea1\ucc98\ud558\uae30"},"content":{"rendered":"\n<sectoin>\n<h2>PushCap<\/h2>\n<p>\ubcf8 \ud544\uc790\uac00 <a href=\"https:\/\/www.decteng.com\/ko\/how-to-hls-push-to-youtube-live-from-wowza\/\" title=\"HLStoYTB \ubaa8\ub4c8 \uc0ac\uc6a9 \ubc29\ubc95\" hreflang=\"ko-kr\">\uc640\uc6b0\uc790 \uc2a4\ud2b8\ub9ac\ubc0d \uc5d4\uc9c4\uc758 YouTube HLS PUSH \ubaa8\ub4c8<\/a>\uc744 \uac1c\ubc1c\ud558\uba74\uc11c \uac00\uc7a5 \ub2f5\ub2f5\ud588\ub358 \uac83 \uc911\uc758 \ud558\ub098\ub294, \uacfc\uc5f0 \ub0b4\uac00 \ub9cc\ub4e0 \ubaa8\ub4c8\uc774 \uc81c\ub300\ub85c \ub3d9\uc791 \ud558\ub294\uac00 \ub208\uc73c\ub85c \uc9c1\uc811 \ud655\uc778\ud558\uae30\uac00 \uace4\ub780\ud588\ub2e4\ub294 \uac83\uc774\ub2e4.<\/p>\n<p>\ubaa8\ub4c8\uc744 \ub3d9\uc791\uc2dc\ud0a4\ub294 \uc640\uc6b0\uc790\uc758 \ub85c\uadf8\uc5d0\ub294 \ubd84\uba85 \uc774 \ubaa8\ub4c8\uc774 \uc815\uc0c1\uc801\uc73c\ub85c \ub3d9\uc791\ud558\uace0 \uc788\uc5c8\uace0 \uc2e4\uc81c \ub370\uc774\ud130\ub3c4 \ucd9c\ub825 \ub418\uace0 \uc788\uc5c8\uc73c\ub098, \uc720\ud29c\ube0c\uc5d0\uc11c\ub294 \uc2a4\ud2b8\ub9bc\uc744 \uc778\uc2dd \ud558\uc9c0 \ubabb\ud558\ub294 \uc0c1\ud669\uc774 \uacc4\uc18d \ubc1c\uc0dd\ud588\ub358 \uac83 \uc774\ub2e4. \uc774\uc5d0 \ubcf8 \ud544\uc790\ub294, \ubaa8\ub4c8\uc758 \uc2e4\uc81c \ucd9c\ub825 \ub370\uc774\ud130\ub4e4\uc744 <a href=\"https:\/\/obsproject.com\/\" target=\"_blank\" rel=\"noopener\">OBS(Open Broadcast Software)<\/a>\uc758 \uac83\uacfc \ube44\uad50\ud574\uc11c \ud558\ub098\uc529 \ube44\uad50\ud560 \ud544\uc694\ub97c \ub290\uaf08\ub2e4.<\/p>\n<p>\uc774\ub97c \uc704\ud574 \ud30c\uc774\uc36c(Python)\uc744 \uc774\uc6a9\ud574, \uc218\uc2e0\ud55c HLS PUSH \ub370\uc774\ud130\ub97c \uc800\uc7a5\ud558\uace0 \ud655\uc778\ud558\uae30 \uc704\ud55c \ub514\ubc84\uadf8\uc6a9 \ucea1\ucc98 \uc11c\ubc84\ub97c \ub9cc\ub4e4\uc5c8\uace0, \ub9c8\uce68 \uae30\uc5b5\ub09c \uc544\ub798\uc758 \ub178\ub798\uc5d0\uc11c \ub530\uc640 <dfn>PushCap<\/dfn>\uc774\ub77c\uace0 \uc774\ub984\uc744 \ubd99\uc600\ub2e4.<\/p>\n<center><iframe loading=\"lazy\" width=\"560\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/glKyiUq_wWM?si=VS-z56yX14lS1-ep\" title=\"\uc7ad \ube14\ub799 - \uc548\ub155 \ud478\uc2dc\ucea3 (Hello Pusycat)\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/center>\n<\/section>\n\n<section>\n<h2>\uc11c\ubc84 \uc2e4\ud589<\/h2>\n<h3>\uc2e4\ud589 \ud658\uacbd\uc758 \uc900\ube44<\/h3>\n<ol>\n<li><strong>\ud30c\uc774\uc36c \uc124\uce58<\/strong><p><code>PushCap<\/code>\uc740 \ud30c\uc774\uc36c\uc744 \uae30\ubc18\uc73c\ub85c \uc791\ub3d9\ub418\ub294 \ud504\ub85c\uadf8\ub7a8\uc774\ub2e4. <a href=\"https:\/\/dotiromoook.tistory.com\/32\" title=\"\ud30c\uc774\uc36c \uc124\uce58 \ud558\ub294 \ubc29\ubc95\" target=\"_blank\" hreflang=\"ko-kr\" rel=\"noopener\">\ud30c\uc774\uc36c \uc124\uce58 \ubc29\ubc95<\/a>\uacfc \uac19\uc740 \uae00\uc744 \ucc38\uace0\ud558\uc5ec \uc11c\ubc84\ub85c \uc0ac\uc6a9\ud560 PC\uc5d0 \ud30c\uc774\uc36c\uc744 \uc124\uce58\ud55c\ub2e4.<\/p><\/li>\n<li><strong>\ucd94\uac00 \ud328\ud0a4\uce58 \uc124\uce58<\/strong><p>\ud504\ub85c\uadf8\ub7a8\uc758 \uc2e4\ud589\uc5d0 \ud544\uc694\ud55c \ucd94\uac00 \ud328\ud0a4\uc9c0\ub97c \uc124\uce58\ud574 \uc900\ub2e4. <code>flask<\/code>\ud328\ud0a4\uc9c0\uc640 <code>tornado<\/code>\ud328\ud0a4\uc9c0, \uac00 \ud544\uc694\ud558\uba70, \ub2e4\uc74c \uba85\ub839\uc744 \ud1b5\ud574 \uc124\uce58\uac00 \uac00\ub2a5\ud55c\ub2e4.<\/p><code class=\"line\">py -m pip install flask<\/code><code class=\"line\">py -m pip install tornado<\/code><\/li>\n<li><strong>https \uc778\uc99d\uc11c \uc0dd\uc131<\/strong><p>\ud604\ub300 HLS \ud504\ub85c\ud1a0\ucf5c\uc740 https\ub97c \uc774\uc6a9\ud574 \uc774\ub8e8\uc5b4 \uc9c4\ub2e4. \uc774\ub97c \uc704\ud574 \uc778\uc99d\uc11c\ub97c \uc0dd\uc131\ud574 \uc8fc\uc5b4\uc57c \ud55c\ub2e4. \uc790\uc138\ud55c \ub0b4\uc6a9\uc740 <a href=\"wowza-https-certificate-for-hls-push-debug-python\" hreflang=\"ko-kr\" title=\"\uc640\uc6b0\uc790 \uc2a4\ud2b8\ub9ac\ubc0d \uc5d4\uc9c4 \uc0ac\uc124 \uc778\uc99d\uc11c \uc0dd\uc131 \ubc0f \uc801\uc6a9\">\uc640\uc6b0\uc790 \uc2a4\ud2b8\ub9ac\ubc0d \uc5d4\uc9c4\uc5d0 https \uc0ac\uc124 \uc778\uc99d\uc11c\ub97c \uc801\uc6a9\ud558\ub294 \ubc29\ubc95<\/a>\ub97c \ucc38\uace0\ud558\uae30 \ubc14\ub780\ub2e4.<\/li>\n<li><strong>\ud504\ub85c\uadf8\ub7a8 \ud30c\uc77c \uc0dd\uc131<\/strong><p>\uc801\ub2f9\ud55c \ub514\ub809\ud1a0\ub9ac\ub97c \uc0dd\uc131\ud558\uace0, \uc544\ub798\uc758 \ucf54\ub4dc \ub0b4\uc6a9\uc744 \ubcf5\uc0ac\ud574 <code>PushCap.py<\/code>\ub77c\ub294 \ud30c\uc77c\ub85c \uc800\uc7a5\ud574 \uc900\ub2e4.<\/p>\n<pre><code>import os\nimport ssl\nimport threading\nimport asyncio\nfrom flask import Flask, request, send_from_directory\nfrom tornado.wsgi import WSGIContainer\nfrom tornado.httpserver import HTTPServer\nfrom tornado.ioloop import IOLoop\n\napp = Flask(__name__)\nUPLOAD_DIR = os.path.join(os.path.dirname(__file__), 'uploads')\nplaylist_counters = {}\ncounter_lock = threading.Lock()\n\n@app.route('\/http_upload_hls', methods=['PUT'])\ndef hls_ingest():\n    try:\n        stream_key = request.args.get('cid')\n        file_name = request.args.get('file')\n\n        if not stream_key or not file_name:\n            return '\uc2a4\ud2b8\ub9bc ID\ub098 FILE \uc774\ub984\uc774 \uc5c6\uc74c.', 400\n\n        stream_dir = os.path.join(UPLOAD_DIR, stream_key)\n        os.makedirs(stream_dir, exist_ok=True)\n        file_path = os.path.join(stream_dir, file_name)\n\n        request_body = request.environ['wsgi.input'].read()\n        \n        with open(file_path, 'wb') as f:\n            f.write(request_body)\n        \n        file_size = len(request_body)\n        if file_size == 0:\n            print(f'Warning: 0-byte file: {stream_key}\/{file_name}')\n        else:\n            print(f'\uc800\uc7a5: {stream_key}\/{file_name} ({file_size} bytes)')\n\n        if file_name.endswith('.m3u8'):\n            with counter_lock:\n                playlist_counters.setdefault(stream_key, {})\n                current_counter = playlist_counters[stream_key].get(file_name, 0)\n                playlist_counters[stream_key][file_name] = current_counter + 1\n            \n            base_name, extension = os.path.splitext(file_name)\n            new_file_name = f'{base_name}.{current_counter}{extension}'\n            new_file_path = os.path.join(stream_dir, new_file_name)\n            \n            with open(new_file_path, 'wb') as f:\n                f.write(request_body)\n            \n            print(f'-> M3U8 \uc21c\ucc28 \uc800\uc7a5 : {stream_key}\/{new_file_name}')\n        \n        return 'OK', 200\n\n    except Exception as e:\n        print(f\"HLS \uc785\uc218 \uc624\ub958: {e}\")\n        return 'Internal Server Error', 500\n\n@app.route('\/streams\/<string:stream_key>\/<string:file_name>', methods=['GET'])\ndef hls_playback(stream_key, file_name):\n    stream_dir = os.path.join(UPLOAD_DIR, stream_key)\n    return send_from_directory(stream_dir, file_name)\n\nif __name__ == '__main__':\n    async def main():\n        ssl_ctx = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)\n        ssl_ctx.load_cert_chain(certfile='cert.pem', keyfile='key.pem')\n\n        http_server = HTTPServer(\n            WSGIContainer(app),\n            ssl_options=ssl_ctx\n        )\n        http_server.listen(443, address='0.0.0.0')\n        print(\"Starting PushCap HTTPS server on port 443...\")\n        print(\"\uc2a4\ud2b8\ub9bc\uc744 \uc3d8\uc138\uc694!\")\n        await asyncio.Event().wait()\n    asyncio.run(main())<\/code><\/pre><\/li><\/ol>\n\n<h3>PushCap \uc2e4\ud589<\/h3>\n<p>\ucf58\uc194 \ucc3d\uc5d0\uc11c <code>PushCap.py<\/code>\uc774 \uc788\ub294 \ub514\ub809\ud1a0\ub9ac\ub85c \uc774\ub3d9\ud574 PushCap.py\ub97c \uc2e4\ud589\uc2dc\ucf1c \uc900\ub2e4. \uc544\ub798\uc640 \uac19\uc774, <samp>\uc2a4\ud2b8\ub9bc\uc744 \uc3d8\uc138\uc694!<\/samp>\ub77c\ub294 \uba54\uc2dc\uc9c0\uac00 \ucd9c\ub825\ub418\uba74 \ud504\ub85c\uadf8\ub7a8\uc774 \uc2e4\ud589\ub418\uc5b4 HLS\ub97c \uc218\uc2e0\ud560 \uc900\ube44\uac00 \uc644\ub8cc \ub418\uc5c8\ub2e4\ub294 \ub73b\uc774\ub2e4.<\/p>\n<pre><code>Microsoft Windows [Version 10.0.20348.4052]\n(c) Microsoft Corporation. All rights reserved.\nD:\\>cd HLSWEB\nD:\\HLSWEB><kbd>py PushCap.py<\/kbd>\nStarting PushCap HTTPS server on port 443...\n\uc2a4\ud2b8\ub9bc\uc744 \uc3d8\uc138\uc694!<\/code><\/pre>\n<\/section>\n\n<section>\n<h2>OBS YouTube HLS \ucd9c\ub825 \ucea1\ucc98<\/h2>\n<h3>hosts \ud30c\uc77c \uc218\uc815<\/h3>\n<p>OBS\ub294 \uae30\ubcf8 YouTube HLS ingest \uc8fc\uc18c\ub97c \ud504\ub85c\uadf8\ub7a8 \ub0b4\ubd80\uc5d0 \uace0\uc815\ub41c \uac12\uc73c\ub85c \uac00\uc9c0\uace0 \uc788\ub2e4. \ub54c\ubb38\uc5d0, \ubb34\uc870\uac74 \uc2e4\uc81c \uc720\ud29c\ube0c \uc11c\ube44\uc2a4\uc5d0 HLS \ub370\uc774\ud130\ub97c \uc804\uc1a1\ud55c\ub2e4. \uadf8\ub807\uae30 \ub54c\ubb38\uc5d0, OBS\uac00 \uc720\ud29c\ube0c\uc758 \uc5c5\ub85c\ub4dc \uc8fc\uc18c\ub97c \ucc3e\uc744 \ub54c, <code>PushCap<\/code>\uc774 \uc2e4\ud589\ub418\ub294 \uc11c\ubc84\uc758 \uc8fc\uc18c\ub97c \ubc14\ub77c\ubcfc \uc218 \uc788\ub3c4\ub85d \ubcc0\uacbd\ud574 \uc8fc\uc5b4\uc57c \ud55c\ub2e4.<\/p>\n<p>\uc720\ud29c\ube0c\uc758 \uc5c5\ub85c\ub4dc \uc8fc\uc18c\ub294 <code>a.upload.youtube.com<\/code>\uc640 <code>b.upload.youtube.com<\/code>\uac00 \uc0ac\uc6a9\ub418\ub294\ub370, OBS\uac00 \uc774 \uc8fc\uc18c\uc5d0 \uc811\uadfc\ud558\ub824\uace0 \ud558\uba74, \uc6b4\uc601\uccb4\uc81c\uac00 \ud574\ub2f9 \uc8fc\uc18c\uc758 IP\ub97c \ud655\uc778\ud558\uace0 \uc811\uadfc\ud558\ub3c4\ub85d \ud574 \uc900\ub2e4. \uc774 \uacfc\uc815\uc5d0\uc11c, \uc6b4\uc601\uccb4\uc81c\uac00 \uc81c\uc77c \uba3c\uc800 \ud655\uc778\ud558\ub294 <code>hosts<\/code>\ub77c\ub294 \ud30c\uc77c\uc744 \uc218\uc815\ud574 \uc8fc\uba74, \uc2e4\uc81c YouTube\uac00 \uc544\ub2cc \ub2e4\ub978 \uacf3\uc73c\ub85c \uc811\uadfc\ud558\uac8c \ubcc0\uacbd\uc774 \uac00\ub2a5\ud558\ub2e4.<\/p>\n<p><code>hosts<\/code> \ud30c\uc77c\uc740 \ubcc4\ub3c4\uc758 \ud655\uc7a5\uc790\uac00 \uc5c6\ub294 \ud14d\uc2a4\ud2b8 \ud30c\uc77c\ub85c, \uc708\ub3c4\uc6b0\uc640 \ub9ac\ub205\uc2a4 \ubaa8\ub450 \uac19\uc740 \uc774\ub984\uc744 \uc0ac\uc6a9\ud55c\ub2e4. \uc774 \ud30c\uc77c\uc774 \uc788\ub294 \uae30\ubcf8 \uacbd\ub85c\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4.\n<dl><dt>\uc708\ub3c4\uc6b0<\/dt><dd><code>C:\\Windows\\System32\\drivers\\etc\\hosts<\/code><\/dd>\n<dt>\ub9ac\ub205\uc2a4<\/dt><dd><code>\/etc\/hosts<\/code><\/dd><\/dl>\n<code>\uba54\ubaa8\uc7a5<\/code>\uc774\ub098 <code>nano<\/code>\uac19\uc740 \ud14d\uc2a4\ud2b8 \ud3b8\uc9d1\uae30\ub97c \uc774\uc6a9\ud574 \uc720\ud29c\ube0c \uc5c5\ub85c\ub4dc \uc8fc\uc18c\uac00 \ubc14\ub77c\ubcfc IP \uc8fc\uc18c\ub97c <code>PushCap<\/code>\uc774 \uc2e4\ud589\uc911\uc778 \ud638\uc2a4\ud2b8\uc758 IP \ub85c \ubcc0\uacbd\ud574 \uc900\ub2e4. \uc544\ub798\ub294 <code>\uc708\ub3c4\uc6b0<\/code>\uc758 <code>hosts<\/code> \ud30c\uc77c\uc744 \uc218\uc815\ud55c \uc608 \uc774\ub2e4.<\/p>\n<pre><code># Copyright (c) 1993-2009 Microsoft Corp.\n#\n# This is a sample HOSTS file used by Microsoft TCP\/IP for Windows.\n#\n# This file contains the mappings of IP addresses to host names. Each\n# entry should be kept on an individual line. The IP address should\n# be placed in the first column followed by the corresponding host name.\n# The IP address and the host name should be separated by at least one\n# space.\n#\n# Additionally, comments (such as these) may be inserted on individual\n# lines or following the machine name denoted by a '#' symbol.\n#\n# For example:\n#\n#      102.54.94.97     rhino.acme.com          # source server\n#       38.25.63.10     x.acme.com              # x client host\n<kbd>127.0.0.1\ta.upload.youtube.com<\/kbd>\n<kbd># 127.0.0.1\tb.upload.youtube.com<\/kbd>\n# localhost name resolution is handled within DNS itself.\n#\t127.0.0.1       localhost\n#\t::1             localhost<\/code><\/pre>\n<p>\uc704\uc758 \uc608\uc5d0\uc11c\ub294, \uba54\uc778 \uc5c5\ub85c\ub4dc \uc8fc\uc18c\ub97c <code>PushCap<\/code>\uc774 \uc2e4\ud589\uc911\uc778 PC\ub85c \uc124\uc815 \ud588\ub2e4. \uc989, <code>OBS<\/code>\uc640 <code>PushCap<\/code>\uc774 \ub3d9\uc77c\ud55c \uc11c\ubc84\uc5d0\uc11c \ub3d9\uc791\ud560 \uac83\uc774\ub780 \uc758\ubbf8\ub2e4. \uc608\ube44\uc8fc\uc18c\uc758 \uacbd\uc6b0, \uc904 \uc55e\uc5d0 <code>#<\/code>\uc774 \ubd99\uc5b4\uc788\ub2e4. \uc774\uac83\uc740 \uc8fc\uc11d\uc744 \uc758\ubbf8\ud558\uba70, \uc608\ube44 \uc8fc\uc18c\uc5d0 \ub300\ud574\uc11c\ub294 \ubcc0\uacbd\ud558\uc9c0 \uc54a\uaca0\ub2e4\ub294 \uc758\ubbf8\uc774\ub2e4. \ub9ac\ub205\uc2a4 \uc2dc\uc2a4\ud15c\uc758 <code>hosts<\/code>\uc5ed\uc2dc \ub3d9\uc77c\ud55c \ubc29\uc2dd\uc73c\ub85c \uc218\uc815\ud574 \uc8fc\uba74 \ub41c\ub2e4.<\/p>\n\n<h3>OBS HLS PUSH \ucd9c\ub825 \ucea1\ucc98<\/h3>\n<p><code>PushCap<\/code>\uc758 \uc124\uc815\uc774 \uc644\ub8cc \ub418\uc5c8\ub2e4. \uc774\uc81c <code>OBS<\/code>\ud504\ub85c\uadf8\ub7a8\uc5d0\uc11c YouTube HLS \uc2a4\ud2b8\ub9ac\ubc0d\uc744 \uc2dc\uc791\ud558\uba74 <code>PushCap<\/code>\uc774 \uc2a4\ud2b8\ub9bc \ub370\uc774\ud130\ub97c \uc218\uc2e0\ud558\uac8c \ub41c\ub2e4.<\/p>\n<ol><li><strong>HLS PUSH \uc11c\ube44\uc2a4 \uc120\ud0dd<\/strong><p><code>OBS<\/code>\ud504\ub85c\uadf8\ub7a8\uc758 \uc124\uc815 \ud654\uba74\uc5d0\uc11c <samp>\ubc29\uc1a1(Stream)<\/samp>\uc744 \uc120\ud0dd \ud55c \ub2e4\uc74c, \ud0c0\uac9f \uc11c\ube44\uc2a4 \ubaa9\ub85d\uc5d0\uc11c <code>YouTube-HLS<\/code>\ub97c \uc120\ud0dd\ud574 \uc900\ub2e4.<\/p><figure class=\"wp-block-image aligncenter size-800x500\"><a href=\"https:\/\/www.decteng.com\/ko\/wp-content\/uploads\/sites\/4\/2025\/08\/OBS-YouTube-HLS-Destination.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"381\" src=\"https:\/\/www.decteng.com\/ko\/wp-content\/uploads\/sites\/4\/2025\/08\/OBS-YouTube-HLS-Destination-800x381.webp\" alt=\"OBS\uc758 \uc720\ud29c\ube0c HLS \uc120\ud0dd\ud654\uba74\" class=\"wp-image-1163\" srcset=\"https:\/\/www.decteng.com\/ko\/wp-content\/uploads\/sites\/4\/2025\/08\/OBS-YouTube-HLS-Destination-800x381.webp 800w, https:\/\/www.decteng.com\/ko\/wp-content\/uploads\/sites\/4\/2025\/08\/OBS-YouTube-HLS-Destination-300x143.webp 300w, https:\/\/www.decteng.com\/ko\/wp-content\/uploads\/sites\/4\/2025\/08\/OBS-YouTube-HLS-Destination-768x365.webp 768w, https:\/\/www.decteng.com\/ko\/wp-content\/uploads\/sites\/4\/2025\/08\/OBS-YouTube-HLS-Destination.webp 971w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/figure><\/li>\n<li><strong>\uc2a4\ud2b8\ub9bc \ud0a4 \uc124\uc815<\/strong><p><code>\uc2a4\ud2b8\ub9bc\ud0a4 \uc0ac\uc6a9(Use Stream Key)<\/code>\ub97c \uc120\ud0dd\ud574 \uc2a4\ud2b8\ub9bc \ud0a4 \uc785\ub825 \ubaa8\ub4dc\ub85c \uc9c4\uc785\ud55c \ub4a4, <samp>Stream Key<\/samp>\ud56d\ubaa9\uc5d0 \uc784\uc758\uc758 \ud0a4 \ubc88\ud638\ub97c \uc785\ub825\ud574 \uc900\ub2e4. \uc5ec\uae30\uc5d0\uc11c \uc785\ub825\ud558\ub294 \ud56d\ubaa9\uc740 \uad73\uc774 \uc790\ub9ac\uc218\ub97c \ub9de\ucd9c \ud544\uc694\ub294 \uc5c6\ub2e4. \uc608\uc2dc\ud654\uba74\uc758 \ub0b4\uc6a9\uc740 \ubcf8 \ud544\uc790\uac00 \uc784\uc758\ub85c \uc0dd\uc131\ud55c \ub0b4\uc6a9\uc774\ub2e4.<\/p><figure class=\"wp-block-image aligncenter size-800x500\"><a href=\"https:\/\/www.decteng.com\/ko\/wp-content\/uploads\/sites\/4\/2025\/08\/OBS-YouTube-HLS-Destination-Set-Key.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"216\" src=\"https:\/\/www.decteng.com\/ko\/wp-content\/uploads\/sites\/4\/2025\/08\/OBS-YouTube-HLS-Destination-Set-Key-800x216.webp\" alt=\"OBS\uc758 \uc720\ud29c\ube0c HLS \uc2a4\ud2b8\ub9bc\ud0a4 \uc124\uc815 \ud654\uba74\" class=\"wp-image-1164\" srcset=\"https:\/\/www.decteng.com\/ko\/wp-content\/uploads\/sites\/4\/2025\/08\/OBS-YouTube-HLS-Destination-Set-Key-800x216.webp 800w, https:\/\/www.decteng.com\/ko\/wp-content\/uploads\/sites\/4\/2025\/08\/OBS-YouTube-HLS-Destination-Set-Key-300x81.webp 300w, https:\/\/www.decteng.com\/ko\/wp-content\/uploads\/sites\/4\/2025\/08\/OBS-YouTube-HLS-Destination-Set-Key-768x207.webp 768w, https:\/\/www.decteng.com\/ko\/wp-content\/uploads\/sites\/4\/2025\/08\/OBS-YouTube-HLS-Destination-Set-Key.webp 967w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/figure><\/li>\n<li><strong>\ubc29\uc1a1 \uc2dc\uc791<\/strong><p><code>\ubc29\uc1a1 \uc2dc\uc791(Start Streaming)<\/code>\uc744 \uc120\ud0dd\ud574, \uc2a4\ud2b8\ub9ac\ubc0d\uc744 \uc2dc\uc791\ud558\uba74, <code>PushCap<\/code>\uc5d0 \uc5f0\uacb0\ub418\uc5b4 \uc2a4\ud2b8\ub9bc \ub370\uc774\ud130\ub97c \uc5c5\ub85c\ub4dc \ud558\ub294 \uac83\uc744 \ud655\uc778\ud560 \uc218 \uc788\ub2e4.<\/li><figure class=\"wp-block-image aligncenter size-800x500\"><a href=\"https:\/\/www.decteng.com\/ko\/wp-content\/uploads\/sites\/4\/2025\/08\/PushCap-Receiving-HLS-datas.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"457\" src=\"https:\/\/www.decteng.com\/ko\/wp-content\/uploads\/sites\/4\/2025\/08\/PushCap-Receiving-HLS-datas-800x457.webp\" alt=\"PushCap HLS \ub370\uc774\ud130 \uc785\uc218\" class=\"wp-image-1165\" srcset=\"https:\/\/www.decteng.com\/ko\/wp-content\/uploads\/sites\/4\/2025\/08\/PushCap-Receiving-HLS-datas-800x457.webp 800w, https:\/\/www.decteng.com\/ko\/wp-content\/uploads\/sites\/4\/2025\/08\/PushCap-Receiving-HLS-datas-300x171.webp 300w, https:\/\/www.decteng.com\/ko\/wp-content\/uploads\/sites\/4\/2025\/08\/PushCap-Receiving-HLS-datas-768x439.webp 768w, https:\/\/www.decteng.com\/ko\/wp-content\/uploads\/sites\/4\/2025\/08\/PushCap-Receiving-HLS-datas.webp 973w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/figure><\/ol>\n\n<h3>HLS \ucea1\ucc98 \ub370\uc774\ud130 \ud655\uc778<\/h3>\n<p><code>OBS<\/code>\uc758 \uc2a4\ud2b8\ub9ac\ubc0d\uc744 \uc885\ub8cc\ud55c \ud6c4, <code>PushCap<\/code>\ud30c\uc77c\uc774 \uc788\ub294 \ub514\ub809\ud1a0\ub9ac\ub97c \ud655\uc778\ud574 \ubcf4\uba74 <code>upload<\/code>\ub77c\ub294 \ud558\uc704 \ub514\ub809\ud1a0\ub9ac\uac00 \uc0dd\uc131\ub41c \uac83\uc744 \ud655\uc778\ud560 \uc218 \uc788\ub2e4. \ud574\ub2f9 \ub514\ub809\ud1a0\ub9ac \uc548\uc5d0\ub294 \uc704\uc5d0\uc11c \uc0ac\uc6a9\ud55c \ud0a4 \uc774\ub984\uc758 \ub514\ub809\ud1a0\ub9ac\uac00 \uc788\uace0, \uadf8 \uc548\uc5d0\ub294 <code>OBS<\/code>\uac00 \uc804\uc1a1\ud55c HLS \ub370\uc774\ud130\ub97c \ucea1\ucc98\ud55c \ud30c\uc77c\uc774 \ub4e4\uc5b4\uc788\ub2e4.<\/p>\n<figure class=\"wp-block-image aligncenter size-800x500\"><a href=\"https:\/\/www.decteng.com\/ko\/wp-content\/uploads\/sites\/4\/2025\/08\/PushCap-upload-directory.webp\"><img loading=\"lazy\" decoding=\"async\" width=\"582\" height=\"500\" src=\"https:\/\/www.decteng.com\/ko\/wp-content\/uploads\/sites\/4\/2025\/08\/PushCap-upload-directory-582x500.webp\" alt=\"PushCap\uc73c\ub85c \ucea1\ucc98\ubc1b\uc740 HLS \ub370\uc774\ud130\" class=\"wp-image-1166\" srcset=\"https:\/\/www.decteng.com\/ko\/wp-content\/uploads\/sites\/4\/2025\/08\/PushCap-upload-directory-582x500.webp 582w, https:\/\/www.decteng.com\/ko\/wp-content\/uploads\/sites\/4\/2025\/08\/PushCap-upload-directory-300x258.webp 300w, https:\/\/www.decteng.com\/ko\/wp-content\/uploads\/sites\/4\/2025\/08\/PushCap-upload-directory.webp 624w\" sizes=\"auto, (max-width: 582px) 100vw, 582px\" \/><\/a><\/figure>\n\n<p>\ud655\uc7a5\uc790\uac00 <code>.ts<\/code>\uc778 \ud30c\uc77c\uc740 \ub3d9\uc601\uc0c1 \ub370\uc774\ud130\ub85c, <code>OBS<\/code>\uac00 \uc5c5\ub85c\ub4dc\ud55c \ud30c\uc77c\uc774 \uadf8\ub300\ub85c \uc800\uc7a5\ub41c\ub2e4. \ud50c\ub808\uc774\ub9ac\uc2a4\ud2b8\uc778 <code>.m3u8<\/code>\ud30c\uc77c\uc740 <code>OBS<\/code>\uac00 \uc5c5\ub85c\ub4dc \ud560 \ub54c \ub9c8\ub2e4 \ubc88\ud638\ub97c \ubd99\uc5ec \uc800\uc7a5\ud55c\ub2e4. \ub9c8\uc9c0\ub9c9\uc73c\ub85c \ubc88\ud638\uac00 \ubd99\uc9c0 \uc54a\uc740 <code>.m3u8<\/code>\ud30c\uc77c\uc740 OBS\uac01 \uc804\uc1a1\ud55c \uc81c\uc77c \ub9c8\uc9c0\ub9c9 \ud30c\uc77c\ub85c, \ub9c8\uc9c0\ub9c9 \ubc88\ud638\uac00 \ubd99\uc5b4\uc788\ub294 \ud30c\uc77c\uacfc \ub3d9\uc77c\ud55c \ud30c\uc77c\uc774\ub2e4.<\/p>\n\n<h3>\ub370\uc774\ud130 \uac80\uc99d<\/h3>\n<p>\ucea1\ucc98\ubc1b\uc740 \ub370\uc774\ud130 \ud30c\uc77c\ub4e4\uc774 \uc815\uc0c1\uc801\uc73c\ub85c \uc0dd\uc131 \ub418\uc5c8\ub294\uc9c0 \ud655\uc778\ud558\uba74 \ub41c\ub2e4. \uc720\ud29c\ube0c\uc758 \uacbd\uc6b0\uc5d0\ub294 <a href=\"https:\/\/developers.google.com\/youtube\/v3\/live\/guides\/hls-ingestion?hl=ko\" title=\"HLS\ub97c \ud1b5\ud574 \ub77c\uc774\ube0c YouTube \ucf58\ud150\uce20 \uc81c\uacf5\" hreflang=\"ko-kr\" target=\"_blank\" rel=\"noopener\">\uc720\ud29c\ube0c HLS \ub77c\uc774\ube0c \ucf58\ud150\uce20 \uba85\uc138\uc11c<\/a>\ub97c \ucc38\uace0\ud558\uc5ec, \ucea1\ucc98\ub41c \ub370\uc774\ud130\ub4e4\uc774 HLS \uba85\uc138\uc5d0 \ub9de\ub294 \uaddc\uaca9\uc778\uc9c0 \ud655\uc778\ud574 \ubcf4\uba74 \ub418\uaca0\ub2e4.<\/p>\n<\/section>\n\n<section>\n<h2>\ub9c8\ubb34\ub9ac<\/h2>\n<p>\uc5b4\ub5a4 \ud504\ub85c\uadf8\ub7a8\uc774 \uc798 \ub3d9\uc791\ud558\ub294\uc9c0 \ud655\uc778\ud558\ub294 \uac00\uc7a5 \uc88b\uc740 \ubc29\ubc95\uc740, \ud504\ub85c\uadf8\ub7a8\uc758 \ucd9c\ub825\uc774 \uc758\ub3c4\ud55c \ub300\ub85c \ub098\uc624\ub294 \uac00\ub97c \ud655\uc778\ud558\ub294 \uac83 \uc774\ub2e4. <code>PushCap<\/code>\uc744 \ud1b5\ud574 \uc2a4\ud2b8\ub9ac\ubc0d \ud504\ub85c\uadf8\ub7a8\uc758 HLS \uc2a4\ud2b8\ub9bc \ub370\uc774\ud130 \ucd9c\ub825\uc744 \uc9c1\uc811 \ud655\uc778\ud560 \uc218 \uc788\ub2e4. \ud639, HLS \uc2a4\ud2b8\ub9ac\ubc0d \ud504\ub85c\uadf8\ub7a8\uc774 \uc81c\ub300\ub85c \ub3d9\uc791\ud558\uc9c0 \uc54a\uc544, m3u8 \ub370\uc774\ud130\uac00 \uc815\uc0c1\uc801\uc73c\ub85c \uc0dd\uc131 \ub418\uc5c8\ub294\uc9c0, ts\ud30c\uc77c\uc758 \ud3ec\ub9f7\uacfc \ud615\ud0dc\uac00 \uc815\uc0c1\uc778\uc9c0 \ud655\uc778\ud574\uc57c \ud558\ub294 \uc0c1\ud669\uc5d0 \ub193\uc774\uc2e0 \ub3c5\uc790 \uc81c\uc704\uaed8, \ubcf8 \ud544\uc790\uc758 \uae00\uc774 \uc791\uc740 \ud78c\ud2b8\uac00 \ub418\uc5b4\ub4dc\ub9ac\uae30\ub97c \uc18c\ub9dd\ud558\ub294 \ubc14 \uc774\ub2e4.<\/p><\/section>\n<section>\n<h2>FAQ<\/H2>\n<dl>\n<dt>HLS \uc2a4\ud2b8\ub9ac\ubc0d \ub370\uc774\ud130\uc5d0\ub294 \uc5b4\ub5a4 \uac83\ub4e4\uc774 \uc788\ub294\uac00?<\/dt><dd>HLS \uc2a4\ud2b8\ub9ac\ubc0d \ub370\uc774\ud130\ub294 \uc2e4\uc81c \ub3d9\uc601\uc0c1 \ub370\uc774\ud130\uac00 \ub4e4\uc5b4\uc788\ub294 .ts \ud30c\uc77c\uacfc \ub3d9\uc601\uc0c1 \ub370\uc774\ud130 \ud30c\uc77c\uc744 \uc7ac\uc0dd\ud560 \uc21c\uc11c\uc5d0 \ub300\ud55c \uc815\ubcf4\ub97c \uac00\uc9c0\uace0 \uc788\ub294 .m3u8 \ud30c\uc77c\ub85c \uad6c\uc131\ub41c\ub2e4.<\/dd>\n<dt>.m3u8 \ud30c\uc77c\uc5d0 \ub4e4\uc5b4\uac00\ub294 \uc815\ubcf4\ub294?<\/dt><dd>\uc774 m3u8 \ud30c\uc77c\uc758 \ubc84\uc804, \ub3d9\uc601\uc0c1 \ud30c\uc77c\uc758 \uae38\uc774, \ub3d9\uc601\uc0c1 \ud30c\uc77c\uc758 \uc7ac\uc0dd\ud560 \uc21c\uc11c \ubc88\ud638, \uac01 \uc21c\uc11c\ubcc4\ub85c \uc7ac\uc0dd\ud560 \ub3d9\uc601\uc0c1 \ud30c\uc77c\uc758 \uc774\ub984\ub4f1\uc774 \ub4e4\uc5b4\uac04\ub2e4. \ucd94\uac00\uc801\uc73c\ub85c SCTE-35 \ub514\uc9c0\ud138 \ud050\ud1a4 \ub370\uc774\ud130, \ub2e4\uc911 \ube44\ud2b8\ub808\uc774\ud2b8 \ub300\uc751\uc744 \uc704\ud55c \ube44\ud2b8\ub808\uc774\ud2b8\ubcc4 \ub3d9\uc601\uc0c1 \ud30c\uc77c \uc774\ub984 \ub4f1\uc758 \ub370\uc774\ud130\ub3c4 \uc874\uc7ac \ud55c\ub2e4.<\/dd>\n<dt>OBS\uc758 \uccad\ud06c \ub370\uc774\ud130 \uae38\uc774\ub294?<\/dt><dd>OBS YouTube \uccad\ud06c\ub294 2\ucd08\ub97c \uae30\uc900\uc73c\ub85c \uc0dd\uc131\ub41c\ub2e4. \uc720\ud29c\ube0c\uc5d0\uc11c\ub294 2~4\ucd08\uc758 \uae38\uc774\ub97c \uad8c\uc7a5\ud558\uace0 \uc788\ub2e4.<\/dd>\n<dt>\uc720\ud29c\ube0c\uc758 HLS \uc785\uc218 \uc8fc\uc18c\uc640 \uc77c\ubc18\uc801\uc778 HLS \uc11c\ubc84\uc640\uc758 \ucc28\uc774\ub294?<\/dt><dd>\uc720\ud29c\ube0c\uc758 HLS PUSH \uc8fc\uc18c\ub294 cid\uc640 \ud30c\uc77c \uc774\ub984 \ub9e4\uac1c\ubcc0\uc218\ub97c \ud3ec\ud568\ud55c\ub2e4. \ubc18\uba74, \ubcf4\ud1b5\uc758 HLS \uc11c\ubc84\ub4e4\uc740 \uc774\ubbf8 \ud655\uc815\ub41c \uacbd\ub85c\uc758 \uc704\uce58\uc5d0 \ud30c\uc77c\uc744 \uc9c1\uc811 \uc5c5\ub85c\ub4dc \ud558\ub294 \ubc29\uc2dd\uc744 \uc0ac\uc6a9\ud55c\ub2e4. \ub54c\ubb38\uc5d0 HLS PUSH\ub97c \uc9c0\uc6d0\ud558\ub294 \uc2a4\ud2b8\ub9ac\ubc0d \uc18c\ud504\ud2b8\uc6e8\uc5b4\ub77c\uace0 \ud560 \uc9c0\ub77c\ub3c4 \ucd9c\ub825 \uc8fc\uc18c\uc758 \ud615\ud0dc\uc5d0 \ub530\ub77c \uc801\uc6a9\uc774 \ubd88\uac00\ub2a5\ud55c \uacbd\uc6b0\uac00 \uc788\uc744 \uc218 \uc788\ub2e4.<\/dd>\n<\/dl>\n<\/section>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>HLS PUSH \uc2a4\ud2b8\ub9ac\ubc0d \uc18c\ud504\ud2b8\uc6e8\uc5b4 \ucd9c\ub825 \ub514\ubc84\uadf8\ub97c \uc704\ud574 \ud30c\uc774\uc36c\uc73c\ub85c \uad6c\ud604\ud55c HLS \uc218\uc2e0 \uc11c\ubc84 PushCap\uc758 \ucf54\ub4dc\uc640 \uc0ac\uc6a9 \ubc29\ubc95\uc744 \uacf5\uc720\ud558\uace0, hosts \ud30c\uc77c\uc744 \uc218\uc815\ud574 \uc2e4\uc81c OBS\uc758 \uc720\ud29c\ube0c HLS PUSH \uc2a4\ud2b8\ub9bc \ucd9c\ub825\uc758 m3u8\uacfc ts\ub370\uc774\ud130\ub97c \ud30c\uc77c\ub85c \ucea1\ucdb0\ud558\ub294 \uacfc\uc815\uc744 \uacf5\uc720\ud55c\ub2e4.<\/p>\n","protected":false},"author":1,"featured_media":1168,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[66,26,68,22,25,67,171],"class_list":{"0":"post-1167","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-ott","8":"tag-hls","9":"tag-ott","10":"tag-develop","11":"tag-experience","12":"tag-live-streaming","13":"tag-youtube","14":"tag-171","15":"content-layout-excerpt-thumb"},"_links":{"self":[{"href":"https:\/\/www.decteng.com\/ko\/wp-json\/wp\/v2\/posts\/1167","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.decteng.com\/ko\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.decteng.com\/ko\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.decteng.com\/ko\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.decteng.com\/ko\/wp-json\/wp\/v2\/comments?post=1167"}],"version-history":[{"count":5,"href":"https:\/\/www.decteng.com\/ko\/wp-json\/wp\/v2\/posts\/1167\/revisions"}],"predecessor-version":[{"id":1189,"href":"https:\/\/www.decteng.com\/ko\/wp-json\/wp\/v2\/posts\/1167\/revisions\/1189"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.decteng.com\/ko\/wp-json\/wp\/v2\/media\/1168"}],"wp:attachment":[{"href":"https:\/\/www.decteng.com\/ko\/wp-json\/wp\/v2\/media?parent=1167"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.decteng.com\/ko\/wp-json\/wp\/v2\/categories?post=1167"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.decteng.com\/ko\/wp-json\/wp\/v2\/tags?post=1167"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}