{"id":50708,"date":"2023-08-11T04:12:45","date_gmt":"2022-07-13T01:21:37","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%a6%82%e4%bd%95%e5%9c%a8ubuntu-22-04%e4%b8%8a%e4%bd%bf%e7%94%a8nginx-rtmp%e5%bb%ba%e7%ab%8b%e8%a7%86%e9%a2%91%e6%b5%81%e6%9c%8d%e5%8a%a1%e5%99%a8%e3%80%82\/"},"modified":"2024-01-15T13:16:25","modified_gmt":"2024-01-15T05:16:25","slug":"%e5%a6%82%e4%bd%95%e5%9c%a8ubuntu-22-04%e4%b8%8a%e4%bd%bf%e7%94%a8nginx-rtmp%e5%bb%ba%e7%ab%8b%e8%a7%86%e9%a2%91%e6%b5%81%e6%9c%8d%e5%8a%a1%e5%99%a8%e3%80%82","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%a6%82%e4%bd%95%e5%9c%a8ubuntu-22-04%e4%b8%8a%e4%bd%bf%e7%94%a8nginx-rtmp%e5%bb%ba%e7%ab%8b%e8%a7%86%e9%a2%91%e6%b5%81%e6%9c%8d%e5%8a%a1%e5%99%a8%e3%80%82\/","title":{"rendered":"\u5982\u4f55\u5728Ubuntu 22.04\u4e0a\u4f7f\u7528Nginx-RTMP\u5efa\u7acb\u89c6\u9891\u6d41\u670d\u52a1\u5668\u3002"},"content":{"rendered":"<h3>\u5f15\u8a00<\/h3>\n<p>\u6d41\u5a92\u4f53\u89c6\u9891\u6709\u8bb8\u591a\u5e94\u7528\u573a\u666f\u3002\u50cfTwitch\u8fd9\u6837\u7684\u670d\u52a1\u63d0\u4f9b\u5546\u5728\u5904\u7406\u7f51\u7edc\u53d1\u73b0\u548c\u793e\u533a\u7ba1\u7406\u65b9\u9762\u975e\u5e38\u53d7\u6b22\u8fce\uff0c\u800c\u50cfOBS Studio\u8fd9\u6837\u7684\u514d\u8d39\u8f6f\u4ef6\u5219\u5e7f\u6cdb\u7528\u4e8e\u5b9e\u65f6\u5408\u5e76\u591a\u4e2a\u4e0d\u540c\u6d41\u5a92\u4f53\u6e90\u7684\u89c6\u9891\u8986\u76d6\u5c42\u3002\u867d\u7136\u8fd9\u4e9b\u5e73\u53f0\u975e\u5e38\u5f3a\u5927\uff0c\u4f46\u5728\u67d0\u4e9b\u60c5\u51b5\u4e0b\uff0c\u60a8\u53ef\u80fd\u5e0c\u671b\u80fd\u591f\u6258\u7ba1\u4e0d\u4f9d\u8d56\u5176\u4ed6\u670d\u52a1\u63d0\u4f9b\u5546\u7684\u6d41\u5a92\u4f53\u3002<\/p>\n<p>\u5728\u672c\u6559\u7a0b\u4e2d\uff0c\u60a8\u5c06\u5b66\u4e60\u5982\u4f55\u914d\u7f6eNginx Web\u670d\u52a1\u5668\u6765\u6258\u7ba1\u72ec\u7acb\u7684RTMP\u89c6\u9891\u6d41\uff0c\u8be5\u6d41\u53ef\u4ee5\u5728\u4e0d\u540c\u7684\u5e94\u7528\u7a0b\u5e8f\u4e2d\u94fe\u63a5\u548c\u89c2\u770b\u3002RTMP\uff08\u5b9e\u65f6\u6d88\u606f\u4f20\u8f93\u534f\u8bae\uff09\u5b9a\u4e49\u4e86\u5927\u591a\u6570\u4e92\u8054\u7f51\u89c6\u9891\u6d41\u7684\u57fa\u7840\u77e5\u8bc6\u3002\u60a8\u8fd8\u5c06\u5b66\u4e60\u5982\u4f55\u4f7f\u7528\u76f8\u540c\u7684\u6280\u672f\u6258\u7ba1\u652f\u6301\u66f4\u73b0\u4ee3\u5e73\u53f0\u7684HLS\u548cDASH\u6d41\u3002<\/p>\n<h2>\u5148\u51b3\u6761\u4ef6<\/h2>\n<p>\u5b8c\u6210\u672c\u6307\u5357\uff0c\u60a8\u9700\u8981\u4ee5\u4e0b\uff1a<\/p>\n<ul class=\"post-ul\">\n<li>An Ubuntu 22.04 server and a non-root user with sudo privileges. You can learn more about how to set up a user with these privileges in our Initial Server Setup with Ubuntu 22.04 guide.<\/li>\n<li>Nginx installed, following How To Install Nginx on Ubuntu 22.04.<\/li>\n<\/ul>\n<p>\u672c\u6559\u7a0b\u5c06\u4f7f\u7528\u5360\u4f4d\u7b26\u57df\u540dyour_domain\u4f5c\u4e3aURL\u548c\u4e3b\u673a\u540d\u3002\u5728\u6559\u7a0b\u4e2d\u8fdb\u884c\u64cd\u4f5c\u65f6\uff0c\u8bf7\u7528\u60a8\u81ea\u5df1\u7684\u57df\u540d\u6216IP\u5730\u5740\u66ff\u6362\u5b83\u3002<\/p>\n<h2>\u7b2c\u4e00\u6b65 &#8211; \u5b89\u88c5\u548c\u914d\u7f6eNginx-RTMP<\/h2>\n<p>\u5927\u591a\u6570\u73b0\u4ee3\u6d41\u5a92\u4f53\u5de5\u5177\u90fd\u652f\u6301RTMP\u534f\u8bae\uff0c\u8be5\u534f\u8bae\u5b9a\u4e49\u4e86\u4e92\u8054\u7f51\u89c6\u9891\u6d41\u7684\u57fa\u672c\u53c2\u6570\u3002Nginx\u7f51\u7edc\u670d\u52a1\u5668\u5305\u542b\u4e00\u4e2a\u6a21\u5757\uff0c\u5141\u8bb8\u60a8\u901a\u8fc7\u4e13\u7528URL\u63d0\u4f9b\u6700\u5c0f\u914d\u7f6e\u7684RTMP\u6d41\uff0c\u7c7b\u4f3c\u4e8e\u9ed8\u8ba4\u63d0\u4f9bHTTP\u8bbf\u95ee\u7f51\u9875\u7684\u65b9\u5f0f\u3002Nginx RTMP\u6a21\u5757\u4e0d\u4f1a\u81ea\u52a8\u5305\u542b\u5728Nginx\u4e2d\uff0c\u4f46\u5728Ubuntu 22.04\u548c\u5927\u591a\u6570\u5176\u4ed6Linux\u53d1\u884c\u7248\u4e0a\uff0c\u60a8\u53ef\u4ee5\u5c06\u5176\u4f5c\u4e3a\u989d\u5916\u7684\u8f6f\u4ef6\u5305\u5b89\u88c5\u3002<\/p>\n<p>\u5f00\u59cb\u4ee5\u975eroot\u7528\u6237\u8eab\u4efd\u8fd0\u884c\u4ee5\u4e0b\u547d\u4ee4\u6765\u66f4\u65b0\u8f6f\u4ef6\u5305\u5217\u8868\u5e76\u5b89\u88c5Nginx\u6a21\u5757\uff1a<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">sudo<\/span> <span class=\"token function\">apt<\/span> update<\/li>\n<li data-prefix=\"$\"><span class=\"token function\">sudo<\/span> <span class=\"token function\">apt<\/span> <span class=\"token function\">install<\/span> libnginx-mod-rtmp<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u5b89\u88c5\u8be5\u6a21\u5757\u5e76\u4e0d\u4f1a\u81ea\u52a8\u5f00\u59cb\u63d0\u4f9b\u6d41\u3002\u60a8\u9700\u8981\u5728Nginx\u914d\u7f6e\u6587\u4ef6\u4e2d\u6dfb\u52a0\u4e00\u4e2a\u914d\u7f6e\u5757\uff0c\u5b9a\u4e49\u6d41\u7684\u4f4d\u7f6e\u548c\u65b9\u5f0f\u3002<\/p>\n<p>\u4f7f\u7528nano\u6216\u8005\u4f60\u559c\u6b22\u7684\u6587\u672c\u7f16\u8f91\u5668\uff0c\u6253\u5f00Nginx\u7684\u4e3b\u914d\u7f6e\u6587\u4ef6\/etc\/nginx\/nginx.conf\uff0c\u5e76\u5728\u6587\u4ef6\u672b\u5c3e\u6dfb\u52a0\u4ee5\u4e0b\u914d\u7f6e\u5757\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">sudo<\/span> <span class=\"token function\">nano<\/span> \/etc\/nginx\/nginx.conf<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<div>\/etc\/nginx\/nginx.conf \u53ef\u4ee5\u88ab\u91ca\u4e49\u4e3a &#8220;Nginx \u7684\u914d\u7f6e\u6587\u4ef6&#8221; \u3002<\/div>\n<pre class=\"post-pre\"><code>. . .\r\nrtmp {\r\n        server {\r\n                listen 1935;\r\n                chunk_size 4096;\r\n                allow publish 127.0.0.1;\r\n                deny publish all;\r\n\r\n                application live {\r\n                        live on;\r\n                        record off;\r\n                }\r\n        }\r\n}\r\n<\/code><\/pre>\n<ul class=\"post-ul\">\n<li>listen 1935 means that RTMP will be listening for connections on port 1935, which is standard.<\/li>\n<li>chunk_size 4096 means that RTMP will be sending data in 4KB blocks, which is also standard.<\/li>\n<li>allow publish 127.0.0.1 and deny publish all mean that the server will only allow video to be published from the same server, to avoid any other users pushing their own streams.<\/li>\n<li>application live defines an application block that will be available at the \/live URL path.<\/li>\n<li>live on enables live mode so that multiple users can connect to your stream concurrently, a baseline assumption of video streaming.<\/li>\n<li>record off disables Nginx-RTMP\u2019s recording functionality, so that all streams are not separately saved to disk by default.<\/li>\n<\/ul>\n<p>\u4fdd\u5b58\u5e76\u5173\u95ed\u6587\u4ef6\u3002\u5982\u679c\u4f60\u6b63\u5728\u4f7f\u7528nano\uff0c\u6309\u4e0bCTRL+X\uff0c\u7136\u540e\u5728\u63d0\u793a\u65f6\u6309Y\u548cENTER\u3002<\/p>\n<p>\u8fd9\u662f\u4f60\u7684RTMP\u914d\u7f6e\u7684\u5f00\u5934\u3002\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u5b83\u76d1\u542c\u57281935\u7aef\u53e3\u4e0a\uff0c\u8fd9\u610f\u5473\u7740\u4f60\u9700\u8981\u5728\u9632\u706b\u5899\u4e2d\u6253\u5f00\u8be5\u7aef\u53e3\u3002\u5982\u679c\u4f60\u5728\u521d\u59cb\u670d\u52a1\u5668\u8bbe\u7f6e\u65f6\u914d\u7f6e\u4e86ufw\uff0c\u8bf7\u8fd0\u884c\u4ee5\u4e0b\u547d\u4ee4\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">sudo<\/span> ufw allow <span class=\"token number\">1935<\/span>\/tcp<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u73b0\u5728\u4f60\u53ef\u4ee5\u4f7f\u7528\u4f60\u7684\u66f4\u6539\u91cd\u65b0\u52a0\u8f7dNginx\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">sudo<\/span> systemctl reload nginx.service<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u4f60\u73b0\u5728\u6709\u4e00\u4e2a\u6b63\u5728\u5de5\u4f5c\u7684RTMP\u670d\u52a1\u5668\u3002\u5728\u4e0b\u4e00\u90e8\u5206\u4e2d\uff0c\u6211\u4eec\u5c06\u4ecb\u7ecd\u5982\u4f55\u4ece\u672c\u5730\u548c\u8fdc\u7a0b\u6e90\u6d41\u5f0f\u4f20\u8f93\u89c6\u9891\u81f3\u4f60\u7684RTMP\u670d\u52a1\u5668\u3002<\/p>\n<h2>\u7b2c\u4e8c\u6b65 &#8211; \u5c06\u89c6\u9891\u53d1\u9001\u5230\u4f60\u7684RTMP\u670d\u52a1\u5668\u3002<\/h2>\n<p>\u6709\u591a\u79cd\u65b9\u6cd5\u53ef\u4ee5\u5411RTMP\u670d\u52a1\u5668\u53d1\u9001\u89c6\u9891\u3002\u5176\u4e2d\u4e00\u79cd\u9009\u62e9\u662f\u4f7f\u7528ffmpeg\uff0c\u8fd9\u662f\u4e00\u79cd\u5e38\u7528\u7684\u547d\u4ee4\u884c\u97f3\u89c6\u9891\u5de5\u5177\uff0c\u53ef\u4ee5\u76f4\u63a5\u5728\u670d\u52a1\u5668\u4e0a\u64ad\u653e\u89c6\u9891\u6587\u4ef6\u3002\u5982\u679c\u670d\u52a1\u5668\u4e0a\u6ca1\u6709\u89c6\u9891\u6587\u4ef6\uff0c\u60a8\u53ef\u4ee5\u4f7f\u7528youtube-dl\u8fd9\u4e2a\u547d\u4ee4\u884c\u5de5\u5177\u4ece\u50cfYouTube\u8fd9\u6837\u7684\u6d41\u5a92\u4f53\u5e73\u53f0\u4e0b\u8f7d\u89c6\u9891\u3002\u5982\u679c\u8981\u4f7f\u7528youtube-dl\uff0c\u60a8\u8fd8\u9700\u8981\u5728\u670d\u52a1\u5668\u4e0a\u5b89\u88c5\u6700\u65b0\u7248\u672c\u7684Python\u3002<\/p>\n<p>\u9996\u5148\uff0c\u5b89\u88c5Python\u53ca\u5176\u8f6f\u4ef6\u5305\u7ba1\u7406\u5668pip\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">sudo<\/span> <span class=\"token function\">apt<\/span> <span class=\"token function\">install<\/span> python3-pip<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u63a5\u4e0b\u6765\uff0c\u4f7f\u7528pip\u6765\u5b89\u88c5youtube-dl\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">sudo<\/span> pip <span class=\"token function\">install<\/span> youtube-dl<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u73b0\u5728\u4f60\u53ef\u4ee5\u4f7f\u7528youtube-dl\u4eceYouTube\u4e0b\u8f7d\u89c6\u9891\u3002\u5982\u679c\u4f60\u8fd8\u6ca1\u60f3\u597d\u89c6\u9891\uff0c\u53ef\u4ee5\u8bd5\u8bd5\u8fd9\u4e2a\u89c6\u9891\uff0c\u4ecb\u7ecdDigitalOcean\u7684App\u5e73\u53f0\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\">youtube-dl https:\/\/www.youtube.com\/watch?v<span class=\"token operator\">=<\/span>iom_nhYQIYk <span class=\"token parameter variable\">-f<\/span> mp4<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<div class=\"post-conf-note\">\n<p class=\"post-conf-desc\">Note<\/p>\n<div>\u6ce8\u610f\uff1a\u6709\u65f6\u5019\u60a8\u53ef\u80fd\u4f1a\u9047\u5230\u4e00\u4e2a\u9519\u8bef\uff0c\u63d0\u793a\u201c\u9519\u8bef\uff1a\u65e0\u6cd5\u4e0b\u8f7d\u89c6\u9891\u6570\u636e\uff1aHTTP\u9519\u8bef403\uff1a\u7981\u6b62\u8bbf\u95ee\u201d\u3002\u5982\u679c\u51fa\u73b0\u8fd9\u79cd\u60c5\u51b5\uff0c\u8bf7\u518d\u6b21\u68c0\u67e5\u60a8\u7684URL\u662f\u5426\u6b63\u786e\u3002\u5982\u679cURL\u6b63\u786e\uff0c\u518d\u6b21\u8fd0\u884c\u8be5\u547d\u4ee4\u5373\u53ef\u89e3\u51b3\u3002\u8fd9\u662f\u901a\u8fc7\u8fd9\u4e2a\u5e93\u4e0eYouTube\u8fdb\u884c\u4ea4\u4e92\u7684\u4e00\u4e2a\u5c0f\u95ee\u9898\u3002<\/div>\n<\/div>\n<p>\u4f60\u7684\u8f93\u51fa\u5c06\u4f1a\u4f5c\u4e3ayoutube-dl\u8fd4\u56de\uff0c\u5b83\u4f1a\u5c06\u4e0b\u8f7d\u7684\u89c6\u9891\u548c\u97f3\u9891\u6d41\u5408\u5e76\u4e3a\u4e00\u4e2a\u6587\u4ef6\uff0c\u8fd9\u662f\u6b63\u5e38\u7684\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<div class=\"secondary-code-label\" title=\"Output\">Output<\/div>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>[youtube] iom_nhYQIYk: Downloading webpage [download] Destination: Introducing App Platform by DigitalOcean-iom_nhYQIYk.mp4 [download] 100% of 7.90MiB in 01:39<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u73b0\u5728\uff0c\u5728\u60a8\u7684\u5f53\u524d\u76ee\u5f55\u4e0b\u6709\u4e00\u4e2a\u89c6\u9891\u6587\u4ef6\uff0c\u6807\u9898\u7c7b\u4f3c\u4e8eIntroducing App Platform by DigitalOcean-iom_nhYQIYk.mp4\u3002\u8981\u8fdb\u884c\u6d41\u5a92\u4f53\u64ad\u653e\uff0c\u8bf7\u5b89\u88c5ffmpeg\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">sudo<\/span> <span class=\"token function\">apt<\/span> <span class=\"token function\">install<\/span> ffmpeg<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u5e76\u4f7f\u7528FFmpeg\u5c06\u5176\u53d1\u9001\u5230\u60a8\u7684RTMP\u670d\u52a1\u5668\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\">ffmpeg <span class=\"token parameter variable\">-re<\/span> <span class=\"token parameter variable\">-i<\/span> <span class=\"token string\">&#8220;Introducing App Platform by DigitalOcean-iom_nhYQIYk.mp4&#8221;<\/span> <span class=\"token parameter variable\">-c:v<\/span> copy <span class=\"token parameter variable\">-c:a<\/span> aac <span class=\"token parameter variable\">-ar<\/span> <span class=\"token number\">44100<\/span> <span class=\"token parameter variable\">-ac<\/span> <span class=\"token number\">1<\/span> <span class=\"token parameter variable\">-f<\/span> flv rtmp:\/\/localhost\/live\/stream<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u8fd9\u4e2affmpeg\u547d\u4ee4\u6b63\u5728\u5bf9\u89c6\u9891\u8fdb\u884c\u4e00\u4e9b\u64cd\u4f5c\uff0c\u4ee5\u4fbf\u5c06\u5176\u51c6\u5907\u4e3a\u9002\u5408\u6d41\u5a92\u4f53\u7684\u683c\u5f0f\u3002\u8fd9\u5e76\u4e0d\u662f\u4e00\u4e2affmpeg\u6559\u7a0b\uff0c\u6240\u4ee5\u4f60\u4e0d\u9700\u8981\u8fc7\u5206\u5173\u6ce8\u5b83\uff0c\u4f46\u4f60\u53ef\u4ee5\u5c06\u5404\u79cd\u9009\u9879\u7406\u89e3\u5982\u4e0b\uff1a<\/p>\n<ul class=\"post-ul\">\n<li>-re specifies that input will be read at its native frame rate.<\/li>\n<li>-i &#8220;Introducing App Platform by DigitalOcean-iom_nhYQIYk.mp4&#8221; specifies the path to our input file.<\/li>\n<li>-c:v is set to copy, meaning that you\u2019re copying over the video format you got from YouTube natively.<\/li>\n<li>-c:a has other parameters, namely aac -ar 44100 -ac 1, because you need to resample the audio to an RTMP-friendly format. aac is a widely supported audio codec, 44100 hz is a common frequency, and -ac 1 specifies the first version of the AAC spec for compatibility purposes.<\/li>\n<li>-f flv wraps the video in an flv format container for maximum compatibility with RTMP.<\/li>\n<\/ul>\n<p>\u89c6\u9891\u88ab\u53d1\u9001\u5230 rtmp:\/\/localhost\/live\/stream\uff0c\u8fd9\u662f\u56e0\u4e3a\u60a8\u5728\u7b2c\u4e00\u6b65\u4e2d\u5b9a\u4e49\u4e86\u76f4\u64ad\u914d\u7f6e\u5757\uff0c\u5e76\u4e14stream\u662f\u6b64\u89c6\u9891\u7684\u968f\u610f\u9009\u62e9\u7684URL\u3002<\/p>\n<div class=\"post-conf-note\">\n<p class=\"post-conf-desc\">Note<\/p>\n<div>\u6ce8\u610f\uff1a\u60a8\u53ef\u4ee5\u901a\u8fc7 ffmprovisr \u4e86\u89e3\u6709\u5173 ffmpeg \u9009\u9879\u7684\u66f4\u591a\u4fe1\u606f\uff0cffmprovisr \u662f\u4e00\u4e2a\u793e\u533a\u7ef4\u62a4\u7684 ffmpeg \u547d\u4ee4\u793a\u4f8b\u76ee\u5f55\uff0c\u6216\u8005\u53ef\u4ee5\u53c2\u8003\u5b98\u65b9\u6587\u6863\u3002<\/div>\n<\/div>\n<p>\u5f53FFmpeg\u6b63\u5728\u6d41\u5f0f\u4f20\u8f93\u89c6\u9891\u65f6\uff0c\u5b83\u4f1a\u6253\u5370\u65f6\u95f4\u7801\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<div class=\"secondary-code-label\" title=\"Output\">Output<\/div>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>frame= 127 fps= 25 q=-1.0 size= 405kB time=00:00:05.00 bitrate= 662.2kbits\/s speed=frame= 140 fps= 25 q=-1.0 size= 628kB time=00:00:05.52 bitrate= 931.0kbits\/s speed=frame= 153 fps= 25 q=-1.0 size= 866kB time=00:00:06.04 bitrate=1173.1kbits\/s speed=<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u8fd9\u662f\u6807\u51c6\u7684ffmpeg\u8f93\u51fa\u3002\u5982\u679c\u60a8\u6b63\u5728\u5c06\u89c6\u9891\u8f6c\u6362\u4e3a\u4e0d\u540c\u7684\u683c\u5f0f\uff0c\u8fd9\u4e9b\u4fe1\u606f\u53ef\u80fd\u6709\u52a9\u4e8e\u4e86\u89e3\u89c6\u9891\u91cd\u91c7\u6837\u7684\u6548\u7387\u5982\u4f55\uff0c\u4f46\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u60a8\u53ea\u60f3\u770b\u5230\u89c6\u9891\u662f\u5426\u4ee5\u4e00\u81f4\u7684\u65b9\u5f0f\u64ad\u653e\u3002\u4f7f\u7528\u8fd9\u4e2a\u793a\u4f8b\u89c6\u9891\uff0c\u60a8\u5e94\u8be5\u5f97\u5230\u786e\u5207\u7684fps=25\u589e\u91cf\u3002<\/p>\n<p>\u5f53FFmpeg\u6b63\u5728\u8fd0\u884c\u65f6\uff0c\u60a8\u53ef\u4ee5\u4ece\u89c6\u9891\u64ad\u653e\u5668\u8fde\u63a5\u5230\u60a8\u7684RTMP\u6d41\u3002\u5982\u679c\u60a8\u5728\u672c\u5730\u5b89\u88c5\u4e86VLC\u3001mpv\u6216\u5176\u4ed6\u5a92\u4f53\u64ad\u653e\u5668\uff0c\u60a8\u5e94\u8be5\u80fd\u591f\u901a\u8fc7\u5728\u5a92\u4f53\u64ad\u653e\u5668\u4e2d\u6253\u5f00URL rtmp:\/\/your_domain\/live\/stream\u6765\u67e5\u770b\u60a8\u7684\u6d41\u3002\u5728FFmpeg\u64ad\u653e\u5b8c\u89c6\u9891\u540e\uff0c\u60a8\u7684\u6d41\u5c06\u7ec8\u6b62\u3002\u5982\u679c\u60a8\u5e0c\u671b\u5b83\u65e0\u9650\u5faa\u73af\u64ad\u653e\uff0c\u60a8\u53ef\u4ee5\u5728FFmpeg\u547d\u4ee4\u7684\u5f00\u59cb\u5904\u6dfb\u52a0-stream_loop -1\u3002<\/p>\n<div class=\"post-conf-note\">\n<p class=\"post-conf-desc\">Note<\/p>\n<div>\u6ce8\u610f\uff1a\u60a8\u8fd8\u53ef\u4ee5\u76f4\u63a5\u4f7f\u7528FFmpeg\u8fdb\u884c\u76f4\u64ad\uff0c\u4f8b\u5982\u4f7f\u7528rtmp:\/\/localhost\/live\/stream\u5728FFmpeg\u547d\u4ee4\u4e2d\u66ff\u6362\u4e3artmps:\/\/live-api-s.facebook.com:443\/rtmp\/your-facebook-stream-key\uff0c\u4ece\u800c\u65e0\u9700\u4f7f\u7528Nginx-RTMP\u3002YouTube\u4f7f\u7528\u7c7b\u4f3crtmp:\/\/a.rtmp.youtube.com\/live2\u7684URL\u3002\u5176\u4ed6\u80fd\u591f\u63a5\u6536RTMP\u6d41\u7684\u6d41\u5a92\u4f53\u63d0\u4f9b\u5546\u5e94\u8be5\u884c\u4e3a\u7c7b\u4f3c\u3002<\/div>\n<\/div>\n<p>\u73b0\u5728\u4f60\u5df2\u7ecf\u5b66\u4f1a\u4e86\u5982\u4f55\u4ece\u547d\u4ee4\u884c\u6d41\u5f0f\u4f20\u8f93\u9759\u6001\u89c6\u9891\u6e90\uff0c\u63a5\u4e0b\u6765\u4f60\u5c06\u5b66\u4e60\u5982\u4f55\u4f7f\u7528\u53f0\u5f0f\u7535\u8111\u4e0a\u7684OBS\u4ece\u52a8\u6001\u6e90\u6d41\u5f0f\u4f20\u8f93\u89c6\u9891\u3002<\/p>\n<h2>\u7b2c\u4e09\u6b65 &#8211; \u901a\u8fc7OBS\u5c06\u89c6\u9891\u6d41\u5f0f\u4f20\u8f93\u5230\u60a8\u7684\u670d\u52a1\u5668\uff08\u53ef\u9009\uff09<\/h2>\n<p>\u5f53\u4f60\u6709\u4e00\u4e2a\u51c6\u5907\u597d\u7684\u89c6\u9891\u60f3\u8981\u64ad\u653e\u56de\u653e\u65f6\uff0c\u901a\u8fc7ffmpeg\u8fdb\u884c\u6d41\u5f0f\u4f20\u8f93\u975e\u5e38\u65b9\u4fbf\uff0c\u4f46\u662f\u76f4\u64ad\u53ef\u4ee5\u66f4\u52a0\u52a8\u6001\u3002\u76f4\u64ad\u6d41\u884c\u7684\u8f6f\u4ef6\u662fOBS\uff08Open Broadcaster Software\uff09\u2014\u2014\u5b83\u662f\u514d\u8d39\u3001\u5f00\u6e90\u4e14\u975e\u5e38\u5f3a\u5927\u7684\u5de5\u5177\u3002<\/p>\n<p>OBS \u662f\u4e00\u79cd\u684c\u9762\u5e94\u7528\u7a0b\u5e8f\uff0c\u5b83\u5c06\u4ece\u60a8\u7684\u672c\u5730\u8ba1\u7b97\u673a\u8fde\u63a5\u5230\u670d\u52a1\u5668\u3002<\/p>\n<p>\u5b89\u88c5OBS\u540e\uff0c\u914d\u7f6e\u5b83\u610f\u5473\u7740\u81ea\u5b9a\u4e49\u4f60\u5e0c\u671b\u6dfb\u52a0\u5230\u76f4\u64ad\u4e2d\u7684\u684c\u9762\u7a97\u53e3\u548c\u97f3\u9891\u6e90\uff0c\u7136\u540e\u6dfb\u52a0\u6d41\u5a92\u4f53\u670d\u52a1\u7684\u51ed\u636e\u3002\u672c\u6559\u7a0b\u4e0d\u6db5\u76d6\u4f60\u7684\u6d41\u5a92\u4f53\u914d\u7f6e\uff0c\u56e0\u4e3a\u8fd9\u662f\u4e2a\u4eba\u504f\u597d\u95ee\u9898\uff0c\u800c\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u4f60\u53ef\u4ee5\u901a\u8fc7\u4ec5\u76f4\u64ad\u6574\u4e2a\u684c\u9762\u6765\u83b7\u5f97\u4e00\u4e2a\u53ef\u7528\u7684\u6f14\u793a\u3002\u8981\u8bbe\u7f6e\u6d41\u5a92\u4f53\u670d\u52a1\u7684\u51ed\u636e\uff0c\u8bf7\u6253\u5f00OBS\u7684\u8bbe\u7f6e\u83dc\u5355\uff0c\u8f6c\u5230\u6d41\u5a92\u4f53\u9009\u9879\uff0c\u5e76\u8f93\u5165\u4ee5\u4e0b\u9009\u9879\uff1a<\/p>\n<pre class=\"post-pre\"><code>Streaming Service: Custom\r\nServer: rtmp:\/\/<mark>your_domain<\/mark>\/live\r\nPlay Path\/Stream Key: obs_stream\r\n<\/code><\/pre>\n<p>obs_stream \u662f\u4e00\u4e2a\u968f\u673a\u9009\u62e9\u7684\u8def\u5f84\uff0c\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u4f60\u7684\u89c6\u9891\u5c06\u53ef\u901a\u8fc7 rtmp:\/\/your_domain\/live\/obs_stream \u8fdb\u884c\u8bbf\u95ee\u3002\u4f60\u4e0d\u9700\u8981\u542f\u7528\u8eab\u4efd\u9a8c\u8bc1\uff0c\u4f46\u9700\u8981\u5728\u7b2c\u4e00\u6b65\u4e2d\u914d\u7f6e\u7684IP\u767d\u540d\u5355\u4e2d\u6dfb\u52a0\u4e00\u4e2a\u989d\u5916\u7684\u6761\u76ee\u3002<\/p>\n<p>\u56de\u5230\u670d\u52a1\u5668\u4e0a\uff0c\u6253\u5f00Nginx\u7684\u4e3b\u914d\u7f6e\u6587\u4ef6\/etc\/nginx\/nginx.conf\uff0c\u5e76\u4e3a\u60a8\u7684\u672c\u5730IP\u5730\u5740\u6dfb\u52a0\u4e00\u4e2a\u989d\u5916\u7684\u5141\u8bb8\u53d1\u5e03\u6761\u76ee\u3002\u5982\u679c\u60a8\u4e0d\u77e5\u9053\u60a8\u7684\u672c\u5730IP\u5730\u5740\uff0c\u6700\u597d\u53bb\u7c7b\u4f3c\u4e8e\u201cWhat&#8217;s my IP\u201d\u7684\u7f51\u7ad9\uff0c\u8fd9\u6837\u53ef\u4ee5\u544a\u8bc9\u60a8\u60a8\u7684\u8bbf\u95ee\u4f4d\u7f6e\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">sudo<\/span> <span class=\"token function\">nano<\/span> \/etc\/nginx\/nginx.conf<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<div>\/nginx\/nginx.conf\u6587\u4ef6<\/div>\n<pre class=\"post-pre\"><code>. . .\r\n                allow publish 127.0.0.1;\r\n                allow publish <mark>your_local_ip_address<\/mark>;\r\n                deny publish all;\r\n. . .\r\n<\/code><\/pre>\n<p>\u4fdd\u5b58\u5e76\u5173\u95ed\u6587\u4ef6\uff0c\u7136\u540e\u91cd\u65b0\u52a0\u8f7dNginx\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">sudo<\/span> systemctl reload nginx.service<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u4f60\u73b0\u5728\u5e94\u8be5\u80fd\u591f\u5173\u95edOBS\u7684\u8bbe\u7f6e\u83dc\u5355\uff0c\u5e76\u4ece\u4e3b\u754c\u9762\u70b9\u51fb\u5f00\u59cb\u6d41\u5f0f\u4f20\u8f93\uff01\u5c1d\u8bd5\u5728\u5a92\u4f53\u64ad\u653e\u5668\u4e2d\u4f7f\u7528\u4ee5\u524d\u7684\u65b9\u5f0f\u67e5\u770b\u4f60\u7684\u6d41\u5f0f\u4f20\u8f93\uff1artmp:\/\/your_domain\/live\/obs_stream\u3002\u73b0\u5728\u4f60\u5df2\u7ecf\u4e86\u89e3\u4e86\u89c6\u9891\u6d41\u5f0f\u4f20\u8f93\u7684\u57fa\u672c\u539f\u7406\uff0c\u53ef\u4ee5\u4e3a\u4f60\u7684\u670d\u52a1\u5668\u6dfb\u52a0\u4e00\u4e9b\u5176\u4ed6\u529f\u80fd\uff0c\u4f7f\u5176\u66f4\u9002\u7528\u4e8e\u751f\u4ea7\u73af\u5883\u3002<\/p>\n<h2>\u7b2c\u56db\u6b65-\u5c06\u76d1\u63a7\u6dfb\u52a0\u5230\u60a8\u7684\u914d\u7f6e\u4e2d\uff08\u53ef\u9009\uff09<\/h2>\n<p>\u73b0\u5728\u4f60\u5df2\u7ecf\u914d\u7f6e\u4e86Nginx\u6765\u4f7f\u7528Nginx-RTMP\u6a21\u5757\u8fdb\u884c\u89c6\u9891\u6d41\u4f20\u8f93\uff0c\u4e00\u4e2a\u5e38\u89c1\u7684\u4e0b\u4e00\u6b65\u662f\u542f\u7528RTMP\u7edf\u8ba1\u9875\u9762\u3002\u4e0e\u5c06\u66f4\u591a\u914d\u7f6e\u7ec6\u8282\u6dfb\u52a0\u5230\u4e3b\u8981\u7684nginx.conf\u6587\u4ef6\u4e2d\u4e0d\u540c\uff0cNginx\u5141\u8bb8\u4f60\u5728\u4e00\u4e2a\u540d\u4e3asites-available\/\u7684\u5b50\u76ee\u5f55\u4e2d\u7684\u4e2a\u522b\u6587\u4ef6\u4e2d\u6dfb\u52a0\u6bcf\u4e2a\u7ad9\u70b9\u7684\u914d\u7f6e\u3002\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u4f60\u5c06\u521b\u5efa\u4e00\u4e2a\u540d\u4e3artmp\u7684\u914d\u7f6e\u6587\u4ef6\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">sudo<\/span> <span class=\"token function\">nano<\/span> \/etc\/nginx\/sites-available\/rtmp<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u52a0\u5165\u4ee5\u4e0b\u5185\u5bb9\uff1a<\/p>\n<div>\/etc\/nginx\/sites-available\/rtmp\u7684\u4e2d\u6587\u672c\u5730\u5316\u7ffb\u8bd1\uff1a<\/div>\n<pre class=\"post-pre\"><code>server {\r\n    listen 8080;\r\n    server_name  localhost;\r\n\r\n    # rtmp stat\r\n    location \/stat {\r\n        rtmp_stat all;\r\n        rtmp_stat_stylesheet stat.xsl;\r\n    }\r\n    location \/stat.xsl {\r\n        root \/var\/www\/html\/rtmp;\r\n    }\r\n\r\n    # rtmp control\r\n    location \/control {\r\n        rtmp_control all;\r\n    }\r\n}\r\n<\/code><\/pre>\n<p>\u4fdd\u5b58\u5e76\u5173\u95ed\u6587\u4ef6\u3002\u6b64\u914d\u7f6e\u5757\u4e2d\u7684stat.xsl\u6587\u4ef6\u7528\u4e8e\u5728\u6d4f\u89c8\u5668\u4e2d\u6837\u5f0f\u5316\u548c\u663e\u793aRTMP\u7edf\u8ba1\u9875\u9762\u3002\u5b83\u662f\u7531\u4e4b\u524d\u5b89\u88c5\u7684libnginx-mod-rtmp\u5e93\u63d0\u4f9b\u7684\uff0c\u4f46\u9ed8\u8ba4\u60c5\u51b5\u4e0b\u662f\u538b\u7f29\u7684\uff0c\u6240\u4ee5\u60a8\u9700\u8981\u89e3\u538b\u7f29\u5e76\u5c06\u5176\u653e\u5728\/var\/www\/html\/rtmp\u76ee\u5f55\u4e2d\u4ee5\u5339\u914d\u793a\u4f8b\u914d\u7f6e\u3002\u8bf7\u6ce8\u610f\uff0c\u60a8\u53ef\u4ee5\u5728Nginx-RTMP\u6587\u6863\u4e2d\u627e\u5230\u6709\u5173\u4efb\u4f55\u8fd9\u4e9b\u9009\u9879\u7684\u5176\u4ed6\u4fe1\u606f\u3002<\/p>\n<p>\u521b\u5efa \/var\/www\/html\/rtmp \u76ee\u5f55\uff0c\u7136\u540e\u4f7f\u7528\u4ee5\u4e0b\u547d\u4ee4\u89e3\u538b stat.xsl.gz \u6587\u4ef6\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">sudo<\/span> <span class=\"token function\">mkdir<\/span> \/var\/www\/html\/rtmp<\/li>\n<li data-prefix=\"$\"><span class=\"token function\">sudo<\/span> <span class=\"token function\">cp<\/span> \/usr\/share\/doc\/libnginx-mod-rtmp\/examples\/stat.xsl \/var\/www\/html\/rtmp\/stat.xsl<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u6700\u540e\uff0c\u8981\u8bbf\u95ee\u60a8\u6dfb\u52a0\u7684\u7edf\u8ba1\u9875\u9762\uff0c\u60a8\u9700\u8981\u5728\u9632\u706b\u5899\u4e2d\u6253\u5f00\u53e6\u4e00\u4e2a\u7aef\u53e3\u3002\u5177\u4f53\u6765\u8bf4\uff0c\u76d1\u542c\u6307\u4ee4\u5df2\u914d\u7f6e\u4e3a\u7aef\u53e38080\uff0c\u56e0\u6b64\u60a8\u9700\u8981\u6dfb\u52a0\u4e00\u4e2a\u89c4\u5219\u4ee5\u8bbf\u95ee\u8be5\u7aef\u53e3\u4e0a\u7684Nginx\u3002\u7136\u800c\uff0c\u60a8\u53ef\u80fd\u4e0d\u5e0c\u671b\u4ed6\u4eba\u80fd\u591f\u8bbf\u95ee\u60a8\u7684\u7edf\u8ba1\u9875\u9762\uff0c\u6240\u4ee5\u6700\u597d\u53ea\u5141\u8bb8\u60a8\u81ea\u5df1\u7684IP\u5730\u5740\u8fdb\u884c\u8bbf\u95ee\u3002\u8fd0\u884c\u4ee5\u4e0b\u547d\u4ee4\uff1a<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">sudo<\/span> ufw allow from <mark>your_ip_address<\/mark> to any port http-alt<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u63a5\u4e0b\u6765\uff0c\u60a8\u9700\u8981\u6fc0\u6d3b\u8fd9\u4e2a\u65b0\u914d\u7f6e\u3002Nginx\u7684\u60ef\u4f8b\u662f\u4ecesites-available\/\u6587\u4ef6\u5939\u4e2d\u521b\u5efa\u7b26\u53f7\u94fe\u63a5\uff08\u7c7b\u4f3c\u4e8e\u5feb\u6377\u65b9\u5f0f\uff09\uff0c\u6307\u5411\u53e6\u4e00\u4e2a\u540d\u4e3asites-enabled\/\u7684\u6587\u4ef6\u5939\uff0c\u4ee5\u786e\u5b9a\u662f\u5426\u542f\u7528\u6216\u7981\u7528\u5b83\u4eec\u3002\u4e3a\u4e86\u6e05\u6670\u8d77\u89c1\uff0c\u8bf7\u4f7f\u7528\u5b8c\u6574\u8def\u5f84\u521b\u5efa\u8fd9\u4e2a\u94fe\u63a5\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">sudo<\/span> <span class=\"token function\">ln<\/span> <span class=\"token parameter variable\">-s<\/span> \/etc\/nginx\/sites-available\/rtmp \/etc\/nginx\/sites-enabled\/rtmp<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u73b0\u5728\u4f60\u53ef\u4ee5\u91cd\u65b0\u52a0\u8f7dNginx\u6765\u5904\u7406\u4f60\u7684\u66f4\u6539\uff1a<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">sudo<\/span> systemctl reload nginx.service<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u4f60\u73b0\u5728\u5e94\u8be5\u53ef\u4ee5\u5728\u6d4f\u89c8\u5668\u4e2d\u8f93\u5165http:\/\/\u4f60\u7684\u57df\u540d:8080\/stat \u6765\u67e5\u770bRTMP\u7edf\u8ba1\u9875\u9762\u3002\u5f53\u4f60\u6b63\u5728\u89c2\u770b\u6d41\u5a92\u4f53\u89c6\u9891\u65f6\uff0c\u8bbf\u95ee\u5e76\u5237\u65b0\u8be5\u9875\u9762\uff0c\u89c2\u5bdf\u6d41\u5a92\u4f53\u7edf\u8ba1\u6570\u636e\u5982\u4f55\u53d8\u5316\u3002<\/p>\n<p>\u73b0\u5728\u4f60\u5df2\u7ecf\u5b66\u4f1a\u4e86\u5982\u4f55\u76d1\u63a7\u4f60\u7684\u89c6\u9891\u6d41\u5e76\u5c06\u5176\u63a8\u9001\u7ed9\u7b2c\u4e09\u65b9\u63d0\u4f9b\u5546\u3002\u5728\u6700\u540e\u4e00\u90e8\u5206\uff0c\u4f60\u5c06\u5b66\u4e60\u5982\u4f55\u76f4\u63a5\u5728\u6d4f\u89c8\u5668\u4e2d\u63d0\u4f9b\u5b83\uff0c\u800c\u4e0d\u9700\u8981\u4f7f\u7528\u7b2c\u4e09\u65b9\u6d41\u5a92\u4f53\u5e73\u53f0\u6216\u72ec\u7acb\u7684\u5a92\u4f53\u64ad\u653e\u5668\u5e94\u7528\u7a0b\u5e8f\u3002<\/p>\n<h2>\u7b2c\u4e94\u6b65 &#8211; \u4e3a\u6d4f\u89c8\u5668\u521b\u5efa\u73b0\u4ee3\u6d41\uff08\u53ef\u9009\uff09<\/h2>\n<p>\u4f5c\u4e3a\u6700\u540e\u4e00\u6b65\uff0c\u60a8\u53ef\u80fd\u5e0c\u671b\u4e3a\u8f83\u65b0\u7684\u6d41\u5a92\u4f53\u534f\u8bae\u6dfb\u52a0\u652f\u6301\uff0c\u4f7f\u7528\u6237\u53ef\u4ee5\u76f4\u63a5\u901a\u8fc7Web\u6d4f\u89c8\u5668\u4ece\u60a8\u7684\u670d\u52a1\u5668\u6d41\u5f0f\u4f20\u8f93\u89c6\u9891\u3002\u6709\u4e24\u79cd\u534f\u8bae\u53ef\u7528\u4e8e\u521b\u5efa\u57fa\u4e8eHTTP\u7684\u89c6\u9891\u6d41\uff1a\u82f9\u679c\u7684HLS\u548cMPEG DASH\u3002\u5b83\u4eec\u90fd\u6709\u4f18\u70b9\u548c\u7f3a\u70b9\uff0c\u6240\u4ee5\u60a8\u53ef\u80fd\u5e0c\u671b\u540c\u65f6\u652f\u6301\u4e24\u79cd\u534f\u8bae\u3002<\/p>\n<p>Nginx-RTMP \u6a21\u5757\u540c\u65f6\u652f\u6301\u8fd9\u4e24\u4e2a\u6807\u51c6\u3002\u8981\u5728\u60a8\u7684\u670d\u52a1\u5668\u4e0a\u6dfb\u52a0 HLS \u548c DASH \u652f\u6301\uff0c\u60a8\u9700\u8981\u4fee\u6539 nginx.conf \u6587\u4ef6\u4e2d\u7684 rtmp \u5757\u3002\u4f7f\u7528 nano \u6216\u60a8\u559c\u6b22\u7684\u7f16\u8f91\u5668\u6253\u5f00 \/etc\/nginx\/nginx.conf\uff0c\u7136\u540e\u6dfb\u52a0\u4e0b\u9762\u7a81\u51fa\u663e\u793a\u7684\u6307\u4ee4\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">sudo<\/span> <span class=\"token function\">nano<\/span> \/etc\/nginx\/nginx.conf<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<div>\n<p>\/etc\/nginx\/nginx.conf \u53ef\u4ee5\u7ffb\u8bd1\u6210\uff1a<\/p>\n<p>&#8211; Nginx\u914d\u7f6e\u6587\u4ef6\u8def\u5f84\uff1a\/etc\/nginx\/nginx.conf<\/p>\n<\/div>\n<pre class=\"post-pre\"><code>. . .\r\nrtmp {\r\n        server {\r\n. . .\r\n                application live {\r\n                        live on;\r\n                        record off;\r\n                        <mark>hls on;<\/mark>\r\n                        <mark>hls_path \/var\/www\/html\/stream\/hls;<\/mark>\r\n                        <mark>hls_fragment 3;<\/mark>\r\n                        <mark>hls_playlist_length 60;<\/mark>\r\n\r\n                        <mark>dash on;<\/mark>\r\n                        <mark>dash_path \/var\/www\/html\/stream\/dash;<\/mark>\r\n                }\r\n        }\r\n}\r\n. . .\r\n<\/code><\/pre>\n<p>\u4fdd\u5b58\u5e76\u5173\u95ed\u6587\u4ef6\u3002\u63a5\u4e0b\u6765\uff0c\u5c06\u6b64\u5185\u5bb9\u6dfb\u52a0\u5230\u60a8\u7684sites-available\/rtmp\u6587\u4ef6\u7684\u5e95\u90e8\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">sudo<\/span> <span class=\"token function\">nano<\/span> \/etc\/nginx\/sites-available\/rtmp<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<div>\u4ee5\u4e0b\u662f\u539f\u6587\u7684\u4e2d\u6587\u8868\u8fbe\u65b9\u5f0f\uff1artmp\u7684\u5b58\u653e\u4f4d\u7f6e\u662f\u5728\/etc\/nginx\/sites-available\/rtmp\u3002<\/div>\n<pre class=\"post-pre\"><code>. . .\r\nserver {\r\n    listen 8088;\r\n\r\n    location \/ {\r\n        add_header Access-Control-Allow-Origin *;\r\n        root \/var\/www\/html\/stream;\r\n    }\r\n}\r\n\r\ntypes {\r\n    application\/dash+xml mpd;\r\n}\r\n<\/code><\/pre>\n<div class=\"post-conf-note\">\n<p class=\"post-conf-desc\">Note<\/p>\n<div>\u6ce8\u610f\uff1aAccess-Control-Allow-Origin * \u5934\u90e8\u542f\u7528\u4e86CORS\uff08\u8de8\u57df\u8d44\u6e90\u5171\u4eab\uff09\uff0c\u9ed8\u8ba4\u60c5\u51b5\u4e0b\u662f\u7981\u7528\u7684\u3002\u8fd9\u4e00\u8bbe\u7f6e\u544a\u8bc9\u4efb\u4f55\u4ece\u60a8\u7684\u670d\u52a1\u5668\u8bbf\u95ee\u6570\u636e\u7684\u7f51\u7edc\u6d4f\u89c8\u5668\uff0c\u8be5\u670d\u52a1\u5668\u53ef\u4ee5\u4ece\u5176\u4ed6\u7aef\u53e3\u6216\u57df\u52a0\u8f7d\u8d44\u6e90\u3002\u5bf9\u4e8e\u6700\u5927\u7a0b\u5ea6\u5730\u517c\u5bb9HLS\u548cDASH\u5ba2\u6237\u7aef\u4ee5\u53ca\u8bb8\u591a\u5176\u4ed6\u7f51\u7edc\u90e8\u7f72\uff0cCORS\u662f\u5fc5\u9700\u7684\uff0c\u5e76\u4e14\u662f\u8bb8\u591a\u5176\u4ed6\u7f51\u7edc\u90e8\u7f72\u4e2d\u7684\u5e38\u89c1\u914d\u7f6e\u5f00\u5173\u3002<\/div>\n<\/div>\n<p>\u4fdd\u5b58\u5e76\u5173\u95ed\u6587\u4ef6\u3002\u8bf7\u6ce8\u610f\uff0c\u8fd9\u91cc\u4f7f\u7528\u7684\u662f8088\u7aef\u53e3\uff0c\u8fd9\u662f\u4e3a\u4e86\u907f\u514d\u4e0e\u60a8\u53ef\u80fd\u5728\u7aef\u53e380\u6216443\u4e0a\u8fd0\u884c\u7684\u4efb\u4f55\u670d\u52a1\u51b2\u7a81\uff0c\u800c\u5728\u672c\u6559\u7a0b\u4e2d\u505a\u51fa\u7684\u53e6\u4e00\u4e2a\u4efb\u610f\u9009\u62e9\u3002\u76ee\u524d\u60a8\u9700\u8981\u5728\u9632\u706b\u5899\u4e2d\u6253\u5f00\u8be5\u7aef\u53e3\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">sudo<\/span> ufw allow <span class=\"token number\">8088<\/span>\/tcp<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u6700\u540e\uff0c\u5728\u60a8\u7684\u7f51\u7ad9\u6839\u76ee\u5f55\u4e2d\u521b\u5efa\u4e00\u4e2a\u6d41\u76ee\u5f55\uff0c\u4ee5\u4e0e\u914d\u7f6e\u5757\u76f8\u5339\u914d\uff0c\u8fd9\u6837Nginx\u5c31\u80fd\u591f\u751f\u6210HLS\u548cDASH\u6240\u9700\u7684\u6587\u4ef6\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">sudo<\/span> <span class=\"token function\">mkdir<\/span> \/var\/www\/html\/stream<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u8bf7\u518d\u6b21\u91cd\u542fNginx\u3002<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<ol>\n<li data-prefix=\"$\"><span class=\"token function\">sudo<\/span> systemctl reload nginx<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"post-pre\"><code><\/code><\/pre>\n<p>\u73b0\u5728\u60a8\u5e94\u8be5\u53ef\u4ee5\u5728http:\/\/your_domain:8088\/hls\/stream.m3u8\u83b7\u5f97\u4e00\u4e2aHLS\u6d41\uff0c\u5e76\u5728http:\/\/your_domain:8088\/dash\/stream.mpd\u83b7\u5f97\u4e00\u4e2aDASH\u6d41\u3002\u8fd9\u4e9b\u7aef\u70b9\u4f1a\u5728\u60a8\u7684RTMP\u89c6\u9891\u6e90\u4e4b\u4e0a\u751f\u6210\u4efb\u4f55\u5fc5\u8981\u7684\u5143\u6570\u636e\uff0c\u4ee5\u652f\u6301\u73b0\u4ee3API\u3002<\/p>\n<h2>\u7ed3\u8bba<\/h2>\n<p>\u5728\u6b64\u6559\u7a0b\u4e2d\u4f7f\u7528\u7684\u914d\u7f6e\u9009\u9879\u90fd\u5728Nginx RTMP Wiki\u9875\u9762\u6709\u6240\u8bb0\u8f7d\u3002\u901a\u5e38\uff0cNginx\u6a21\u5757\u5171\u4eab\u5e38\u89c1\u8bed\u6cd5\uff0c\u5e76\u63d0\u4f9b\u4e00\u5957\u975e\u5e38\u5e9e\u5927\u7684\u914d\u7f6e\u9009\u9879\uff0c\u60a8\u53ef\u4ee5\u67e5\u770b\u5b83\u4eec\u7684\u6587\u6863\u4ee5\u4ece\u8fd9\u91cc\u66f4\u6539\u4efb\u4f55\u8bbe\u7f6e\u3002<\/p>\n<p>\u51e0\u4e4e\u6240\u6709\u7684\u4e92\u8054\u7f51\u89c6\u9891\u6d41\u5a92\u4f53\u90fd\u662f\u57fa\u4e8eRTMP\u3001HLS\u548cDASH\u5b9e\u73b0\u7684\uff0c\u901a\u8fc7\u672c\u6559\u7a0b\u4e2d\u6240\u63a2\u7d22\u7684\u65b9\u6cd5\uff0c\u60a8\u53ef\u4ee5\u901a\u8fc7\u5176\u4ed6\u5e7f\u64ad\u670d\u52a1\u63d0\u4f9b\u60a8\u7684\u6d41\u5a92\u4f53\uff0c\u6216\u4ee5\u60a8\u9009\u62e9\u7684\u4efb\u4f55\u5176\u4ed6\u65b9\u5f0f\u516c\u5f00\u5b83\u3002\u63a5\u4e0b\u6765\uff0c\u60a8\u53ef\u4ee5\u9605\u8bfb\u5982\u4f55\u5c06Nginx\u914d\u7f6e\u4e3a\u53cd\u5411\u4ee3\u7406\uff0c\u4ee5\u4fbf\u5c06\u8fd9\u4e9b\u4e0d\u540c\u7684\u89c6\u9891\u7ec8\u7aef\u4f5c\u4e3a\u5b50\u57df\u540d\u63d0\u4f9b\u7ed9\u7528\u6237\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u5f15\u8a00 \u6d41\u5a92\u4f53\u89c6\u9891\u6709\u8bb8\u591a\u5e94\u7528\u573a\u666f\u3002\u50cfTwitch\u8fd9\u6837\u7684\u670d\u52a1\u63d0\u4f9b\u5546\u5728\u5904\u7406\u7f51\u7edc\u53d1\u73b0\u548c\u793e\u533a\u7ba1\u7406\u65b9\u9762\u975e\u5e38\u53d7\u6b22\u8fce\uff0c\u800c\u50cfOB [&hellip;]<\/p>\n","protected":false},"author":6,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-50708","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u5982\u4f55\u5728Ubuntu 22.04\u4e0a\u4f7f\u7528Nginx-RTMP\u5efa\u7acb\u89c6\u9891\u6d41\u670d\u52a1\u5668\u3002 - Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/zh\/blog\/\u5982\u4f55\u5728ubuntu-22-04\u4e0a\u4f7f\u7528nginx-rtmp\u5efa\u7acb\u89c6\u9891\u6d41\u670d\u52a1\u5668\u3002\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u5982\u4f55\u5728Ubuntu 22.04\u4e0a\u4f7f\u7528Nginx-RTMP\u5efa\u7acb\u89c6\u9891\u6d41\u670d\u52a1\u5668\u3002\" \/>\n<meta property=\"og:description\" content=\"\u5f15\u8a00 \u6d41\u5a92\u4f53\u89c6\u9891\u6709\u8bb8\u591a\u5e94\u7528\u573a\u666f\u3002\u50cfTwitch\u8fd9\u6837\u7684\u670d\u52a1\u63d0\u4f9b\u5546\u5728\u5904\u7406\u7f51\u7edc\u53d1\u73b0\u548c\u793e\u533a\u7ba1\u7406\u65b9\u9762\u975e\u5e38\u53d7\u6b22\u8fce\uff0c\u800c\u50cfOB [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/\u5982\u4f55\u5728ubuntu-22-04\u4e0a\u4f7f\u7528nginx-rtmp\u5efa\u7acb\u89c6\u9891\u6d41\u670d\u52a1\u5668\u3002\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2022-07-13T01:21:37+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-01-15T05:16:25+00:00\" \/>\n<meta name=\"author\" content=\"\u6587, \u7fd4\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u6587, \u7fd4\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%a6%82%e4%bd%95%e5%9c%a8ubuntu-22-04%e4%b8%8a%e4%bd%bf%e7%94%a8nginx-rtmp%e5%bb%ba%e7%ab%8b%e8%a7%86%e9%a2%91%e6%b5%81%e6%9c%8d%e5%8a%a1%e5%99%a8%e3%80%82\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%a6%82%e4%bd%95%e5%9c%a8ubuntu-22-04%e4%b8%8a%e4%bd%bf%e7%94%a8nginx-rtmp%e5%bb%ba%e7%ab%8b%e8%a7%86%e9%a2%91%e6%b5%81%e6%9c%8d%e5%8a%a1%e5%99%a8%e3%80%82\/\",\"name\":\"\u5982\u4f55\u5728Ubuntu 22.04\u4e0a\u4f7f\u7528Nginx-RTMP\u5efa\u7acb\u89c6\u9891\u6d41\u670d\u52a1\u5668\u3002 - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2022-07-13T01:21:37+00:00\",\"dateModified\":\"2024-01-15T05:16:25+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/64d5cc7727fffbff2f9a2a8da1de3e5c\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%a6%82%e4%bd%95%e5%9c%a8ubuntu-22-04%e4%b8%8a%e4%bd%bf%e7%94%a8nginx-rtmp%e5%bb%ba%e7%ab%8b%e8%a7%86%e9%a2%91%e6%b5%81%e6%9c%8d%e5%8a%a1%e5%99%a8%e3%80%82\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%a6%82%e4%bd%95%e5%9c%a8ubuntu-22-04%e4%b8%8a%e4%bd%bf%e7%94%a8nginx-rtmp%e5%bb%ba%e7%ab%8b%e8%a7%86%e9%a2%91%e6%b5%81%e6%9c%8d%e5%8a%a1%e5%99%a8%e3%80%82\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%a6%82%e4%bd%95%e5%9c%a8ubuntu-22-04%e4%b8%8a%e4%bd%bf%e7%94%a8nginx-rtmp%e5%bb%ba%e7%ab%8b%e8%a7%86%e9%a2%91%e6%b5%81%e6%9c%8d%e5%8a%a1%e5%99%a8%e3%80%82\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u5982\u4f55\u5728Ubuntu 22.04\u4e0a\u4f7f\u7528Nginx-RTMP\u5efa\u7acb\u89c6\u9891\u6d41\u670d\u52a1\u5668\u3002\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/64d5cc7727fffbff2f9a2a8da1de3e5c\",\"name\":\"\u6587, \u7fd4\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/920c3d673e0bccacc98e5e6b7149bb3c22edd8d39cb753e5d7d7e471498118a1?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/920c3d673e0bccacc98e5e6b7149bb3c22edd8d39cb753e5d7d7e471498118a1?s=96&d=mm&r=g\",\"caption\":\"\u6587, \u7fd4\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/wenxiang\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e5%a6%82%e4%bd%95%e5%9c%a8ubuntu-22-04%e4%b8%8a%e4%bd%bf%e7%94%a8nginx-rtmp%e5%bb%ba%e7%ab%8b%e8%a7%86%e9%a2%91%e6%b5%81%e6%9c%8d%e5%8a%a1%e5%99%a8%e3%80%82\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u5982\u4f55\u5728Ubuntu 22.04\u4e0a\u4f7f\u7528Nginx-RTMP\u5efa\u7acb\u89c6\u9891\u6d41\u670d\u52a1\u5668\u3002 - Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/zh\/blog\/\u5982\u4f55\u5728ubuntu-22-04\u4e0a\u4f7f\u7528nginx-rtmp\u5efa\u7acb\u89c6\u9891\u6d41\u670d\u52a1\u5668\u3002\/","og_locale":"zh_CN","og_type":"article","og_title":"\u5982\u4f55\u5728Ubuntu 22.04\u4e0a\u4f7f\u7528Nginx-RTMP\u5efa\u7acb\u89c6\u9891\u6d41\u670d\u52a1\u5668\u3002","og_description":"\u5f15\u8a00 \u6d41\u5a92\u4f53\u89c6\u9891\u6709\u8bb8\u591a\u5e94\u7528\u573a\u666f\u3002\u50cfTwitch\u8fd9\u6837\u7684\u670d\u52a1\u63d0\u4f9b\u5546\u5728\u5904\u7406\u7f51\u7edc\u53d1\u73b0\u548c\u793e\u533a\u7ba1\u7406\u65b9\u9762\u975e\u5e38\u53d7\u6b22\u8fce\uff0c\u800c\u50cfOB [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/\u5982\u4f55\u5728ubuntu-22-04\u4e0a\u4f7f\u7528nginx-rtmp\u5efa\u7acb\u89c6\u9891\u6d41\u670d\u52a1\u5668\u3002\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2022-07-13T01:21:37+00:00","article_modified_time":"2024-01-15T05:16:25+00:00","author":"\u6587, \u7fd4","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u6587, \u7fd4","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"5 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%a6%82%e4%bd%95%e5%9c%a8ubuntu-22-04%e4%b8%8a%e4%bd%bf%e7%94%a8nginx-rtmp%e5%bb%ba%e7%ab%8b%e8%a7%86%e9%a2%91%e6%b5%81%e6%9c%8d%e5%8a%a1%e5%99%a8%e3%80%82\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%a6%82%e4%bd%95%e5%9c%a8ubuntu-22-04%e4%b8%8a%e4%bd%bf%e7%94%a8nginx-rtmp%e5%bb%ba%e7%ab%8b%e8%a7%86%e9%a2%91%e6%b5%81%e6%9c%8d%e5%8a%a1%e5%99%a8%e3%80%82\/","name":"\u5982\u4f55\u5728Ubuntu 22.04\u4e0a\u4f7f\u7528Nginx-RTMP\u5efa\u7acb\u89c6\u9891\u6d41\u670d\u52a1\u5668\u3002 - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2022-07-13T01:21:37+00:00","dateModified":"2024-01-15T05:16:25+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/64d5cc7727fffbff2f9a2a8da1de3e5c"},"breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%a6%82%e4%bd%95%e5%9c%a8ubuntu-22-04%e4%b8%8a%e4%bd%bf%e7%94%a8nginx-rtmp%e5%bb%ba%e7%ab%8b%e8%a7%86%e9%a2%91%e6%b5%81%e6%9c%8d%e5%8a%a1%e5%99%a8%e3%80%82\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/%e5%a6%82%e4%bd%95%e5%9c%a8ubuntu-22-04%e4%b8%8a%e4%bd%bf%e7%94%a8nginx-rtmp%e5%bb%ba%e7%ab%8b%e8%a7%86%e9%a2%91%e6%b5%81%e6%9c%8d%e5%8a%a1%e5%99%a8%e3%80%82\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%a6%82%e4%bd%95%e5%9c%a8ubuntu-22-04%e4%b8%8a%e4%bd%bf%e7%94%a8nginx-rtmp%e5%bb%ba%e7%ab%8b%e8%a7%86%e9%a2%91%e6%b5%81%e6%9c%8d%e5%8a%a1%e5%99%a8%e3%80%82\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"\u5982\u4f55\u5728Ubuntu 22.04\u4e0a\u4f7f\u7528Nginx-RTMP\u5efa\u7acb\u89c6\u9891\u6d41\u670d\u52a1\u5668\u3002"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website","url":"https:\/\/www.silicloud.com\/zh\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/64d5cc7727fffbff2f9a2a8da1de3e5c","name":"\u6587, \u7fd4","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/920c3d673e0bccacc98e5e6b7149bb3c22edd8d39cb753e5d7d7e471498118a1?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/920c3d673e0bccacc98e5e6b7149bb3c22edd8d39cb753e5d7d7e471498118a1?s=96&d=mm&r=g","caption":"\u6587, \u7fd4"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/wenxiang\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e5%a6%82%e4%bd%95%e5%9c%a8ubuntu-22-04%e4%b8%8a%e4%bd%bf%e7%94%a8nginx-rtmp%e5%bb%ba%e7%ab%8b%e8%a7%86%e9%a2%91%e6%b5%81%e6%9c%8d%e5%8a%a1%e5%99%a8%e3%80%82\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/50708","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=50708"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/50708\/revisions"}],"predecessor-version":[{"id":59802,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/50708\/revisions\/59802"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=50708"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=50708"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=50708"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}