Skip to content

Commit 883b7cf

Browse files
committed
update
1 parent ea45c32 commit 883b7cf

7 files changed

+121
-3
lines changed

_data/navigation.yml

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ header:
5454

5555
- titles:
5656
# @start locale config
57-
en : &EN archive
57+
en : &EN Archive
5858
en-GB : *EN
5959
en-US : *EN
6060
en-CA : *EN
@@ -138,6 +138,16 @@ docs-zh:
138138
url: /docs/zh/config-exec
139139
- title: 系统配置
140140
url: /docs/zh/config-system
141+
- title: 常见问题
142+
children:
143+
- title: 如何支持H265编码
144+
url: /docs/zh/qa-h265
145+
- title: 如何降低直播延时
146+
url: /docs/zh/qa-lowlatency
147+
- title: 如何降低HLS直播延时
148+
url: /docs/zh/qa-hls-lowlatency
149+
- title: 如何支持拉取rtsp源
150+
url: /docs/zh/qa-rtsp
141151
# - title: 部署指南
142152
# children:
143153
# - title: 部署rtmp

docs/zh/1.2-milestones.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,14 @@ key: docs-1.2-milestones-zh
1919
- [x] **进程间回源:** 进程间相互拉流,解决了原生nginx-rtmp-module模块多进程拉流失败的问题。
2020
- [x] **集群化功能:** 服务器间推拉流功能(http-flv、rtmp协议)。
2121
- [x] **html5网页播放器:** [pingos-player](https://github.com/pingostack/pingos-player)播放器将持续兼容各浏览器平台,以及多种直播协议。
22+
23+
### 为什么选择PingOS
24+
25+
- 支持完整的http协议栈
26+
27+
PingOS基于Nginx服务器开发,会随着Nginx服务器的更新迭代,在未来任何时候都能及时更新到最新的Ngix版本。例如:使用PingOS服务器的hls、hls+、http-flv、http-ts、后台页面等功能可以轻松实现http https以及 http1.0 http1.1等http特性,换而言之只要是基于http协议的流媒体协议都能复用Nginx服务器的所有http能力。
28+
{:.info}
29+
30+
- 集群功能
31+
32+
{:.info}

docs/zh/3.0-qa-h265.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
---
2+
title: 如何支持H265编码
3+
permalink: /docs/zh/qa-h265
4+
key: docs-qa-h265
5+
---
6+
7+
### 如何支持H265编码?
8+
PingOS支持H265编码直播和H265编码的mpegts、flv文件录制功能。rtmp和flv默认使用12(十六进制 0x0c)代表h265编码。同时推流工具也要配合修改,使用12做为h265的。
9+
你可以通过HLS、HLS+、http-flv、rtmp、http-ts协议播放h265编码的流,其中http-flv和rtmp需要播放器做特殊改进才能支持,一般桌面版播放器都能直接支持H265编码的HLS和HLS+直播流。
10+
你也可以使用其他的codecid来作为H265编码类型的扩展。配置方式如下:
11+
[https://pingos.io/docs/zh/config-core#hevc_codecid](https://pingos.io/docs/zh/config-core#hevc_codecid)
12+
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200809183836600.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ltcGluZ28=,size_16,color_FFFFFF,t_70)
13+
14+
以ffmpeg推流工具为例,如果你需要能够推送支持h265编码的rtmp流,你需要下载特殊的ffmpeg版本,ffmpeg源码连接:[https://github.com/im-pingo/CDN-Union_H265](https://github.com/im-pingo/CDN-Union_H265)
15+
ffmpeg编译过程可参考ffmpeg官网文档:[https://trac.ffmpeg.org/wiki/CompilationGuide/Centos](https://trac.ffmpeg.org/wiki/CompilationGuide/Centos)
16+
17+
ffmpeg编译成功后使用ffmpeg推流:
18+
```bash
19+
ffmpeg -i input.mp4 -vcodec h265 -acodec aac -f flv rtmp://ip/app/name
20+
```

docs/zh/3.1-qa-lowlatency.md

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
---
2+
title: 如何降低直播延时
3+
permalink: /docs/zh/qa-lowlatency
4+
key: docs-qa-lowlatency
5+
---
6+
7+
### 如何降低直播延时?
8+
在直播过程中,推流端、服务器端、播放器、网络环境等因素都会影响延时。
9+
对于每个端上的优化措施可以参考以下参数:
10+
#### 优化推流端
11+
* h264编码一定不要开启B帧, 解码时B 帧依赖于前后的帧,会增加延迟。
12+
* h264 编码使用 H.264 baseline profile,减少编码时消耗的时间。
13+
* 音频尽量使用AAC-LC Codec,这样会减少编码时消耗的时间。
14+
* 适当调整关键帧间隔(GOP大小),因为前文说过服务器是以GOP个整数倍进行缓存的,如果GOP过大服务器端的缓存也会变大,建议设置为2s(但是同等码率下GOP越小清晰度也会越低,所以建议大家视场景而定,推荐不小于1s)。
15+
16+
**以OBS推流工具为例,要想尽量减少延时,可以参考如下配置:**
17+
18+
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200809184926255.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ltcGluZ28=,size_16,color_FFFFFF,t_70)
19+
20+
21+
#### 优化PingOS服务器配置
22+
对于服务器端来说,可优化的点并不多,无非是对缓存大小进行优化。直接以PingOS服务器为例:
23+
配置项 | 优化项 | 讲解 | 配置示例
24+
--- | --- | --- | ---
25+
cache_time | 缓存大小 | 以时间为单位的配置项,缓存大于等于整数倍个gop长度的数据,理论上这个值越小延时会越低。如果你不关心播放端的首屏显示的速度,可以将cache_time设置为0,这样服务器就不会缓存任何数据,实时将内容下发。 | cache_time 0s;
26+
low_latency | 开关 on/off | 低延时选项,cache_time大于0时有效,开启后服务器缓存中如果有新的关键帧,则跳过P帧,从新的关键帧处开始分发 | low_latency on
27+
send_all | 开关 on/off | cache_time大于0时有效,第一次向播放端发送数据时,是否一次性将缓存数据全部下发。如果一次将缓存数据全部下发,则相当于将服务器缓存积累的延时抛给了播放端,这样的话,即使设置了low_latency也没用,因为缓存中已经无数据可跳过。将这个配置设置成false,并且和low_latency配合使用可一定程度上降低延时。 | send_all
28+
29+
**服务器配置示例:**
30+
```nginx
31+
application live {
32+
live on;
33+
cache_time 2s;
34+
low_latency on;
35+
send_all off;
36+
}
37+
```
38+
#### 优化播放器端
39+
播放端的优化因播放器而定,这里以flv.js播放器为例,图中stashInitialSize的值就是播放器缓存大小,可按需调整。
40+
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200809185407618.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ltcGluZ28=,size_16,color_FFFFFF,t_70)

docs/zh/3.2-qa-hls-lowlatency.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
---
2+
title: 如何降低HLS直播延时
3+
permalink: /docs/zh/qa-hls-lowlatency
4+
key: docs-qa-hls-lowlatency
5+
---
6+
7+
### 如何降低HLS直播延时?
8+
关于HLS的延时优化,除了在前文`2. 如何降低直播延时?`中提到的操作外,服务器端主要是通过降低切片大小来实现。
9+
这里主要介绍三个配置:
10+
```
11+
hls_fragment 1300ms;
12+
hls_max_fragment 1800ms;
13+
hls_playlist_length 3900ms;
14+
```
15+
- `hls_fragment``hls_max_fragment`配置一起决定了一个ts切片文件的时长,ts文件的时长会小于`hls_max_fragment`,大于等于`hls_fragment`。所以适当调整这两个参数能够使ts切片更实时,这里建议hls_max_fragment大于等于2000ms,并且小于2 * hls_fragment。
16+
- `hls_playlist_length`设置成`hls_fragment`的三倍即可。

docs/zh/3.4-qa-rtsp.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
---
2+
title: 如何支持拉取rtsp源
3+
permalink: /docs/zh/qa-rtsp
4+
key: docs-qa-rtsp
5+
---
6+
7+
### 如何支持拉取rtsp源?
8+
目前PingOS还不支持直接拉取rtsp源,但是可以利用`exec_pull`配置配合ffmpeg工具拉取rtsp源。
9+
`exec_pull`配置的作用是允许在第一次有人请求播放某一条直播流的时候PingOS会执行一条`Shell`命令,你可以在这条`Shell`命令里执行ffmpeg拉流转推到PingOS的操作。
10+
例如添加下面的配置:
11+
```nginx
12+
exec_pull bash -c "ffmepg -i rtsp://$parg_ip/$parg_uri -vcodec copy -acodec aac -f flv rtmp://127.0.0.1/live/$name";
13+
```
14+
当你向PingOS请求播放http-flv流的时候,PingOS就会触发ffmpeg向rtsp源拉流并且转推到本地。
15+
举个栗子:
16+
播放http-flv流:http://127.0.0.1/flv/cam01?ip=192.168.1.5&uri=/h264/channel1
17+
ffmpeg则会向拉取rtsp流:rtsp://192.168.1.5/h264/channel1,并且将内容推送给PingOS服务器。
18+
**关于配置中使用到的$name等变量的含义,可以参考PingOS的[官方文档](https://pingos.io/docs/zh/config-var)**

landing.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,21 @@ header:
66
background: rgba(57, 97, 120, .8)
77

88
excerpt: >
9-
这是一个功能丰富的开源媒体服务器项目,支持多种媒体协议,支持集群化部署以及丰富的业务开发接口。
9+
This is a feature-rich open source media server project that supports a variety of media protocols, clustered deployments, and rich business development interfaces
1010
1111
permalink: /index.html
1212

1313
article_header:
1414
actions:
15-
- text: Quick Start
15+
- text: Getting Started
1616
type: error
1717
url: /docs/zh/quick-start
1818
- text: Demo
1919
type: outline-theme-dark
2020
url: /pingos-player
21+
- text: '<i class="fab fa-github"></i> GitHub'
22+
type: outline-theme-dark
23+
url: https://github.com/pingostack
2124
height: 100vh
2225
theme: dark
2326
background_color: "#367a9a"

0 commit comments

Comments
 (0)