blog/2021/09/20/Docker搭建RTMP服务器/index.html

594 lines
24 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="zh">
<head>
<!-- 元数据 -->
<meta charset="utf-8">
<link rel="icon" href="https://2-cdn.ianxia.com/images/avatar/common.png">
<title>Docker搭建RTMP服务器 | Code The World</title>
<meta name="author" content="Bigsk" />
<meta http-equiv="Cache-Control" content="no-transform" />
<meta http-equiv="Cache-Control" content="no-siteapp" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="robots" content="index,follow" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
<meta name="format-detection" content="telphone=no, email=no" />
<meta name="keywords" content="技术" />
<meta name="description" content="正好在解决相关的问题,网上大部分人使用的是alfg&#x2F;nginx-rtmp这个包很好自带FLV流转HLS但是我的场景内不需要转换而且这个包没使用GPU编码而且这个包默认不使用GPU编码HLS流自动转换浪费了服务器大量的CPU性能所以我自己Docker Hub找到了这样一个包tiangolo&#x2F;nginx-rtmp只有纯净的RTMP+NGINX服务器的实现几乎没有">
<meta property="og:type" content="article">
<meta property="og:title" content="Docker搭建RTMP服务器">
<meta property="og:url" content="https://blog.ianxia.com/2021/09/20/Docker%E6%90%AD%E5%BB%BARTMP%E6%9C%8D%E5%8A%A1%E5%99%A8/index.html">
<meta property="og:site_name" content="Code The World">
<meta property="og:description" content="正好在解决相关的问题,网上大部分人使用的是alfg&#x2F;nginx-rtmp这个包很好自带FLV流转HLS但是我的场景内不需要转换而且这个包没使用GPU编码而且这个包默认不使用GPU编码HLS流自动转换浪费了服务器大量的CPU性能所以我自己Docker Hub找到了这样一个包tiangolo&#x2F;nginx-rtmp只有纯净的RTMP+NGINX服务器的实现几乎没有">
<meta property="og:locale">
<meta property="article:published_time" content="2021-09-19T16:00:00.000Z">
<meta property="article:modified_time" content="2024-11-25T06:33:31.643Z">
<meta property="article:author" content="Bigsk">
<meta property="article:tag" content="技术">
<meta name="twitter:card" content="summary">
<!-- 站点验证相关 -->
<!-- 样式表文件 -->
<link rel="stylesheet" id="kratos-css" href="/css/kratosr.min.css" media="all"></script>
<link rel="stylesheet" id="darkmode-css" href="/css/kr-color-dark.min.css" media="(prefers-color-scheme: dark)"></script>
<script src="/js/kr-dark.min.js"></script>
<link rel="stylesheet" id="highlight-css" href="/css/highlight/night-eighties.min.css" media="all"></script>
<link rel="stylesheet" id="fontawe-css" href="/vendors/font-awesome@4.7.0/css/font-awesome.min.css" media="all"></script>
<link rel="stylesheet" id="nprogress-css" href="/vendors/nprogress@0.2.0/nprogress.css" media="all"></script>
<link rel="stylesheet" href="/vendors/@fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.css"></script>
<!-- 不得不预先加载的一些JS文件 -->
<script src="/vendors/jquery@3.6.0/dist/jquery.min.js"></script>
<script src="/vendors/qrcode_js@1.0.0/qrcode.min.js"></script>
<style>
</style>
<meta name="generator" content="Hexo 6.3.0"></head>
<body class="custom-background">
<div id="kratos-wrapper">
<div id="kratos-page">
<div id="kratos-header">
<header id="kratos-desktop-topnav" class="kratos-topnav">
<div class="container">
<div class="nav-header">
<nav id="kratos-menu-wrap">
<ul id="kratos-primary-menu" class="sf-menu">
<li>
<a target="_blank" rel="noopener" href="https://www.ianxia.com">
<i class="fa fa-home"></i>
首页
</a>
</li>
<li>
<a target="_blank" rel="noopener" href="https://demo.ianxia.com">
<i class="fa fa-bug"></i>
DEMO
</a>
</li>
<li>
<a target="_blank" rel="noopener" href="https://adsb.ianxia.com">
<i class="fa fa-plane"></i>
ADS-B
</a>
</li>
<li>
<a target="_blank" rel="noopener" href="https://tools.ianxia.com">
<i class="fa fa-wrench"></i>
小工具
</a>
</li>
<li>
<a href="/">
<i class="fa fa-cubes"></i>
博客
</a>
</li>
<li>
<a href="/links">
<i class="fa fa-link"></i>
友情链接
</a>
</li>
</ul>
</nav>
</div>
</div>
</header>
<header id="kratos-mobile-topnav" class="kratos-topnav">
<div class="container">
<div class="color-logo"><a href="/">Code The World</a></div>
<div class="nav-toggle">
<a class="kratos-nav-toggle js-kratos-nav-toggle">
<i></i>
</a>
</div>
</div>
</header>
</div>
<div class="kratos-start kratos-hero-2">
<!-- <div class="kratos-overlay"></div> -->
<div class="kratos-cover kratos-cover-2 text-center">
<div class="desc desc2 animate-box">
<a href="/">
<h2>Code The World</h2> <br />
<span>Codice est quasi poem a.</span>
</a>
</div>
</div>
</div>
<div id="kratos-blog-post">
<div class="container">
<div id="main" class="row">
<section class="col-md-8">
<article itemscope itemtype="https://schema.org/Article">
<link itemprop="mainEntityOfPage" href="https://blog.ianxia.com/2021/09/20/Docker%E6%90%AD%E5%BB%BARTMP%E6%9C%8D%E5%8A%A1%E5%99%A8/">
<div class="kratos-hentry kratos-post-inner clearfix">
<header class="kratos-entry-header">
<h1 class="kratos-entry-title text-center" itemprop="name headline">Docker搭建RTMP服务器</h1>
<ul class="kratos-post-meta text-center">
<li><time datetime="2021-09-19T16:00:00.000Z" itemprop="datePublished"><i class="fa fa-calendar"></i> 2021-09-20</time></li>
<li itemprop="author" itemscope itemtype="https://schema.org/Person">
<i class="fa fa-user"></i> 作者 <span itemprop="name">Bigsk</span>
</li>
<li>
<i class="fa fa-edit"></i>
435
</li>
</ul>
</header>
<div class="kratos-post-content">
<div id="expire-alert" class="alert alert-warning hidden" role="alert">
<div class="icon"><i class="fa fa-warning"></i></div>
<div class="text"><p>本文最后编辑于 <time datetime="1732516411643"></time> 前,其中的内容可能需要更新。</p></div>
</div>
<hr />
<div itemprop="articleBody"><p>正好在解决相关的问题,网上大部分人使用的是<a target="_blank" rel="noopener" href="https://hub.docker.com/r/alfg/nginx-rtmp">alfg&#x2F;nginx-rtmp</a>这个包很好自带FLV流转HLS但是我的场景内不需要转换而且这个包没使用GPU编码而且这个包默认不使用GPU编码HLS流自动转换浪费了服务器大量的CPU性能所以我自己Docker Hub找到了这样一个包<a target="_blank" rel="noopener" href="https://hub.docker.com/r/tiangolo/nginx-rtmp">tiangolo&#x2F;nginx-rtmp</a>只有纯净的RTMP+NGINX服务器的实现几乎没有额外的CPU开销性能非常好可以直接使用rtmp协议再次把流拉下来观看。<br>拉取包:</p>
<pre><code>sudo docker pull tiangolo/nginx-rtmp
</code></pre>
<p>运行容器:</p>
<pre><code>sudo docker run -d -p 1935:1935 --name nginx-rtmp tiangolo/nginx-rtmp
</code></pre>
<p>然后只需要把流推送到 </p>
<blockquote>
<p>rtmp:&#x2F;&#x2F;IP_ADDRESS&#x2F;live&#x2F;STREAM_NAME</p>
</blockquote>
<p>这个地址就可以了</p>
</div>
</div>
<div class="kratos-copyright text-center clearfix">
<h5 itemprop="copyrightNotice">本作品采用 <a rel="license nofollow" target="_blank" href="https://creativecommons.org/licenses/by-sa/4.0/">知识共享署名-相同方式共享 4.0 国际许可协议</a> 进行许可</h5>
</div>
<footer class="kratos-entry-footer clearfix">
<div class="post-like-donate text-center clearfix" id="post-like-donate">
<a class="share" href="javascript:;"><i class="fa fa-share-alt"></i> 分享</a>
<div class="share-wrap" style="display: none;">
<div class="share-group">
<a href="javascript:;" class="share-plain qq" onclick="share('qq');" rel="nofollow">
<div class="icon-wrap">
<i class="fa fa-qq"></i>
</div>
</a>
<a href="javascript:;" class="share-plain qzone" onclick="share('qzone');" rel="nofollow">
<div class="icon-wrap">
<i class="fa fa-star"></i>
</div>
</a>
<a href="javascript:;" class="share-plain weixin pop style-plain" rel="nofollow">
<div class="icon-wrap">
<i class="fa fa-weixin"></i>
</div>
<div class="share-int">
<div class="qrcode" id="wechat-qr"></div>
<p>打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮</p>
</div>
</a>
<a href="javascript:;" class="share-plain weibo" onclick="share('weibo');" rel="nofollow">
<div class="icon-wrap">
<i class="fa fa-weibo"></i>
</div>
</a>
<a href="javascript:;" class="share-plain facebook style-plain" onclick="share('facebook');" rel="nofollow">
<div class="icon-wrap">
<i class="fa fa-facebook"></i>
</div>
</a>
<a href="javascript:;" class="share-plain twitter style-plain" onclick="share('twitter');" rel="nofollow">
<div class="icon-wrap">
<i class="fa fa-twitter"></i>
</div>
</a>
</div>
<script type="text/javascript">
$(()=>{
new QRCode("wechat-qr", {
text: "https://blog.ianxia.com/2021/09/20/Docker%E6%90%AD%E5%BB%BARTMP%E6%9C%8D%E5%8A%A1%E5%99%A8/",
width: 150,
height: 150,
correctLevel : QRCode.CorrectLevel.H
});
});
function share(dest) {
const qqBase = "https://connect.qq.com/widget/shareqq/index.html?";
const weiboBase = "https://service.weibo.com/share/share.php?";
const qzoneBase = "https://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?";
const facebookBase = "https://www.facebook.com/sharer/sharer.php?";
const twitterBase = "https://twitter.com/intent/tweet?";
const hostUrl = "https://blog.ianxia.com/2021/09/20/Docker%E6%90%AD%E5%BB%BARTMP%E6%9C%8D%E5%8A%A1%E5%99%A8/";
const title = "「Docker搭建RTMP服务器」";
const excerpt = `正好在解决相关的问题,网上大部分人使用的是alfg&#x2F;nginx-rtmp这个包很好自带FLV流转HLS但是我的场景内不需要转换而且这个包没使用GPU编码而且这个包默认不使用GPU编码HLS流自动转换浪费了服务器大...`;
let _URL;
switch (dest) {
case "qq" : _URL = qqBase+"url="+hostUrl+"&title="+title+"&desc=&summary="+excerpt+"&site=cxpy"; break;
case "weibo" : _URL = weiboBase+"url="+hostUrl+"&title="+title+excerpt; break;
case "qzone" : _URL = qzoneBase+"url="+hostUrl+"&title="+title+"&desc=&summary="+excerpt+"&site=cxpy"; break;
case "facebook" : _URL = facebookBase+"u="+hostUrl; break;
case "twitter" : _URL = twitterBase+"text="+title+excerpt+"&url="+hostUrl; break;
}
window.open(_URL);
};
</script>
</div>
</div>
<div class="footer-tag clearfix">
<div class="pull-left">
<i class="fa fa-tags"></i>
<a class="tag-none-link" href="/tags/%E6%8A%80%E6%9C%AF/" rel="tag">技术</a>
</div>
<div class="pull-date">
<time datetime="2024-11-25T06:33:31.643Z" itemprop="dateModified">最后编辑2024-11-25</time>
</div>
</div>
</footer>
</div>
<nav class="navigation post-navigation clearfix" role="navigation">
<div class="nav-next clearfix">
<a title=" ESXI直通显卡" href="/2021/12/09/ESXI直通显卡/">下一篇 &gt;</a>
</div>
</nav>
</article>
</section>
<section id="kratos-widget-area" class="col-md-4 hidden-xs hidden-sm">
<!-- 文章和页面根据splitter来分割没有的话就从头开始设置为sticky -->
<aside id="krw-about" class="widget widget-kratos-about clearfix">
<div class="photo-background"></div>
<div class="photo-wrapper clearfix">
<div class="photo-wrapper-tip text-center">
<img class="about-photo" src="https://2-cdn.ianxia.com/images/avatar/common.png" loading="lazy" decoding="auto" />
</div>
</div>
<div class="textwidget">
<p class="text-center">Codice est quasi poem a.</p>
</div>
<div class="site-meta">
<a class="meta-item" href="/archives/">
<span class="title">
文章
</span>
<span class="count">
25
</span>
</a>
<a class="meta-item" href="/categories/">
<span class="title">
分类
</span>
<span class="count">
3
</span>
</a>
<a class="meta-item" href="/tags/">
<span class="title">
标签
</span>
<span class="count">
3
</span>
</a>
</div>
</aside>
<div class="sticky-area">
<aside id="krw-categories" class="widget widget-kratos-categories clearfix">
<h4 class="widget-title"><i class="fa fa-folder"></i>分类目录</h4>
<ul class="category-list"><li class="category-list-item"><a class="category-list-link" href="/categories/%E6%8A%80%E6%9C%AF/">技术</a><span class="category-list-count">16</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E6%91%84%E5%BD%B1/">摄影</a><span class="category-list-count">7</span></li><li class="category-list-item"><a class="category-list-link" href="/categories/%E8%B5%84%E6%BA%90/">资源</a><span class="category-list-count">2</span></li></ul>
</aside>
<aside id="krw-tags" class="widget widget-kratos-tags clearfix">
<h4 class="widget-title"><i class="fa fa-tags"></i>标签聚合</h4>
<div class="tag-clouds">
<a href="/tags/%E6%8A%80%E6%9C%AF/" style="font-size: 0.8em;">技术</a> <a href="/tags/%E6%91%84%E5%BD%B1/" style="font-size: 0.7em;">摄影</a> <a href="/tags/%E8%B5%84%E6%BA%90/" style="font-size: 0.6em;">资源</a>
</div>
</aside>
<aside id="krw-posts" class="widget widget-kratos-posts">
<h4 class="widget-title"><i class="fa fa-file"></i>最新文章</h4>
<div class="tab-content">
<ul class="list-group">
<a class="list-group-item" href="/2024/11/25/%E5%88%A9%E7%94%A8Linux%E5%B0%8F%E4%B8%BB%E6%9C%BA%E5%92%8CSDR%E6%90%AD%E5%BB%BAAPRS-iGate/"><i class="fa fa-book"></i> 利用Linux小主机和SDR搭建APRS iGate</a>
<a class="list-group-item" href="/2024/10/30/Python%E8%AF%81%E4%B9%A6%E9%93%BE%E5%87%BA%E9%97%AE%E9%A2%98%E5%AF%BC%E8%87%B4%E7%9A%84%E6%A8%A1%E5%9D%97%E5%85%A8%E9%83%A8%E6%8A%A5%E9%94%99/"><i class="fa fa-book"></i> Python证书链出问题导致的模块全部报错</a>
<a class="list-group-item" href="/2024/10/09/Mac%E5%AE%89%E8%A3%85%E8%BD%AF%E4%BB%B6%E6%97%B6%E6%8F%90%E7%A4%BA%E5%B7%B2%E6%8D%9F%E5%9D%8F%E7%9A%84%E8%A7%A3%E5%86%B3%E5%8A%9E%E6%B3%95/"><i class="fa fa-book"></i> Mac安装软件时提示已损坏的解决办法</a>
<a class="list-group-item" href="/2023/07/18/%E6%91%84%E5%BD%B1%E4%BD%9C%E5%93%81-Field/"><i class="fa fa-book"></i> 摄影作品Field</a>
<a class="list-group-item" href="/2023/02/25/Python-%E4%B8%AD%E5%85%B3%E4%BA%8E-round-%E5%87%BD%E6%95%B0%E7%9A%84%E5%B0%8F%E5%9D%91/"><i class="fa fa-book"></i> Python 中关于 round 函数的小坑</a>
</ul>
</div>
</aside>
</div>
</section>
</div>
</div>
</div>
<footer>
<div id="footer" >
<div class="container">
<div class="row">
<div class="col-md-6 col-md-offset-3 footer-list text-center">
<ul class="kratos-social-icons">
<!-- Keep for compatibility -->
<!-- New links -->
</ul>
<ul class="kratos-copyright">
<div>
<li>&copy; 2024 Bigsk 版权所有.</li><br>
<li>本站已运行<span id="span_dt">Loading...</span></li><br>
<li>本站支持 IPv6 访问</li><br>
</div>
<!--
<div>
</div>
<div>
</div>
-->
<div><br><br></div>
</ul>
</div>
</div>
</div>
<div class="kr-tool text-center">
<div class="tool">
<div class="box search-box">
<a href="/search/">
<span class="fa fa-search"></span>
</a>
</div>
<div class="box theme-box" id="darkmode-switch">
<span class="fa fa-adjust"></span>
</div>
</div>
<div class="box gotop-box">
<span class="fa fa-chevron-up"></span>
</div>
</div>
</div>
</footer>
</div>
</div>
<script defer src="/vendors/bootstrap@3.3.4/dist/js/bootstrap.min.js"></script>
<script defer src="/vendors/nprogress@0.2.0/nprogress.js"></script>
<script>
if (!window.kr) {
window.kr = {};
}
window.kr.notMobile = (!(navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i)));
window.kr.siteRoot = "/";
</script>
<script async src="/js/candy.min.js"></script>
<script defer src="/vendors/@fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.js"></script>
<script defer src="/js/kratosr.min.js"></script>
<script defer src="/js/pjax.min.js"></script>
<!-- Extra support for third-party plguins -->
</body>
</html>