jancd/qiniu-developer-faq huggingface dataset:
#  iOS 接入基础知识

最近更新时间: 2017-08-16 14:53:45

## Q：IOS 接入需要哪些准备？

  1. 设备要求：iPhone 4s 及以上
  2. 系统要求：iOS 7 及以上
  3. 已注册七牛账号
  4. 一个已经备案的域名
  5. 通过官网申请并已开通直播权限

  

## Q：iOS 的 SDK 在哪里下载？

  * iOS 推流 SDK：<https://github.com/pili-engineering/PLMediaStreamingKit>
  * iOS 播放 SDK：<https://github.com/pili-engineering/PLPlayerKit>

  

## Q：iOS 的 sdk 文档在哪？

  * iOS 推流 SDK 的文档：<https://github.com/pili-engineering/PLMediaStreamingKit/wiki>
  * iOS 播放 SDK 的文档：<https://github.com/pili-engineering/PLPlayerKit/wiki>

  

## Q：当前 iOS 支持的功能特性有哪些？

  * 支持硬件编码
  * 多码率可选
  * 支持 H.264 视频编码
  * 支持 AAC 音频编码
  * 支持前后摄像头
  * 支持自动对焦
  * 支持手动调整对焦点
  * 支持闪光灯操作
  * 支持多分辨率编码
  * 支持 HeaderDoc 文档
  * 支持构造带安全授权凭证的 RTMP 推流地址
  * 支持 ARMv7, ARM64, i386, x86_64 架构
  * 支持 RTMP 协议直播推流
  * 支持音视频配置分离
  * 支持推流时可变码率
  * 提供发送 buffer
  * 支持 Zoom 操作
  * 支持音频 Mute 操作
  * 支持视频 Orientation 操作
  * 支持自定义 DNS 解析
  * 支持弱网丢帧策略
  * 支持纯音频或纯视频推流
  * 支持后台音频推流
  * 支持自定义滤镜功能
  * 内置水印功能
  * 内置美颜功能
  * 支持返听功能
  * 支持内置音乐播放器混音功能
  * 支持内置音效功能
  * 内置动态帧率功能
  * 内置自适应码率功能
  * 内置断线及网络切换自动重连功能
  * 支持预览与直播流分别镜像
  * 支持自定义音视频处理
  * 提供两种层次的 API，灵活选择，高可定制性与简单两不误

  

## Q：iOS 接入注意事项有哪些？

从 v1.1.6 开始，在使用 SDK 之前，需要保证 PLStreamingEnv 被正确初始化 ，否则在初始化核心类
PLStreamingSession 的阶段会抛出异常。

`[PLStreamingEnv initEnv];`

以上内容是否对您有帮助？

* __
* __
* __
* __
* __

文档反馈 (如有产品使用问题，请[ 提交工单](https://support.qiniu.com/tickets/category))

提交
#  关于直播流数据的保存

最近更新时间: 2017-08-16 11:15:39

## Q：创建的流会被自动删除么？

Hub 有一个配置项 ExpireDay（过期时间），该值对所有的 Hub 默认为 30，可选范围为 7-365。过期时间后自动删除

  

## Q：过期时间的计算方式是什么？

当 Hub 配置有 ExpireDay的 时候：

  * 该 Hub 下新建的流（Stream）在 ExpireDay 天内有效。
  * 如果在 ExpireDay 天内没有动作，则会删除
  * 如果在 ExpireDay 天内有动作，则会在动作后 ExpireDay 天删除
  * 新建的流（Stream）相关的历史推流信息（Segment）和切片索引信息，会在 ExpireDay 天后删除

  

## Q：直播生成的文件会永久保存吗？

不会，会在存储过期时间后被自动删除。

  

## Q：存储过期时间在哪里设置？范围是多少？

存储过期时间在控制台的直播空间设置中设置，范围是 15-90天

  

## Q：如何保存直播的音视频内容？

#### 方法一：

通过七牛管理后台：直播流管理==>直播录制

#### 方法二：

服务端有个 stream.segment 方法，可以通过这个方法，获取每次直播的上下线时间。

然后从中选取需要转存的部分，指定该部分的 start 和 end 传入 saveas 对应的参数中。

调用服务端的saveas接口转存回放，转存后才是永久保存的，否则会在后台设置的过期时间后删除。

  

## Q：回看如何指定视频格式？

#### 方法一：

通过七牛管理后台：直播流管理==>选定格式

#### 方法二：

SDK 中 format 传空，则转为 m3u8 格式，指定为 mp4 则转为 mp4

  

## Q：保存操作转存视频的时间大概多少？

m3u8 是立即生成，mp4是异步转码，mp4 一般 1小时的视频可以在 3-5分钟转完，具体看服务端的负载情况。

  

## Q：如何提高转存效率？

指定 pipline，这个是转码队列，可以先去七牛后台的多媒体处理建一个转码队列，然后把这个转码队列的名字填在 pipeline 这个地方。指定
pipeline 是私有队列，相应的转码速度也会快点。不指定默认就是公有队列，转码速度比较慢且不可控。

  

## Q：保存回放内容转码是否差生费用？

A：会产生转码费用，可以看官网的计费介绍。

以上内容是否对您有帮助？

* __
* __
* __
* __
* __

文档反馈 (如有产品使用问题，请[ 提交工单](https://support.qiniu.com/tickets/category))

提交
#  关于播放域名的时间戳防盗链

最近更新时间: 2018-10-11 18:21:17

> 播放域名的时间戳防盗链
>
>   * 域名级别的时间戳防盗链，支持 RTMP播放，HLS，HDL 三类播放域名进行设置
>   * 采用指定过期时间的播放鉴权
>   * 作用是避免播放 url 被盗链
>

### Q1: 在 portal 上哪里可以设置播放域名的时间戳防盗链？

portal 上有三个地方可以进行设置。

1）在`新建直播空间`操作的第三步`高级设置`可以对播放域名进行统一设置：  
![高级设置-时间戳防盗链1](https://dn-odum9helk.qbox.me/Fr_5vpxFg2RJpOsFro8fLEF0OLtm)

![高级设置-时间戳防盗链2](https://dn-odum9helk.qbox.me/Fhgqf0L2bQz-K5It4odPAWq-GqhS)

2）`域名管理`下，进行`绑定域名`时，绑定的域名类型为RTMP 播放、HLS 播放、HDL 播放时，会要求设置时间戳防盗链：  
![绑定域名-时间戳防盗链](https://dn-odum9helk.qbox.me/Fu6jxWV0Acb_W4Srx50qtvSqimtP)

3）在`域名管理`>`域名详情`页面，点击到播放域名的`管理`页面，可进行设置：  
![域名管理-时间戳防盗链1](https://dn-odum9helk.qbox.me/Fpslx6BOb0qi0Wrs4DgJynoB-E-_)

![域名管理-时间戳防盗链2](https://dn-odum9helk.qbox.me/Flt1eAuFIphM0Cm3msPN5UvPbpdR)

### Q2: 时间戳防盗链的配置参数怎么怎么填写？

域名的时间戳防盗链，采用指定过期时间戳的播放鉴权。根据 url 中的过期时间参数(t=xxx)，再结合设置的`密钥`，使用 md5
算法生成相应鉴权签名(sign=xxx)。

设置参数分为以下：

  * 开关：是否对该域名开启时间戳防盗链
  * 主副密钥：用于生成相应鉴权签名的 key

### Q3: 设置后怎么查看相应的带播放签名的播放地址 ？

在`直播流管理`>`实时直播`页面下，可以看到带时间戳防盗链播放鉴权的地址。播放地址鉴权有效时间是1分钟，每隔55秒会自动刷新一次，也可以手动进行刷新鉴权。  
![带播放鉴权的播放地址](https://dn-odum9helk.qbox.me/FsuxzWtkYqBeWhg_TyHCNhZjGsX-)

### Q4: 时间戳防盗链的播放鉴权，显示'定制化播放鉴权，请联系技术支持'是什么意思 ？

有的客户会设置播放鉴权，是通过定制化手段（非 protal 设置）设置的。这类防盗链配置不遵循 portal
上的标准配置，所以进行变更设置或者获取播放鉴权，需要通过工单联系技术支持。

### Q5: 时间戳防盗链的详细算法是怎样的,我在哪里可以了解到 ？

[七牛直播云播放鉴权-时间戳防盗链](https://developer.qiniu.com/pili/kb/1735/seven-cattle-live-
broadcast-authentication-of-cloud-a-timestamp-hotlinking-prevention)

以上内容是否对您有帮助？

* __
* __
* __
* __
* __

文档反馈 (如有产品使用问题，请[ 提交工单](https://support.qiniu.com/tickets/category))

提交
#  Android 接入基础知识

最近更新时间: 2017-08-21 17:31:01

## Q：Android 接入需要哪些准备？

  1. 设备要求：搭载 Android 系统的设备
  2. 系统要求：Android 4.0.3(API 15) 及其以上
  3. 已注册七牛账号
  4. 一个已经备案的域名
  5. 通过官网申请并已开通直播权限

  

## Q：Android 的 sdk 在哪里下载？

  * 安卓推流 SDK：<https://github.com/pili-engineering/PLDroidMediaStreaming>
  * 安卓播放 SDK：<https://github.com/pili-engineering/PLDroidPlayer>

  

## Q：Android 的 sdk 文档在哪？

  * 安卓推流 SDK 的文档：<https://github.com/pili-engineering/PLDroidMediaStreaming/wiki>
  * 安卓播放 SDK 的文档：<https://github.com/pili-engineering/PLDroidPlayer/wiki>

  

## Q：Android 连麦/推流 SDK 包体的说明（针对用户减少APP体积的需求）？

关于 Android 连麦/推流 SDK 中的 so 对应的功能如下，  
开发者可以选择性的使用，删除不需要的 so，用以减小APP的体积大小：

推流网络模块：libpldroid_streaming_core.so  
推流视频软编：libpldroid_streaming_h264_encoder.so  
推流音频软编：libpldroid_streaming_aac_encoder.so  
内置美颜模块：libpldroid_mmprocessing.so  
连麦模块：libpldroid_rtc_streaming.so

比如，开发者只需要使用 连麦SDK，则不需要其他没有用到的 so，从而可以减少体积。

## Q：当前 Android 支持的功能特性有哪些？

  * 支持 H.264 和 AAC 软编（推荐）
  * 支持 H.264 和 AAC 硬编
  * 软编支持 Android Min API 15（Android 4.0.3）及其以上版本
  * 硬编支持 Android Min API 18（Android 4.3）及其以上版本
  * 支持构造带安全授权凭证的 RTMP 推流地址
  * 支持 RTMP 封包及推流
  * 支持 RTMP 推流自适应网络质量动态切换码率或自定义策略
  * 支持内置美颜，以及可动态调节美颜效果
  * 支持数据源回调接口，可自定义 Filter (滤镜) 特效处理
  * 支持前后置摄像头，以及动态切换
  * 支持自动对焦
  * 支持手动对焦
  * 支持 Encoding Mirror 设置
  * 支持 Zoom 操作
  * 支持 Mute/Unmute
  * 支持闪光灯操作
  * 支持纯音频推流，以及后台运行
  * 支持截帧功能
  * 支持动态更改 Encoding Orientation
  * 支持动态切换横竖屏
  * 支持蓝牙麦克风
  * 支持 ARM, ARMv7a, ARM64v8a, X86 主流芯片体系架构

  

## Q：Android 接入注意事项有哪些？

为了保证正常使用 SDK ，请在 proguard-rules.pro 文件中添加以下代码：

`-keep class com.qiniu.pili.droid.streaming.** { *; }`

以上内容是否对您有帮助？

* __
* __
* __
* __
* __

文档反馈 (如有产品使用问题，请[ 提交工单](https://support.qiniu.com/tickets/category))

提交
#  直播封面落是否永久保存

最近更新时间: 2017-08-16 10:10:57

# 非永久保存

登录后 <https://portal.qiniu.com/> ，在直播空间设置里面开启

![](https://dn-
odum9helk.qbox.me/FkMsdXHFjIOov0W-CmyYROB07nSA?imageView/0/h/250)

访问格式：可以通过`http://<domain>/<hub>/<title>.jpg?<时间戳>`的形式进行访问  
domain为刚才创建的域名  
hub为直播空间名  
title为流名称  
时间戳由于资源访问走 CDN 加速，会存在 CDN 缓存，加上 ?<时间戳> 可以穿透 CDN 直接回源拉取到最新的资源

# 永久保存的

请求参考下面： <https://developer.qiniu.com/pili/api/2520/save-the-live-capture>

这个是每次请求才会去生成直播封面的这个是主动请求

存储的对应的空间是直播对应的存储空间

![](https://dn-odum9helk.qbox.me/e37d3df46a5e02ae270072710aecd130)

以上内容是否对您有帮助？

* __
* __
* __
* __
* __

文档反馈 (如有产品使用问题，请[ 提交工单](https://support.qiniu.com/tickets/category))

提交
#  直播云服务端SDK状态码

最近更新时间: 2017-08-16 10:19:41

# 服务端状态码

# 创建流

状态码 | 错误信息  
---|---  
614 | `{"error":"stream already exists"}` 流已经存在  
  
# 查询流

状态码 | 错误信息  
---|---  
612 | `{"error":"stream not found"}` 流不存在  
  
# 流列表

状态码 | 错误信息  
---|---  
612 | `{"error":"hub not found"}` hub不存在  
  
# 禁播流

状态码 | 错误信息  
---|---  
612 | `{"error":"stream not found"}` 流不存在  
  
# 直播实时信息

状态码 | 错误信息  
---|---  
619 | `{"error":"no live"}` 不在直播  
619 | `{"error":"no data"}` 没有数据  
612 | `{"error":"stream not found"}` 流不存在  
  
# 保存直播回放

状态码 | 错误信息  
---|---  
404 | `{"error":"not found"}` 这个应该为 612  
619 | `{"error":"no data"}` 没有数据  
612 | `{"error":"no such file or directory"}`  
  
# 回放预览

状态码 | 错误信息  
---|---  
619 | `{"error":"no data"}` 流不存在也是no data  
  
# 直播历史记录

状态码 | 错误信息  
---|---  
612 | `{"error":"stream not found"}` hub 不存在也返回了stream not found (虽然hub下的流也是不存在的)  
  
# 修改流转码配置

状态码 | 错误信息  
---|---  
400 | `{"error":"invalid stream key"}` 只允许修改原始流,包含@的不行  
400 | `{"error":"invalid args"}` 该转码配置不存在  
612 | `{"error":"hub not found"}` hub不存在  
612 | `{"error":"stream not found"}` 流不存在  
  
# 推流信息

状态码 | 错误信息  
---|---  
612 | `{"error":"hub not found"}` hub不存在  
  
# 转推信息

状态码 | 错误信息  
---|---  
612 | `{"error":"hub not found"}` hub不存在  
  
# 推流错误信息

状态码 | 错误信息  
---|---  
612 | `{"error":"hub not found"}` hub不存在  
  
# 转推错误信息

状态码 | 错误信息  
---|---  
612 | `{"error":"hub not found"}` hub不存在  
  
以上内容是否对您有帮助？

* __
* __
* __
* __
* __

文档反馈 (如有产品使用问题，请[ 提交工单](https://support.qiniu.com/tickets/category))

提交
#  直播域名的https配置

最近更新时间: 2018-12-05 16:02:51

## Q：直播有很多域名，哪些域名可以支持https访问？

http协议播放的直播域名，例如 `hls域名` `flv域名`  

## Q：hls 直播域名和 flv 直播域名如何实现https？

如果要对 hls 和 flv 的直播域名进行 `https支持` 的配置。如上图，进入直播空间后，点击 `域名管理` ，上传自有证书即可配置  
  
![](https://dn-odum9helk.qbox.me/Fqi3UJAV3al8Yl-
aqHuqJM6Tkfrl?imageView2/2/h/300)  

## Q：点播域名如何实现https？

`点播域名 = 直播回看域名`，这个域名配置 https 可以参考
[HTTPS配置](https://developer.qiniu.com/fusion/manual/4952/https-configuration)  

## Q：截图域名如何实现https？

a.**如果是调用接口生成的截图,可以按照如下步骤来操作**  
1.登录 [创建域名](https://portal.qiniu.com/domain/create) 自行添加一个 https 的融合 CDN
域名并绑定直播空间对应的存储空间  
2.将新绑定的 https 域名替换掉原来 url 中的 http 域名即可（步骤和回放视频的域名一样，也可以和回放视频的域名使用同一个域名）

b.**如果您是登录控制后开启的实时截图，可以按照如下步骤来操作**  
1.登录 [创建域名](https://portal.qiniu.com/domain/create) 自行添加一个 https 的融合 CDN
域名，这次不不绑定直播空间对应的存储空间，而是将回源域名设置为 snapshot-src.pilidns.com  
2.将新绑定的 https 域名替换掉原来 url 中的 http 域名即可

以上内容是否对您有帮助？

* __
* __
* __
* __
* __

文档反馈 (如有产品使用问题，请[ 提交工单](https://support.qiniu.com/tickets/category))

提交
#  iOS PLPlayer 问题

最近更新时间: 2017-08-16 19:11:14

2.4.1的播放器如果出现暂停或者设置播放界面大小无效，可以先通过下面的方法临时解决下，后续的版本中会对该问题进行修复，请见谅。

1.调用 pause无效

[_player pause];

[_player.avplayer pause];

2.设置播放界面大小没有效果

UIView *view = [_player.playerView valueForKey:@"avPlayerView"];

view.frame = frame;

2.4.2的播放器ffmpeg在纯音频下seekto会卡主然后stop

2.4.2播放flv视频的时候，暂停视频，然后退到后台，然后回来，然后切换成全屏（改变了view的frame），会出现黑屏的情况，
在黑屏的情况下，重新播放就又好了。这个问题应该是渲染的问题。

以上内容是否对您有帮助？

* __
* __
* __
* __
* __

文档反馈 (如有产品使用问题，请[ 提交工单](https://support.qiniu.com/tickets/category))

提交
#  直播空间设置点播域名加速

最近更新时间: 2017-08-16 11:44:15

进入[直播平台](https://portal.qiniu.com/hub)，选择 直播的应用 -> 直播空间设置

![](https://dn-odum9helk.qbox.me/FiLkky8QtEDOCdiKh8Jq97fLk_P3)

找到点播域名

![](https://dn-odum9helk.qbox.me/FmyFB2p8ihBekLbMCS73Tgxb9Rgi)

选择为默认点播分发

![](https://dn-odum9helk.qbox.me/FjpVMQruXgxVRf7IEfCy2_J6zMJh)

域名处理完再做下cname操作

![](https://dn-odum9helk.qbox.me/FoXZonjT6mwF_luzzVUHvqUjmUUp)

查看更多 [绑定域名和域名解析](https://developer.qiniu.com/fusion/manual/1367) 问题

以上内容是否对您有帮助？

* __
* __
* __
* __
* __

文档反馈 (如有产品使用问题，请[ 提交工单](https://support.qiniu.com/tickets/category))

提交
#  直播回源鉴权

最近更新时间: 2017-09-20 16:28:29

# 配置推拉流回源鉴权

  

## 一.说明

在收到推流和拉流的请求之后，七牛可以向客户业务服务器发出指定回调，客户根据回调的信息返回给特定的http状态码和json。七牛根据返回的状态码和特定字段的值决定是否应该同意推流和拉流的请求。

  

## 二.使用

### 此配置需要提工单，工单内容如下：

  1. 需要回源鉴权的域名。必须属于提工单的该账号。例如：pili-publish.xxxx.qiniuts.com，pili-live-rtmp.xxxx.qiniuts.com

  2. 回调类型共三种。从中选择一个：json，form， GETquery.

  3. 接受回调的接口地址。(需要带上scheme `http://`或`https://` (支持[魔法变量](https://developer.qiniu.com/kodo/manual/1235/vars#1)))

  4. 超时时间。与客户业务服务器http超过多久算作超时，范围1~10秒。

  5. 指定七牛发起的请求携带的参数及值，默认无

  6. 鉴权成功时返回给七牛的http状态码

  7. 鉴权失败时返回给七牛的http状态码

  8. 返回给七牛的json中需要解析的特定字段，不填则为通配

  9. 鉴权成功时返回给七牛json中特定字段的值

  10. 鉴权失败时返回给七牛json中特定字段的值

  11. 重试次数，0～5次，默认不重试

  12. 重试间隔，1～5秒

以上内容是否对您有帮助？

* __
* __
* __
* __
* __

文档反馈 (如有产品使用问题，请[ 提交工单](https://support.qiniu.com/tickets/category))

提交
#  Android 推流-更换推流地址、码率、帧率、分辨率等

最近更新时间: 2022-03-14 21:03:53

Q：如何在预览时，等待服务器返回推流地址后，或者其它场景，设置推流地址、码率、帧率、分辨率等参数。

A：目前推流SDK大多数推流参数不支持动态修改，所以修改推流地址需要在非推流状态时进行

    
    
    // 停止推流（如果处于推流状态）
    mMediaStreamingManager.stopStreaming();
    
    // 修改配置
    mProfile.setPublishUrl("newURL");
    
    // 设置配置
    mMediaStreamingManager.setStreamingProfile(mProfile);
    
    // 继续推流
    mMediaStreamingManager.startStreaming();
    

  * 停止推流会触发 onStateChanged SHUTDOWN 状态的回调，可在收到该状态后，重新开始推流

更改码率，分辨率等同理。

以上内容是否对您有帮助？

* __
* __
* __
* __
* __

文档反馈 (如有产品使用问题，请[ 提交工单](https://support.qiniu.com/tickets/category))

提交
#  Android 播放-如何修正旋转方向

最近更新时间: 2017-08-21 17:30:36

Q：在其它播放器中，播放内容旋转方向正常，使用 Android 播放 SDK 播放视频旋转不对，如何调整

![](https://dn-odum9helk.qbox.me/FhdGwD4iITYK-ujzf3wUGWupSn5g)

A：首先可以用 ffprobe 等工具查看一下视频信息， 查看上图旋转方向不对的视频信息，

![](https://dn-odum9helk.qbox.me/Fiog_rKO581RsF8frn90Oge-Tyrf)

在 rotate 属性中可以看到，有 90 的值，此时，需要在播放控件中进行调整

使用 PLVideoTextureView

    
    
    private PLMediaPlayer.OnInfoListener mOnInfoListener = new     PLMediaPlayer.OnInfoListener() {
            @Override
            public boolean onInfo(PLMediaPlayer mp, int what, int extra) {
                switch (what){
                    case PLMediaPlayer.MEDIA_INFO_VIDEO_ROTATION_CHANGED:
                        return mVideoView.setDisplayOrientation(360 - extra);
                }
            }
            return true;
    };
    

以上内容是否对您有帮助？

* __
* __
* __
* __
* __

文档反馈 (如有产品使用问题，请[ 提交工单](https://support.qiniu.com/tickets/category))

提交
#  iOS-SDK 对 HTTPS 的支持

最近更新时间: 2017-08-16 19:09:36

## Q：iOS-SDK 对 HTTPS 支持

推流 SDK：2.1.5 版本大部分换成了 HTTPS 访问，还有下面两个是通过 HTTP 访问的：

    
    
    pili-zeus.qiniuapi.com
    119.29.29.29
    

这两个可以添加 `NSExceptionDomains` 来说明

  

## Q：App Store 强制 ats，直播依赖的 HappyDns 好像用的是 HTTP 的，这个目前有什么解决办法吗

happyDns 当中 QNDnsManager ipv4 走的是 53 端口，不会受到影响，可以放心使用。ipv6
的地址可能会受到影响，不过目前基本没有用户使用 ipv6。

  

## Q：连麦呢？

支持。

以上内容是否对您有帮助？

* __
* __
* __
* __
* __

文档反馈 (如有产品使用问题，请[ 提交工单](https://support.qiniu.com/tickets/category))

提交
#  视频教程-直播域名解析以及https配置

最近更新时间: 2019-01-04 17:49:56

[直播域名绑定https(http://dn-
odum9helk.qbox.me/spjc/avthumb/pilissl.mov.mp4)](http://dn-
odum9helk.qbox.me/spjc/avthumb/pilissl.mov.mp4)  
  
  
【注】HTTPS 配置仅支持可使用 HTTP 协议的流媒体播放域名(即 HDL 和 HLS )开启。 管理证书  
  
  
[直播域名cname(http://dn-odum9helk.qbox.me/spjc/pili.cname.mp4)](http://dn-
odum9helk.qbox.me/spjc/pili.cname.mp4)

以上内容是否对您有帮助？

* __
* __
* __
* __
* __

文档反馈 (如有产品使用问题，请[ 提交工单](https://support.qiniu.com/tickets/category))

提交
#  Android 推流-录屏状态时获取推流信息

最近更新时间: 2017-03-27 16:44:52

Q：如何获取录屏推流时的推流信息

A：在普通推流（MediaStreamingManager）或者连麦推流（RTCMediaStreamingManager），都有
setStreamStatusCallback 方法， 在使用其回调方法 notifyStreamStatusChanged 中的 streamStatus
可以获得帧率码率信息；

然而录屏推流 ScreenStreamingManager 没有设置该回调的方法，但是根据以上信息我们知道状态信息存在 streamStatus 对象中，而
streamStatus 是 StreamingProfile 的内部类， 所以可以通过以下方法在录屏状态获取推流信息：

1，将推流配置对象 streamingProfile 设为录屏 Activity 的成员变量，这样在录屏各个生命周期都可以访问该对象；

2，在推流状态回调的 STREAMING case 中，获取 streamingProfile 的 streamStatus 对象来获得录屏的推流状态。

    
    
    public void onStateChanged(StreamingState streamingState, Object extra) {
        Log.i(TAG, "streamingState:" + streamingState);
        switch (streamingState) {
            case STREAMING:
            Log.e(TAG,"bitrate:" + 
            streamingProfile.getStreamStatus().totalAVBitrate / 1024 + " kbps" + 
            "\naudio:" + streamingProfile.getStreamStatus().audioFps + " fps" + 
            "\nvideo:" + streamingProfile.getStreamStatus().videoFps + " fps");
            break;
        }
    }
    

以上内容是否对您有帮助？

* __
* __
* __
* __
* __

文档反馈 (如有产品使用问题，请[ 提交工单](https://support.qiniu.com/tickets/category))

提交
#  关于直播回放历史记录查询

最近更新时间: 2018-05-03 16:45:56

## Q：如何查看某条路的历史直播记录？

可以直接调用该接口进行查询：<https://developer.qiniu.com/pili/api/2778/live-history>

  

## Q：该接口要传入 start 和 end 是什么意思？

比如主播在如下时段直播：

    
    
     1点 到 3点
     4点 到 6点
     7点 到 9点
    

如果您调用接口的时候 start 和 end 分别传的是 1点 和 6点，那么返回的结果会有两套数组：

start：1点 end：3点；

start：4点 end：6点

那么 7点 到 9点 这条记录就没包括在上面的返回结果里面，另外传入的时间是十进制UNIX时间戳，单位为秒

  

## Q：为什么我调用了接口后，发现没有返回 start 和 end 的数组？

可能因为如下原因：

  * 调用接口的时候，指定 start 和 end，其中这两个时间内没有任何推流记录
  * 之前推的流不是 视频 h264 + 音频 aac/mp3 格式导致

以上内容是否对您有帮助？

* __
* __
* __
* __
* __

文档反馈 (如有产品使用问题，请[ 提交工单](https://support.qiniu.com/tickets/category))

提交
#  Android 播放-隐藏默认的播放控件

最近更新时间: 2017-08-21 17:13:23

Q：如何隐藏默认的播放控件，如 pause seekbar 等 UI 控件

![](https://dn-odum9helk.qbox.me/FgArjHDNrd76ibhDastLNCG33XaG)

A：使用 PLVideoTextureView 和 PLVideoView 时，播放的 UI 控件是由 MediaController 管理，开发者可以参考
sdk demo 自行实现自定义的 UI 控件，如果直接使用 demo 中的 MediaController 同时又希望不显示 UI 控件，如下修改
MediaController

    
    
    public void show(int timeout) {
        return;
    }
    

以上内容是否对您有帮助？

* __
* __
* __
* __
* __

文档反馈 (如有产品使用问题，请[ 提交工单](https://support.qiniu.com/tickets/category))

提交
#  Android 推流--预览界面全屏设置

最近更新时间: 2017-08-21 17:26:00

要实现推流端预览界面全屏显示，可以参考修改我们github上面的demo的如下代码：

    
    
    AspectFrameLayout afl = (AspectFrameLayout) findViewById(R.id.cameraPreview_afl);
            afl.setShowMode(AspectFrameLayout.SHOW_MODE.FULL); // REAL modify to FULL
            CameraPreviewFrameView cameraPreviewFrameView =
                    (CameraPreviewFrameView) findViewById(R.id.cameraPreview_surfaceView);
            cameraPreviewFrameView.setListener(this);
    

以上内容是否对您有帮助？

* __
* __
* __
* __
* __

文档反馈 (如有产品使用问题，请[ 提交工单](https://support.qiniu.com/tickets/category))

提交
#  pts & dts

最近更新时间: 2017-08-16 14:14:08

## Q：七牛的技术同学，我请教个问题。现在在线上随便找一个流，发现每个流开始后都会收到一些 pts dts 都为 0 的 video 包，然后才会收到
pts dts 正常的音视频包 请问这个是你们服务器的行为吗？这个是干啥用的呢？

这个是因为把缓冲的视频帧下发给播放端，但是为了降低延迟，把一部分数据的时间戳都统一了，目的是实现快速播放的效果，减少延时

  

## Q：相当于 pts dts=0 的这些 video 是 gop cache 的数据吧？

是 gop cache 中的一部分 比如说 cache 可能缓存了 5 秒的数据，为了控制延迟在 2 秒，就会把前 3 秒的都统一成一个时间戳

  

## Q：怎么打印 pts, dts？

`ffprobe -select_streams v -show_packets -of xml rtmp://pili-live-rtmp.live-
rwx.qiniuts.com/snow/rain`

  

## Q：pts, dts是什么意思？

请参考：<http://dranger.com/ffmpeg/tutorial05.html>

以上内容是否对您有帮助？

* __
* __
* __
* __
* __

文档反馈 (如有产品使用问题，请[ 提交工单](https://support.qiniu.com/tickets/category))

提交
#  Android 推流--推流镜像mirror说明

最近更新时间: 2017-08-21 17:15:20

默认的 Android Camera 的行为如下：

  1. 前置摄像头，自拍的方向和推流的方向是反着的
  2. 后置摄像头，自拍的方向和推流的方向是一样的 

setFrontCameraMirror(true) 的意思是， 让前置摄像头，自拍的方向和推流的方向是一致的

以上内容是否对您有帮助？

* __
* __
* __
* __
* __

文档反馈 (如有产品使用问题，请[ 提交工单](https://support.qiniu.com/tickets/category))

提交
#  iOS 直播推流 晃动手机时有马赛克

最近更新时间: 2017-08-16 15:04:58

    
    
    ##iphone 7 & iphone 7 Plus    
    

videosize: 720*1280  
VideoToolbox 768K及以上（后置摄像头） 晃动手机没有马赛克的情况，但是画面比较糊  
AVFoundation 1536K （后置摄像头）及以下暗光 晃动手机出现马赛克情况

测试环境：avfoundation+（videoSize）720*1280 暗光 晃动手机

    
    
    ##iphone6s    
    前置 1280K（码率）正常    
    后置  1280K（码率）正常 
    
    ##iphone6s Plus    
        前置 1280K（码率）正常    
     后置  1280K（码率）正常    
    
    ##iphone6
     前置1280K（码率）   有马赛克 
     后置  1280K（码率） 后置正常
    

以上内容是否对您有帮助？

* __
* __
* __
* __
* __

文档反馈 (如有产品使用问题，请[ 提交工单](https://support.qiniu.com/tickets/category))

提交
#  ios 滤镜的使用［更新]

最近更新时间: 2017-08-16 15:57:35

#### 水印和美颜

##### 水印：

`PLCameraStreamingKit` 中使用水印功能是相对简单的，在项目的 **推流控制器的.m文件** 中添加

    
    
    #import <PLCameraStreamingKit/PLCameraStreamingKit.h>
    

然后在`@implementation`  
调用方法：

    
    
    [self setWaterMarkWithImage:(UIImage *)wateMarkImage position:(CGPoint)position];
    

**需要注意的是水印的大小由`wateMarkImage`的大小来决定，水印的位置由`position`来决定**

对应的可以通过调用方法：

    
    
    [self clearWaterMark];
    

来 **消除水印**

##### 美颜：

要实现 `PLCameraStreamingKit` 中的美颜功能 需要在项目的 **推流控制器的.m文件** 中添加

    
    
    #import <PLCameraStreamingKit/PLCameraStreamingKit.h>
    

然后在`@implementation`  
调用方法：

    
    
    [self setBeautifyModeOn:(BOOL)beautifyModeOn];
    

来`开启美颜功能`  
**需要注意的是以下的方法都需要在开启美颜功能后才有效**

### 特别注意：在开启美颜功能后`beautify`、`whiten`、`redden` 的默认值为0.5

>   1. 设置美颜程度，`beautify` 范围为0 ~ 1
>
>

>
> [self setBeautify:(CGFloat)beautify];
>
>   1. 设置美白程度，`whiten`范围为 0 ~ 1
>
>

>
> [self setWhiten:(CGFloat)whiten];
>
>   1. 设置红润程度，`redden`范围为 0 ~ 1
>
>

>
> [self setRedden:(CGFloat)redden];
>
> ##### 如果以上的效果还不能满足你的需求，那么请使用自定义滤镜：

<https://github.com/pili-
engineering/PLCameraStreamingKit/blob/e99f35715685cd29bb05d0b96543c1897093e1cd/Example/Pods/PLStreamingKit/README.md#GPUImage>

以上内容是否对您有帮助？

* __
* __
* __
* __
* __

文档反馈 (如有产品使用问题，请[ 提交工单](https://support.qiniu.com/tickets/category))

提交
#  iOS ffmpeg 编译

最近更新时间: 2017-08-16 15:58:15

## 在PLPlayerKit兼容下定制ffmpeg

在iOS播放器中，有时候想实现ffmpeg的一些定制化则可以到：  
<https://github.com/pili-engineering/PLVendorLibs>  
下载完整编译库。  
到  
<https://github.com/pili-engineering/pili-ffmpeg>  
下载PLPlayerKit支持的ffmpeg源码  
然后在terminal中执行PLVendorLibs下的build-ffmpeg.sh文件即可定制化自己的ffmpeg版本

以上内容是否对您有帮助？

* __
* __
* __
* __
* __

文档反馈 (如有产品使用问题，请[ 提交工单](https://support.qiniu.com/tickets/category))

提交
#  视频帧率低的原因

最近更新时间: 2017-08-16 14:21:03

视频帧率低，一般有如下原因：

# 数据源模块

  * 环境黑暗，摄像头曝光时间较长，导致帧率低，但是一般比较平稳
  * camera preview size 设置太高
  * 网络太差，导致数据源处丢帧

# 处理模块

  * 美颜等一些特效太多，导致 processing 时间过长，数据源 fps 较低
  * 机器的 GPU 太烂，导致处理时间长

# 编码模块

  * 设置的 fps 本身就比较低
  * 客户设置的分辨率太高，codec 编码时间太长

# 网络模块

  * 网络不好，推流端丢帧了，但是一般会比较波动

# 模块

  * 机器性能低，导致各个阶段的 fps 都低
  * 推流时间太长，手机发热较严重，导致 CPU 降频，fps 也会降低

以上内容是否对您有帮助？

* __
* __
* __
* __
* __

文档反馈 (如有产品使用问题，请[ 提交工单](https://support.qiniu.com/tickets/category))

提交
#  DNS 缓存管理服务 解决部分小运营商解析问题

最近更新时间: 2017-08-21 17:11:26

问题 部分客户会存在这样的现象 部分的流存拉取不了的（这类客户主要是小运营商问题 例如
长宽）因为我们内部有做解析缓存，把之前的成功的缓存了，后面进来的时候，就直接用，但是因为运营商的缘故，运营商的出口ip 和dns 都是比较容易改变
所以之前成功的现在可能无法访问，所以要把缓存清掉，重新解析播放

# 安卓的播放器操作：

传入的播放地址：protocol://domain/path

转换后的播放地址：protocol://ip/path?domain=xxxx.com

PLNetworkManager 类的使用方法描述如下：

添加 happydns 的依赖

    
    
    dependencies {
        compile 'com.qiniu:happy-dns:0.2.+'
    }
    

添加网络状态监测的权限

    
    
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    

启动 DNS 缓存管理服务

    
    
    public void startDnsCacheService(Context context);
    public void startDnsCacheService(Context context, String[] domainList);
    

提前传入待解析的域名列表会在第一次播放时得到更好的体验，不提前传入也没有问题，每次播放前，DNS 缓存服务会自动缓存播放域名。

停止 DNS 缓存管理服务

    
    
    public void stopDnsCacheService(Context context);
    

使用自己的 DNS 解析服务器 PLNetworkManager 类默认使用了 "119.29.29.29"
服务器完成域名解析，当然，你也可以配置为自己的域名服务器，接口如下：

    
    
    public void setDnsServer(String server);
    

DNS 缓存更新时间间隔 PLNetworkManager 类默认的DNS缓存更新时间间隔是 100 秒，内部会根据域名服务器返回的 TTL
来判断是否需要向服务器发起一次查询请求，一般的域名服务器的 TTL 是 600 秒，建议这个更新时间间隔不要超过 600 秒，配置接口如下：

    
    
    public void setDnsCacheUpdateInterval(int milliseconds);
    

# ios播放器的操作

传入的播放地址：protocol://domain/path

转换后的播放地址：protocol://ip/path?domain=xxxx.com

添加 happydns 的依赖

    
    
    pod 'HappyDNS'
    

开启与关闭 DNS 解析状态，默认为开启

    
    
    extern NSString * _Nonnull PLPlayerOptionKeyHappyDNSEnable;
    

提前传入待解析的域名列表会在第一次播放时得到更好的体验，不提前传入也没有关系，每次播放前，DNS 缓存服务会自动缓存播放域名 预解析播放地址的域名

    
    
    + (void)preDNSHost:(nullable NSURL *)URL;
    

使用 DNS 解析,默认使用了 "119.29.29.29" 服务器完成域名解析，当然，你也可以配置为自己的域名服务器

    
    
    extern NSString * _Nonnull PLPlayerOptionKeyDNSManager;
    

以上内容是否对您有帮助？

* __
* __
* __
* __
* __

文档反馈 (如有产品使用问题，请[ 提交工单](https://support.qiniu.com/tickets/category))

提交
#  如何生成直播回看

最近更新时间: 2018-06-12 22:18:05

# 直播回看的配置入口

![](https://dn-odum9helk.qbox.me/FuRso1IssdD69qWTrfbO7aRqvcoB)

  1. 个人控制台左栏点击直播云服务
  2. 选择一个直播空间
  3. 点击直播流管理
  4. 选择一个直播流，点击直播记录
  5. 选择直播时间范围
  6. 根据列出的直播记录选择需要生成回看的记录，点击“生成”，进入直播回看配置详情界面

# 直播回看的配置界面

![](https://dn-odum9helk.qbox.me/FoljScTfsbp7zGS3pCvQJ7qelJV1)

  1. 给回看文件起个文件名。默认使用流名和时间作为文件名
  2. 时间范围，继承自上一条设定直播记录的时间范围
  3. 生成格式。**目前支持：m3u8,mp4,flv**
  4. 点击“进行录制”，系统后台相应开始一个生成回看的任务，并给出任务ID，用户可以根据任务ID查看回看生成进度（[查看方法](https://developer.qiniu.com/dora/manual/1294/persistent-processing-status-query-prefop)）。

以上内容是否对您有帮助？

* __
* __
* __
* __
* __

文档反馈 (如有产品使用问题，请[ 提交工单](https://support.qiniu.com/tickets/category))

提交
#  snapshot() 截图域名无法使用，如何解决？

最近更新时间: 2019-04-10 17:46:49

# 实时截图访问方式

通过域名拼接文件名的形式访问，首先需要开启`直播空间设置`中的`直播封面`  
![](https://dn-odum9helk.qbox.me/7efa2fef07293a95bd5e9b51a3e2195d)

# 解决方式：绑定融合 CDN 加速域名

## 1.添加一个融合 CDN 加速域名

![](https://dn-odum9helk.qbox.me/b9969a962ad6d69f551c165ec365dbbc)

## 2.填写自定义域名，源站配置选择源站域名

**注意：** 源站域名填写 `src.live-snapshot.z1.pili.qiniudns.com`
，源站测试中测试资源名填写`crossdomain.xml`  
![](https://dn-odum9helk.qbox.me/c451d63f5be50e76cbe347fb3631adc2)

## 3.创建完成，等待域名处理，预计 1 小时左右，然后配置 CNAME 解析

![](https://dn-odum9helk.qbox.me/24c7c2e752797c9df08d0c87f6991788)

## 4.CNAME 解析配置完成

可以通过`http://<domain>/<hub>/<title>.jpg?<时间戳>`的形式进行访问  
`domain`为刚才创建的域名  
`hub`为直播空间名  
`title`为流名称  
`时间戳`由于资源访问走 CDN 加速，会存在 CDN 缓存，加上 ?<时间戳> 可以穿透 CDN 直接回源拉取到最新的资源

**注意：** 直播空间所对应的存储空间需要为**公开空间** ，且**不能开启原图保护**

以上内容是否对您有帮助？

* __
* __
* __
* __
* __

文档反馈 (如有产品使用问题，请[ 提交工单](https://support.qiniu.com/tickets/category))

提交
#  Android 连麦-调整主播在副主播端的画质

最近更新时间: 2017-08-21 17:27:06

Q：主播的画面在副主播端显示不够清晰／晃动时有马赛克，如何调整？

A：在 SDK demo 中，连麦的画面显示在小窗中，对画质要求不是很高，使用默认参数即可。

但在其它部分场景中，如主播在副主播的手机界面是以全屏显示时，原来的配置产生的画质可能会不满足要求。

    
    
    RTCConferenceOptions options = new RTCConferenceOptions();
    options.setVideoEncodingSizeRatio(RTCConferenceOptions.VIDEO_ENCODING_SIZE_RATIO.RATIO_4_3);
    options.setVideoEncodingSizeLevel(RTCConferenceOptions.VIDEO_ENCODING_SIZE_HEIGHT_480);
    options.setVideoEncodingFps(20);
    mRTCStreamingManager.setConferenceOptions(options);
    

主播在副主播端的画质主要由以上代码影响，同时上调 setVideoBitrateRange 方法中参数可以有效提高显示在副主播的画面画质；

在晃动时如果有马赛克的情况下，同时可以适当调低帧率 setVideoEncodingFps ，减少马赛克。

需要特别注意的是，由于连麦的架构设计，主播端承担了合流和推流的工作，对于网络带宽会有较高的要求，如果在本身网络不是很好的情况下，仍然会有画质问题。

以上内容是否对您有帮助？

* __
* __
* __
* __
* __

文档反馈 (如有产品使用问题，请[ 提交工单](https://support.qiniu.com/tickets/category))

提交
#  Android 推流--camera后置切前置不生效

最近更新时间: 2017-08-21 17:10:32

七牛android端推流的摄像头id (CAMERA_FACING_ID) 目前一共有三种模式：

CAMERA_FACING_ID.CAMERA_FACING_FRONT ==> 前置摄像头

CAMERA_FACING_ID.CAMERA_FACING_BACK ==> 后置摄像头

CAMERA_FACING_ID.CAMERA_FACING_3RD ==> 后置副摄像头，即双摄像头的副摄像头

目前开发者会遇到某些机型，后置摄像头切换之前不成功的情况，这一类问题确认下来是

**该机型只有后置摄像头（需要前置的话，直接翻转摄像头）**  
eg. 华为荣耀7i  
所以可以针对这类机型，在调用camera切换的API的时候，给予用户一个提示信息即可。

以上内容是否对您有帮助？

* __
* __
* __
* __
* __

文档反馈 (如有产品使用问题，请[ 提交工单](https://support.qiniu.com/tickets/category))

提交
#  Android 推流失败原因总结

最近更新时间: 2017-12-25 11:52:34

(1) 推流startStreaming 调用需要在 StreamingState#READY 之后 并且需要在非UI线程中 ；

(2) 已经处于推流状态，调用开始推流；

(3) 推流url无效；

(4) camera未启用；

(5) 网络方面的请求和链接失败，会引起StreamingState#IOERROR；

以上内容是否对您有帮助？

* __
* __
* __
* __
* __

文档反馈 (如有产品使用问题，请[ 提交工单](https://support.qiniu.com/tickets/category))

提交
#  Android 推流--部分机型发生预览／播放绿边

最近更新时间: 2017-08-21 17:08:44

Q：部分Android机型推流时会发生预览、播放时出现绿边的现象，如何处理？

A：由于不同机型的采集分辨率不尽相同，在预览尺寸小于编码尺寸时就有可能产生绿边的现象，可以通过以下方式处理 ![](https://dn-
odum9helk.qbox.me/FgbBHpUadMtal37481lDiepx53Ub)

调大箭头指向值

![](https://dn-odum9helk.qbox.me/Fj9KwA2Ax0_zMLjaQe7nlBgmybW1)

或者调整不同的预览尺寸

以上内容是否对您有帮助？

* __
* __
* __
* __
* __

文档反馈 (如有产品使用问题，请[ 提交工单](https://support.qiniu.com/tickets/category))

提交
#  Android 播放--显示主播离开的逻辑实现建议

最近更新时间: 2017-08-21 17:09:49

1、首先要知道主播什么时候停止推流，这个可以在主播退出推流页面的时候向客户的业务服务器发送一个通知，告诉业务服务器推流已结束；

2、播放端在每次需要重连时去请求流的状态，如果是推流已结束，则退出播放页面，否则在读取不到流的时候就显示“主播离开请稍后”类似提醒，或者播放端和客户的业务器保持一个长连接，在业务服务器接收到推流结束通知的时候，通知播放端退出播放页面，其他读不到流的时候等待就可以了。

以上内容是否对您有帮助？

* __
* __
* __
* __
* __

文档反馈 (如有产品使用问题，请[ 提交工单](https://support.qiniu.com/tickets/category))

提交
#  申请直播域名的访问日志

最近更新时间: 2018-12-18 16:22:12

# 申请直播域名的访问日志

客户如果想要获得直播空间内某个域名的访问日志，可以向七牛提工单，工单内需包含以下内容。

  1. 相关域名，例如 `pili-live-rtmp.aaa.xxx.cn` 必须属于提交工单的账号。

  2. 日志的存储空间，必须属于提交工单的账号。

  3. 存储有效期，永久或指定天数

如果想要申请的域名不属于提交工单的账号，需单独联系销售，提供身份证，营业执照等信息证明域名、空间所有权

## 日志格式

    
    
    # rtmp
    以下字段依次排列，以 '\t' 分割
    `time_local` 结束时间(RFC3339)
    `url` 服务端解析出来的 url 
    `remote_addr` 客户端地址
    `bytes_sent` 返回总字节数
    `request_time` 请求耗时(毫秒)
    `flash_ver`
    `page_url`
    
    # flv hls
    以下字段依次排列，以 '\t' 分割
    $time_iso8601
    $remote_addr
    $request( $Method   $request_url    $protocol 以空格分割)
    $status
    $bytes_sent
    $request_time (秒)
    $http_referer
    $http_user_agent
    

## 日志命名格式：

`vdn-log/<type>/<domain>/<date>/<hourAndMinute>/part-<number>.gz`

## 日志上传时间：

延迟一天

以上内容是否对您有帮助？

* __
* __
* __
* __
* __

文档反馈 (如有产品使用问题，请[ 提交工单](https://support.qiniu.com/tickets/category))

提交
#  Android 推流--水印模糊调整

最近更新时间: 2017-08-21 17:12:17

目前demo的示例：

    
    
    WatermarkSetting watermarksetting = new WatermarkSetting(this);
    watermarksetting.setResourceId(R.drawable.qiniu_logo)
    .setAlpha(100)
    .setSize(WatermarkSetting.WATERMARK_SIZE.MEDIUM)
    .setCustomPosition(0.5f, 0.5f);
    

如果根据此默认设置，水印在播放端看着非常模糊的话，可以尝试加入如下设置：

    
    
    .setInJustDecodeBoundsEnabled(false)
    

以上内容是否对您有帮助？

* __
* __
* __
* __
* __

文档反馈 (如有产品使用问题，请[ 提交工单](https://support.qiniu.com/tickets/category))

提交
#  Android 推流--camera默认前置，切换摄像头两次才生效

最近更新时间: 2017-08-21 17:31:50

![](https://dn-odum9helk.qbox.me/FqQvl4v2c2DPVqamjzqqGIP09TOK)

setCameraId 是老 api  
为了支持多个 camera，新增了 setCameraFacingId，参数类型不一样。  
如果一开始是设定默认 FRONT的话 下边的顺序也要替换一下

![](https://dn-odum9helk.qbox.me/FqdYLpwFFWH1xho_fVMdh1FbIEKf)

以上内容是否对您有帮助？

* __
* __
* __
* __
* __

文档反馈 (如有产品使用问题，请[ 提交工单](https://support.qiniu.com/tickets/category))

提交
#  Android 短视频 FAQ

最近更新时间: 2019-07-17 12:03:54

Q1：短视频 SDK 支持的格式有哪些？  
---  
出于兼容性的考虑，目前短视频 SDK 仅支持 h.264 的视频编码，aac、mp3 的音频编码，通常封装的格式为 mp4、mov
等。未知编码的资源可以考虑使用音视频转码接口（
[avthumb](https://developer.qiniu.com/dora/manual/1248/audio-and-video-
transcoding-avthumb) ）处理后再使用 SDK 编辑。  
  
  

Q2：短视频 SDK 如何获取授权？  
---  
短视频的使用需要获取授权，可通过 400-808-9176 转 2 号线联系七牛商务咨询，或者
[通过工单](https://support.qiniu.com/?ref=developer.qiniu.com)
联系七牛的技术支持。否则在运行过程中可能会出现 ERROR_UNAUTHORIZED (8) 的错误。此外，调用未授权的
[功能](https://developer.qiniu.com/pili/sdk/3731/short-video) 也可能出现此异常。  
  
  

Q3：如何提高编辑效率？  
---  
短视频录制、编辑时的效率主要由手机的编码性能、媒体的编码配置等因素影响。在特定的配置下，不同的设备表现出的性能可能会有较大的区别；同样的设备，调整编码配置：源媒体、目标媒体的码率、分辨率、帧率、VideoProfile类型等，都会影响编码时间，对编辑时长有比较敏感的需求，可以从以上纬度调整。  
  
  

Q4：如何设置全屏？  
---  
在 SDK 的 demo 默认使用了正方形的界面录制、编辑演示，需要全屏的产品需求，可以更改 xml GLSurfaceView
的类型，改变预览的界面；更改编码的宽高，改变生成的媒体的分辨率。  
  
  

Q5：如何提高视频的清晰度？  
---  
在编解码时，总是会有一定的失真产生，程度的不同表现在视觉感官上就是清晰度的差别。影响清晰度的因素主要有：码率、分辨率、帧率、编码类型等。在其他配置不变的情况下，清晰度与码率正相关，即码率越高清晰度越好；清晰度与分辨率、帧率负相关；与编码类型正相关，即编码效率越高清晰度越好，同样配置下，不同
VideoProfile High、Main、Baseline
清晰度递减。可以简单理解为，每一帧单位区域包含的信息越多，清晰度越好。调整清晰度可以按照以上原则调整。  
  
以上内容是否对您有帮助？

* __
* __
* __
* __
* __

文档反馈 (如有产品使用问题，请[ 提交工单](https://support.qiniu.com/tickets/category))

提交
#  iOS 短视频 FAQ

最近更新时间: 2019-07-17 12:33:32

Q1：短视频 SDK 支持的格式有哪些？  
---  
出于兼容性的考虑，目前短视频 SDK 仅支持 h.264 的视频编码，aac、mp3 的音频编码，通常封装的格式为 mp4、mov
等。未知编码的资源可以考虑使用音视频转码接口（
[avthumb](https://developer.qiniu.com/dora/manual/1248/audio-and-video-
transcoding-avthumb) ）处理后再使用 SDK 编辑。  
  
  

Q2：短视频 SDK 如何获取授权？  
---  
短视频的使用需要获取授权，可通过 400-808-9176 转 2 号线联系七牛商务咨询，或者
[通过工单](https://support.qiniu.com/?ref=developer.qiniu.com)
联系七牛的技术支持。否则在运行过程中可能会出现闪退，控制台输出log “auth failed”。此外，调用未授权的
[功能](https://developer.qiniu.com/pili/sdk/3731/short-video) 也可能出现此异常。  
  
  

Q3：如何提高编辑效率？  
---  
短视频录制、编辑时的效率主要由手机的编码性能、媒体的编码配置等因素影响。在特定的配置下，不同的设备表现出的性能可能会有较大的区别；同样的设备，调整编码配置：源媒体、目标媒体的码率、分辨率、帧率、VideoProfile类型等，都会影响编码时间，对编辑时长有比较敏感的需求，可以从以上纬度调整。  
  
  

Q4：如何录制纯音频/视频？  
---  
在 PLShortVideoRecorder 初始化的时候，videoConfiguration
为nil，结果为纯音频；audioConfiguration为nil为纯视频。  
  
  

Q5：如何提高视频的清晰度？  
---  
在编解码时，总是会有一定的失真产生，程度的不同表现在视觉感官上就是清晰度的差别。影响清晰度的因素主要有：码率、分辨率、帧率、编码类型等。在其他配置不变的情况下，清晰度与码率正相关，即码率越高清晰度越好；清晰度与分辨率、帧率负相关；与编码类型正相关，即编码效率越高清晰度越好，同样配置下，不同
VideoProfile High、Main、Baseline
清晰度递减。可以简单理解为，每一帧单位区域包含的信息越多，清晰度越好。调整清晰度可以按照以上原则调整。  
  
以上内容是否对您有帮助？

* __
* __
* __
* __
* __

文档反馈 (如有产品使用问题，请[ 提交工单](https://support.qiniu.com/tickets/category))

提交
#  历史流信息查询

最近更新时间: 2020-03-31 09:53:14

查询直播开始时间、主播IP、历史码率、历史帧率等信息。

# 请求包

    
    
    GET /v2/hubs/<Hub>/streams/<EncodedStreamKey>/historyinfo?start=<Start>&end=<End>
    Host: pili.qiniuapi.com
    Authorization: <QiniuToken>
    

`<QiniuToken>`:
管理凭证，用于鉴权。其值为符合[管理凭证](https://developer.qiniu.com/pili/api/2772/http-requests-
authentication)的字符串

参数名称 | 是 | 说明  
---|---|---  
Hub | 是 | 直播空间名  
EncodedStreamTitle | 是 | 对流名做[URL 安全的 Base64 编码](https://developer.qiniu.com/kodo/manual/appendix)后得到的字符串  
Start | 是 | 查询的起始时间 (查询的时间跨度，只能获取最近 30 天的数据)  
End | 是 | 查询的结束时间 (查询的时间跨度，只能获取最近 30 天的数据)  
  
# 返回包

    
    
    200 {
        "items": [
            {
                "time": <Time>, 
                "bps": <Bps>,
                "fps": {
                    "audio": <Audio>, 
                    "vedio": <Vedio>,
                    "data": <Data>, 
                    "lostFramePermil": <LostFramePermil> 
                },
                "client": "clientIP", // 客户端IP
                "node": "nodeIP" // 服务端IP
            },
        ...
        ]
    }
    
    612 {
        "error": "stream not found"
    }
    

参数名称 | 说明  
---|---  
Time | 整数，Unix 时间戳，表示推流开始的时间。  
clientIP | 字符串，表示主播的IP。  
bps | 整数，表示当前码率。  
fps | 结构体，表示当前帧率信息。  
audio | 整数，当前音频帧率。  
video | 整数，当前视频帧率。  
data | 整数，当前数据帧率。  
  
以上内容是否对您有帮助？

* __
* __
* __
* __
* __

文档反馈 (如有产品使用问题，请[ 提交工单](https://support.qiniu.com/tickets/category))

提交
#  迁移工具常见问题

最近更新时间: 2018-09-20 10:00:15

# 日志错误

  

问题 | 故障排查  
---|---  
Linux 服务器日志错误提示`check rsync failed` | 请检查系统是否已安装 rsync 组件  
Linux 服务器日志错误提示`check virtio failed` | 请检查系统是否安装 virtio 驱动  
Linux 服务器日志错误提示`check selinux failed` | 请检查是否已禁用 SElinux。你可以运行 setenforce 0 临时关闭 SELinux  
Linux 服务器日志错误提示`Do Grub Failed` | 请检查源服务器是否安装了系统引导程序 GRUB（GRand Unified Bootloader）。你可以[安装 1.9 以上版本的系统引导程序 GRUB ](https://developer.qiniu.com/qvm/kb/how-to-install-grub-for-linux-server)后重试  
日志错误提示`TimeStamp` | 请检查系统时间是否为正确时间  
日志错误提示`Unknown Error` | 请检查配置文件 user_config.json 中参数 platform 取值是否正确  
日志错误提示`Permission denied` | 日志文件提示如`rsync: send_files failed to open "…": Permission denied (13)`的错误信息时，表明迁云工具无权访问该目录或文件夹，导致 rsync 失败。此时你可以通过配置 rsync_excludes_linux.txt 或者 Rsync/etc/rsync_excludes_win.txt 过滤该目录或文件夹，然后重试  
日志错误提示`NotEnoughBalance` | 中转实例的默认付费模式为按量付费，你的账号余额不足时，无法顺利迁云。你需要更新账户状态后重试。  
日志错误提示`InvalidImageName.Duplicated` | 指定的参数 image_name 不能与你已有的镜像名称重复  
日志错误提示`Connect to Server Failed` | 该错误表示无法连接中转实例。你可以按以下步骤检查：（1）查看日志文件详细信息（2）中转实例状态是否正常（3）本地网络服务是否正常。迁云工具需要访问 80、443、8703 和 8080 通信端口，请确保你的服务器已经放行这些端口（4）问题解决后，再次运行主程序重试  
日志错误提示`Do Rsync Disk x Failed` | 该错误表示文件传输中断。你可以按以下步骤检查：（1）查看错误日志文件详细信息。如果错误日志文件中多次出现**return: 3072** 或**return: 7680** 信息提示，请确认源服务器数据库服务或者容器服务是否未开启状态，如 Oracle、MySQL、MS SQL Server、MongoDB 和 Docker 等服务。你需要先暂停服务或者排除相关数据文件目录后再迁云（2）中转实例状态是否正常（3）本地网络服务是否正常。迁云工具需要访问 80、443、8703 和 8080 通信端口，请确保你的服务器已经放行这些端口。（4）问题解决后，再次运行主程序重试  
  
说明：

  * [迁云工具](https://developer.qiniu.com/qvm/manual/server-migration-qiniu)支持断点恢复，文件传输过程支持断点续传。一般情况下如果主程序异常中断或提示迁移不成功，故障排查处理完问题后，你可以再次运行主程序恢复迁云工作。

  * 成功迁移 Windows Server 2008 及以上版本的 Windows 服务器，启动实例后你需要先使用 Reset File Permission 工具修复默认文件系统权限，以保证实例服务及组件正常。

  

# 问题：迁移 Windows 服务器后，启动实例发现数据盘缺失或者盘符错乱？

  

情况一：如果数据盘盘符缺失，你可以打开磁盘管理器，重新添加即可。

**1.** 打开**控制面板 > 系统与安全 > 管理工具 > 计算机管理**

**2.** 单击左侧菜单栏中的**磁盘管理** ，找到并右击盘符缺失的数据盘，选择**更改驱动器和路径**

**3.** 单击**添加** 并添加数据盘盘符

**4.** 选择**装入以下空白 NTFS 文件夹中** ，单击**确定** 即可

情况二：如果数据盘盘符错乱，你可以打开磁盘管理器，重新更改即可。

**1.** 打开**控制面板 > 系统与安全 > 管理工具 > 计算机管理**

**2.** 单击左侧菜单栏中的**磁盘管理** ，找到并右击盘符缺失的数据盘，选择**更改驱动器和路径**

**3.** 单击**更改** 并更改数据盘盘符

**4.** 选择**分配以下驱动器号** ，单击**确定** 即可

  

# 问题：迁移 Linux 服务器后，启动实例发现原数据盘目录下没有数据？

  

迁移带数据盘的 Linux 服务器后，启动实例时默认不挂载数据盘。你可以在启动 QVM 实例后运行`ls
/dev/vd*`命令查看数据盘设备，根据实际需要手动挂载，并编辑`/etc/fstab`配置开机自动挂载。

  

# 问题：迁移 Linux 服务器后，根据该自定义镜像创建的实例为何不能启动？

  

（1）检查驱动。创建 I/O 优化的实例时，请确保源服务器已经安装 virtio 驱动。

（2）检查源系统引导配置是否正确。

（3）如果你的源服务器系统是内核版本较低的 CentOS 5 或者 Debian 7，而且自带的 GRUB 程序版本低于 1.99，你可以[安装 1.9
以上版本的系统引导程序 GRUB ](https://developer.qiniu.com/qvm/kb/how-to-install-grub-for-
linux-server)后重试。

  

# 问题：启动 Others Linux 实例后，网络服务不正常？

  

导入 Others Linux 类型镜像时，QVM 不会对该自定义镜像所创建的实例做任何配置工作，包括相关的网络配置、SSH
配置等。此时，你需要自行修改系统相关网络配置。迁云工具生成的镜像网络配置有变化，默认以 DHCP（Dynamic Host Configuration
Protocol）的方式获取 IP 地址。如果网络配置失败，请提交工单联系技术支持。

以上内容是否对您有帮助？

* __
* __
* __
* __
* __

文档反馈 (如有产品使用问题，请[ 提交工单](https://support.qiniu.com/tickets/category))

提交
#  负载均衡常见问题

最近更新时间: 2018-09-20 09:57:49

# 问题：负载均衡均衡的是什么？

  

负载均衡是按特定调度算法把流量分发到后端服务器上，其中：

  * 四层（TCP 和 UDP）是基于连接做流量调度。TCP 和 UDP 创建一个 socket 访问负载均衡实例，这个源和目的 IP 和端口就是一个连接。

  * 七层（HTTP/HTTPS）是基于请求做调度。比如 http get 请求访问一个页面。

  

# 问题：为什么请求不均衡？

  

负载均衡请求不均衡的原因可能有以下几种：

  * 开启了会话保持功能

配置了会话保持，当访问负载均衡实例的客户端又很少时，容易导致不均衡，尤其在使用少量客户端对负载均衡进行测试的时候。比如 TCP
监听，开启了会话保持（四层是基于来源地址做会话保持），使用一台客户端对负载均衡实例进行压测，就会导致不均衡。

  * 健康检查异常

后端服务器的健康建状态异常会导致不均衡，尤其在压测的时候容易忽略后端服务器的健康检查状态，如果有后端服务器健康检查失败或者健康检查状态经常跳跃会导致不均衡。

  * TCP Keepalive 保持长连接

后端服务器有些开启了 TCP Keepalive 保持长连接，有些没有开启，则连接会在保持长连接的后端服务器上堆积，造成不均衡。

排查和解决方法：

  * 查看各台后端服务器的权重是否相同

  * 在相关时间段内是否有健康检查失败或波动现象，查找波动的原因；或者健康检查没有配置正确的响应码2xx，3xx导致了健康检查显示正常，但后端服务有异常

  * 是否同时使用了加权最小连接数（WLC）调度方式和会话保持，如果是，尝试改为加权加权轮询（WRR）算法和会话保持。

  

# 问题：负载均衡各监听连接超时时间是多少？

  

监听 | 超时时间  
---|---  
TCP 监听 | 900 秒  
UDP 监听 | 90 秒  
HTTP 监听 | 60 秒  
HTTPS 监听 | 60 秒  
  
以上内容是否对您有帮助？

* __
* __
* __
* __
* __

文档反馈 (如有产品使用问题，请[ 提交工单](https://support.qiniu.com/tickets/category))

提交
#  后端服务器常见问题

最近更新时间: 2018-09-20 10:10:28

# 问题：负载均衡实例最多支持添加多少 QVM 实例？

  

默认每个负载均衡实例可以添加 200 个 QVM 实例，一个 QVM 实例可以被 50 个负载均衡实例关联。**但是** 如果你需要添加更多 QVM
实例，请提交工单申请。通过审核后，为你提升配额。

为了保证你对外服务的稳定与高效，建议你根据业务分类或应用服务的模块划分将提供不同服务或执行不同任务的应用服务器配置在不同的负载均衡实例上。

  

# 问题：负载均衡运行中是否可调整服务器数量？

  

可以

你可以在任意时刻增加或减少负载均衡的后端服务器实例数量并且支持不同服务器实例之间的切换。但是为了保证你对外服务的稳定，确保在执行上述操作时，开启了负载均衡的健康检查功能并保证负载均衡后端至少有一台正常运行的服务器实例。

  

# 问题：后端服务器实例为什么访问不了负载均衡服务？

  

这和负载均衡 TCP 的实现机制有关。在四层 TCP 协议服务中，不支持后端服务器实例既作为 Real Server
又作为客户端向所在的负载均衡实例发送请求。因为返回的数据包只在云服务器内部转发，不经过负载均衡，所以在后端服务器实例上去访问负载均衡的服务地址是不通的。

  

# 问题：QVM 实例在接入负载均衡服务前添加了白名单，对负载均衡服务有影响么？

  

若 QVM 实例在接入负载均衡前设置了访问白名单，那么接入负载均衡后需要将负载均衡的白名单添加到 QVM 实例中，否则可能会引起网站`403`报错。

需要添加的负载均衡地址包括 100.64.0.0/10、10.158.0.0/16、10.159.0.0/16 和 10.49.0.0/16。

  

# 问题：为什么有 10 或 100 开头的 IP 在频繁访问 QVM 实例？

  

负载均衡系统除了会通过系统服务器的内网 IP 将来自外部的访问请求转到后端 QVM 实例之外，还会对 QVM
实例进行健康检查和可用性监控，这些访问的来源都是由负载均衡系统发起的。

负载均衡系统的地址段为 100.64.0.0/10、10.158.0.0/16、10.159.0.0/16 和 10.49.0.0/16，所以会有很多
10或 100 开头的 IP 地址访问 QVM 实例。

为了确保你对外服务的可用性，确保对上述地址的访问配置了放行规则。

  

# 问题：要使用负载均衡服务，QVM实例是否需要进行特殊配置？

  

添加到负载均衡实例的后端 QVM 实例，一般不需要进行特别的配置。

但是，如果后端 QVM 实例的操作系统为 Linux 并且使用了 TCP 监听，确保系统配置文件`/etc/sysctl.conf`中以下三个配置的值为零：

    
    
    net.ipv4.conf.default.rp_filter = 0
    net.ipv4.conf.all.rp_filter = 0
    net.ipv4.conf.eth0.rp_filter = 0
    

如果部署在同一内网网段下的 QVM 实例之间有通信需求，需要检查如下参数的配置是否正确：

    
    
    net.ipv4.conf.default.arp_announce =2
    net.ipv4.conf.all.arp_announce =2
    

更改配置后，执行 sysctl -p 更新配置。

  

# 问题：QVM 实例设置权重的作用是什么？

  

权重比越高的 QVM 实例将被分配到更多的访问请求，你可以根据后端 QVM 实例的对外服务能力和需求来区别设定。

假设负载均衡池中的 A 和 B 两台 QVM 实例的权重均配置成 100 和均配置成 50 都是一样的，在 A 和 B 两台 QVM
实例健康检查状态均正常的情况下，QVM 实例 A 和 B 均分前端请求的流量。但是如果 A 和 B 的权重分别设置为 10 和 100，在 A 和 B 两台
QVM 实例健康检查状态均正常的情况下，A 承担 10/(10+100) 的流量，B 承担 100/(10+100) 的流量。

如果你同时开启了会话保持功能，有可能会造成后端 QVM 实例访问不均衡，建议你暂时关闭会话保持功能再观察一下是否依然存在这种情况。

当负载均衡分发到后端 QVM 实例的请求不均匀时，参考以下方法检查处理：

  * 统计一个时间段内后端 QVM 实例的 Web 服务访问日志的数据量。访问日志查看方法：

    * Nginx 和 Apache：打开日志目录`/access.log`

    * IIS：打开 IIS 管理界面，鼠标放在需要设置开启日志的站点上，单击右键，选择**属性** ，选择**网站** 选项卡，单击**启用日志记录**

  * 按照负载均衡的配置，对比多个 QVM 实例日志的数量是否有差距。

如果设置了会话保持，需要剥离相同 IP 的访问日志。如果负载均衡配置了权重，要根据权重比例计算日志中访问比例是否正常。

以上内容是否对您有帮助？

* __
* __
* __
* __
* __

文档反馈 (如有产品使用问题，请[ 提交工单](https://support.qiniu.com/tickets/category))

提交
#  为什么云主机连接不上 Redis？

最近更新时间: 2018-09-12 17:18:56

两者通过内网连接必须满足的条件如下：

  * 云主机 QVM 和 Redis 在相同的地域

  * 云主机 QVM 和 Redis 在相同的网络环境，即：必须都属于同一个 VPC 下

  * 云主机 QVM 内网 IP 在 Redis 白名单中

以上内容是否对您有帮助？

* __
* __
* __
* __
* __

文档反馈 (如有产品使用问题，请[ 提交工单](https://support.qiniu.com/tickets/category))

提交
#  云主机反向解析的申请流程

最近更新时间: 2018-10-30 12:40:25

qvm 反向解析需要提交工单由售后工程师操作，提交工单时请注明 主机所在区域（北京、上海等）和 ip 对应的解析域名。

FAQ:

Q: 1个IP地址是否允许指向多个反解域名 ?

A: 一个IP只允许对应一个反解域名

Q: 设置提交后，如何测试是否生效？

A: 提交后2分钟后会在权威DNS上生效, 可以使用 dig 命令查看

`  
dig -x 47.254.32.63 +short  
gw8.4cun.com.

`

以上内容是否对您有帮助？

* __
* __
* __
* __
* __

文档反馈 (如有产品使用问题，请[ 提交工单](https://support.qiniu.com/tickets/category))

提交
#  如何为 Linux 服务器安装 GRUB

最近更新时间: 2018-09-20 10:06:57

当你无法通过[迁云工具](https://developer.qiniu.com/qvm/manual/server-migration-
qiniu)迁移内核版本较低，自带系统引导程序 GRUB 版本为 0.97 及其以下的 Linux 服务器，例如，CentOS 5 和 Debian
7。而且日志文件提示`Do Grub Failed`时，可能是因为没有安装 1.9 以上版本的系统引导程序 GRUB（GRand Unified
Bootloader）。本文档即将介绍如何为你的源服务器安装系统引导程序 GRUB 1.99 版本。

  

### **操作步骤**

**1.** 登录源服务器

**2.** 运行以下命令查看原 grub、grub-install 以及 grub-mkconfig 的路径：

    
    
    which grub
    which grub-install
    which grub-mkconfig
    

**3.** 使用`mv`命令为旧版本 grub、grub-install 以及 grub-mkconfig
改名以备份文件。你可以在使用迁云工具迁移服务器后，恢复原名以使用原配置。

    
    
    mv /sbin/grub /sbin/grub-old
    mv /sbin/grub-install /sbin/grub-install-old 
    mv /sbin/grub-mkconfig /sbin/grub-mkconfig-old
    

**4.** 运行`yum install -y bison gcc make`安装 GRUB 依赖的 bison、gcc 以及 make 工具。

**5.** 运行以下命令安装 flex。

    
    
    test -d /root/tools || mkdir -p /root/tools
    cd /root/tools
    wget https://github.com/westes/flex/releases/download/v2.6.4/flex-2.6.4.tar.gz
    tar xzf flex-2.6.4.tar.gz
    cd flex-2.6.4
    mkdir -p build
    cd build
    ../configure
    make && make install
    ln -s /usr/local/bin/flex /usr/bin/flex
    

**6.** 运行以下命令安装 GRUB 1.99 依赖。

    
    
    test -d /root/tools || mkdir -p /root/tools
    cd /root/tools
    wget https://alpha.gnu.org/gnu/grub/grub-1.99~rc1.tar.gz
    tar xzf grub-1.99~rc1.tar.gz
    cd grub-1.99~rc1
    mkdir -p build
    cd build
    ../configure
    make && make install
    ln -s /usr/local/sbin/grub-install /sbin/grub-install
    ln -s /usr/local/sbin/grub-mkconfig /sbin/grub-mkconfig
    

说明：若编译过程中出现了`-Werror`报错，你可以定位到编译对象的编译文件 makefile 中，去掉`-Werror`选项重新编译。

**7.** 运行`grub-install --version`检查 GRUB 版本是否更新为 1.99。

成功更新系统引导程序 GRUB 1.99
版本后，你可以使用[迁云工具](https://developer.qiniu.com/qvm/manual/server-migration-
qiniu)迁移服务器至 QVM。

迁云成功后，运行以下命令恢复使用旧版本 GRUB：

    
    
    rm /sbin/grub-install
    rm /sbin/grub-mkconfig
    rm /boot/grub/grub.cfg
    mv /sbin/grub-old /sbin/grub
    mv /sbin/grub-install-old /sbin/grub-install
    

以上内容是否对您有帮助？

* __
* __
* __
* __
* __

文档反馈 (如有产品使用问题，请[ 提交工单](https://support.qiniu.com/tickets/category))

提交
#  Linux上NFS性能只有几MB速度

最近更新时间: 2019-01-14 09:45:02

Linux nfs客户端对于同时发起的NFS请求数量进行了控制，若该参数配置较小会导致IO性能较差，请查看该参数：

    
    
    cat /proc/sys/sunrpc/tcp_slot_table_entries
    
    

默认编译的内核该参数最大值为256，可适当提高该参数的值来取得较好的性能，请以root身份执行以下命令：

    
    
    echo "options sunrpc tcp_slot_table_entries=128" >> /etc/modprobe.d/sunrpc.conf
    echo "options sunrpc tcp_max_slot_table_entries=128" >>  /etc/modprobe.d/sunrpc.conf
    sysctl -w sunrpc.tcp_slot_table_entries=128
    
    

修改完成后，您需要重新挂载文件系统或重启机器。

以上内容是否对您有帮助？

* __
* __
* __
* __
* __

文档反馈 (如有产品使用问题，请[ 提交工单](https://support.qiniu.com/tickets/category))

提交
#  安全组常用端口和特殊端口解封

最近更新时间: 2020-06-17 11:20:07

通过了解典型应用的默认端口，您可以更准确地添加或修改安全组规则。

# **使用背景**

添加安全组规则时，您必须指定通信端口或端口范围，然后安全组根据允许或拒绝策略决定是否转发数据到ECS实例。例如，使用Xshell客户端远程连接QVM实例时，当安全组检测到从公网或内网有SSH请求，会同时检查入方向上发送请求的设备的IP地址是否在允许放行的安全组规则中、22端口是否开启，只有匹配到的安全组规则允许放行该请求时，方才建立数据通信。

另外部分运营商判断**端口25、135、139、444、445、5800、5900等为高危端口，并默认屏蔽。**
即使您添加的安全组规则放行了这些端口，在受限地区仍无法访问。建议您修改为其它非高危端口承载业务。

# **常用端口**

参见下表查看常用端口的使用说明。

端口 | 服务 | 说明  
---|---|---  
21 | FTP | FTP服务所开放的端口，用于上传、下载文件。  
22 | SSH | SSH端口，用于通过命令行模式或远程连接软件（例如PuTTY、Xshell、SecureCRT等）连接Linux实例。  
23 | Telnet | Telnet端口，用于Telnet远程登录ECS实例。  
25 | SMTP | SMTP服务所开放的端口，用于发送邮件。基于安全考虑，QVM实例25端口默认受限，如需解封，**请参见TCP 25端口控制台解封申请**。  
80 | HTTP | 用于HTTP服务提供访问功能，例如，IIS、Apache、Nginx等服务。  
110 | POP3 | 用于POP3协议，POP3是电子邮件收发的协议。  
143 | IMAP | 用于IMAP（Internet Message Access Protocol）协议，IMAP是用于电子邮件的接收的协议。  
443 | HTTPS | 用于HTTPS服务提供访问功能。HTTPS是一种能提供加密和通过安全端口传输的一种协议。  
1433 | SQL Server | SQL Server的TCP端口，用于供SQL Server对外提供服务。  
1434 | SQL Server | SQL Server的UDP端口，用于返回SQL Server使用了哪个TCP/IP端口。  
1521 | Oracle | Oracle通信端口，ECS实例上部署了Oracle SQL需要放行的端口。  
3306 | MySQL | MySQL数据库对外提供服务的端口。  
3389 | Windows Server Remote Desktop Services | Windows Server Remote Desktop Services（远程桌面服务）端口，可以通过这个端口使用软件连接Windows实例。  
8080 | 代理端口 | 同80端口一样，8080端口常用于WWW代理服务，实现网页浏览。如果您使用了8080端口，访问网站或使用代理服务器时，需要在IP地址后面加上:8080。安装Apache Tomcat服务后，默认服务端口为8080。  
137、138、139 | NetBIOS协议 | 
* 137、138为UDP端口，通过网上邻居传输文件时使用的端口。
* 139通过这个端口进入的连接试图获得NetBIOS/SMB服务。  
NetBIOS协议常被用于Windows文件、打印机共享和Samba。  
  
# **特殊端口——TCP25端口解封申请**

TCP 25端口的出方向封禁可能影响您通过TCP 25
端口连接第三方邮件服务商的SMTP服务器对外部发送邮件。如需解封，请按照以下模板[提交工单](https://support.qiniu.com/tickets/new/form?category=%E5%85%B6%E4%BB%96%E7%B1%BB%E5%92%A8%E8%AF%A2&space=%E4%BA%91%E4%B8%BB%E6%9C%BA)。

    
    
    模板：
    
    您好：
        希望解封服务器邮件通信端口：
        解封原因及理由(下面仅为示例，请按照您的详细情况说明)：
                1. 产品是邮箱客户端产品，须要用到25和110号端口，否则邮件系统不能使用，同时服务器会通过邮件，为我们的用户发送一些版本更新等通知性邮件
                2. 服务器端通过邮件将我们用户反馈的意见，转发到技术人员邮箱，方便技术人员及时处理问题；
    
    解封服务器ID及IP:
    实例ID: xxx
    对应IP：xxx
    
    我们同意并承诺：不发送垃圾邮件，如果其IP被国际反垃圾组织列黑，七牛云有权立即停止其服务。
    这些端口不会做其他用途，请放心开通这些邮箱端口，谢谢!
    

说明：

  1. 一般情况下，在您提交解封申请一个工作日后，七牛云会根据您提交的申请理由进行审核，并将审核结果以邮件的方式通知您。

以上内容是否对您有帮助？

* __
* __
* __
* __
* __

文档反馈 (如有产品使用问题，请[ 提交工单](https://support.qiniu.com/tickets/category))

提交
#  noresvport挂载参数问题检查及整改步骤

最近更新时间: 2020-07-03 16:58:25

本文介绍如何检查并修复 noresvport 挂载参数问题。

> 说明：只适用于Linux系统的用户，Windows用户请忽略。

# **第一步：检查是否使用 noresvport 挂载参数**

  1. 在 QVM 实例上下载check_noresvport.py检查脚本。
    
        wget -N https://code.aliyun.com/nas_team/nas-client-tools/raw/master/linux_client/check_noresvport.py -P /tmp/
    

  2. 使用python执行检查脚本。
    
        python2.7 /tmp/check_noresvport.py
    

如果脚本输出：本台 ECS 无须处理 noresvport 问题，则无须处理。否则请执行第二步： noresvport 参数修复方法。

# **第二步：noresvport参数修复方法**

建议在业务低峰进行修复。

  1. 如果使用 QVM 直接挂载NAS，请使用参数-r再次执行检查脚本。
    
        python2.7 /tmp/check_noresvport.py -r
    

# **第三步：更新自动挂载配置**

  * 如果配置过自动挂载，请更新自动挂载参数，加入 noresvport 挂载参数。详情请参见[Linux自动挂载NFS文件系统](https://developer.qiniu.com/qvm/manual/6913/automatically-mount-nfs-file-systems)。
  * 如果没有配置过自动挂载，跳过此步骤。

修复完成后，**请再次执行第一步：检查是否使用 noresvport 挂载参数**
，确认修复生效。如果仍有问题请及时[提交工单](https://support.qiniu.com/tickets/new/form?category=%E5%85%B6%E4%BB%96%E7%B1%BB%E5%92%A8%E8%AF%A2&space=%E4%BA%91%E4%B8%BB%E6%9C%BA)。

# **常见问题**

1.为什么要使用 noresvport 参数挂载 NAS？不重新挂载会有什么后果？  
答：如果发生网络切换或者后端服务的 HA 倒换，小概率会造成 NFS 文件系统阻塞，则可能需要几分钟时间连接才会自动恢复，极端情况下甚至需要重启 QVM
才能恢复。使用 noresvport 参数后，恢复几秒即可自动完成恢复。

2.什么情况会引发网络切换或者后端服务的 HA 倒换？  
答：NAS
服务是稳定的，网络切换或者后端服务的HA倒换都是罕见情况。后端服务升级会触发上述切换，但导致客户端阻塞的概率很低，并且在升级之前我们会提前通知相关集群的用户，留出充足时间使用
noresvport 参数。其他可能引发切换的场景，还有负载均衡调整、服务端硬件故障等情况，有一定的不可预测性，所以即使服务端没有升级安排，也请尽快使用
noresvport 参数避免这样的风险。

3.为什么需要重新挂载？还有没有其他的方案？  
答。需要重新挂载的原因是要把之前没有使用 noresvport 参数的 TCP 连接断掉，然后使用 noresvport 参数挂载时，会建立新的 TCP
连接。为了把旧的 TCP 连接断掉，就必须把 NAS 相关的业务都停掉，然后执行umount卸载。如果不希望重新挂载，可以考虑新建NAS挂载点，使用
noresvport 参数挂载到新的本地路径，然后把业务进程逐步迁移过去，最后废弃老的挂载路径和挂载点。

以上内容是否对您有帮助？

* __
* __
* __
* __
* __

文档反馈 (如有产品使用问题，请[ 提交工单](https://support.qiniu.com/tickets/category))

提交
#  Windows实例提示“由于协议错误，会话将被中断。请重新连接到远程计算机。”

最近更新时间: 2020-08-13 17:50:43

> **免责声明：**
> 本文档可能包含第三方产品信息，该信息仅供参考。七牛云对第三方产品的性能、可靠性以及操作可能带来的潜在影响，不做任何暗示或其他形式的承诺。

# 问题描述

远程连接Windows系统的QVM实例时，提示协议错误。具体的报错如下：

    
    
    由于协议错误，会话将被中断。请重新连接到远程计算机。

# 问题原因

可能导致该问题的部分原因如下：

  * 原因一  
目标实例的远程会话配置错误。当远程会话配置错误，远程连接时会出现协议错误的提示。

  * 原因二  
目标实例的远程连接端口被其他应用占用。Windows系统默认远程桌面连接端口号为3389，当该端口被其他程序占用时，远程连接服务将无法正常运行。

# 解决方案

> 七牛云提醒您：
>
>   * 如果您对实例或数据有修改、变更等风险操作，务必注意实例的容灾、容错能力，确保数据安全。
>   * 如果您对实例（包括但不限于QVM、RDS）等进行配置与数据修改，建议提前创建快照或开启RDS日志备份等功能。
>   * 如果您在七牛云平台授权或者提交过登录账号、密码等安全信息，建议您及时修改。
>

不同问题原因对应的解决方案不同，您可以根据现场实际情况选择对应的问题原因及解决方案。

> **说明** ：本文中的操作步骤以Windows Server 2016版本为例。

## 原因一：目标实例的远程会话配置错误

处理步骤如下：

  1. [使用VNC登录](https://developer.qiniu.com/document_detail/108451.html)Windows实例。
  2. 单击**开始** ，输入`gpedit.msc`。单击**Enter** 按钮，打开**本地组策略编辑器** 。
  3. 在**本地组策略编辑器** 窗口中，依次单击**计算机配置** >**管理模板** >**Windows 组件** >**远程桌面服务** >**远程桌面会话主机** >**安全****计算机配置** 。
  4. 在**安全** 目录中，双击**远程（RDP）连接要求使用指定的安全层** 。  
![](http://qey2kbifv.hn-bkt.clouddn.com/2020-08-13/jn9MDUiYleoTGWtdZLRu.png)

  5. 选择**已启用** ，在**安全层** 选项中选择**RDP** ，单击**确定** 。  
![](http://qey2kbifv.hn-bkt.clouddn.com/2020-08-13/iG4QDkpjb1NLyCzhcsSu.png)

  6. 单击**开始** ，输入`cmd`，单击**Enter** 按钮，打开命令行。
  7. 执行以下命令，完成策略更新，使以上的设置生效。
    
        gpupdate

系统显示如下图，计算机策略更新完成。  
![](http://qey2kbifv.hn-bkt.clouddn.com/2020-08-13/RaH74JnhmTPgrXw6lk3Z.png)

  8. 重试远程连接，确认问题已经修复。

## 原因二：目标实例的远程连接端口被其他应用占用

如果目标实例的远程连接端口被其他应用占用，您可以从下列两种解决方案中选择其一。

### 方案一：修改远程连接端口号

参考下列步骤，修改远程连接的端口号，然后使用新的端口号重试远程连接：

  1. [使用VNC登录](https://developer.qiniu.com/document_detail/108451.html)Windows实例。
  2. 单击**开始** ，输入`regedit`，单击**Enter** 按钮，打开**注册表编辑器** 。
  3. 依次进入以下目录。
    
        HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp

  4. 双击**RDP-Tcp** 目录中名称为**PortNumber** 的注册表项。  
![](http://qey2kbifv.hn-bkt.clouddn.com/2020-08-13/dW2w7RX6BNjObKt8yEou.png)  
![](http://qey2kbifv.hn-bkt.clouddn.com/2020-08-13/L8pxWZG9E50OB2iCT7zg.png)

  5. 在编辑页面，选择**基数** 选项中的**十进制** ，修改**数值数据** 中的值，该值即为远程桌面使用的端口号。  

> **说明** ：修改远程桌面默认端口时，请根据现场情况选择合适的TCP端口号。

![](http://qey2kbifv.hn-bkt.clouddn.com/2020-08-13/ohVuvyC1PqsAHwJLjmfp.png)

> **说明** ：图中的3389端口号为远程连接的默认端口号，仅作为示例。

  6. 重启Windows系统或重启该QVM实例。

### 方案二：关闭占用远程连接端口的应用进程

参考下列步骤，关闭正在占用远程连接端口的应用进程，以释放端口号，然后重试远程连接：

  1. [使用VNC登录](https://developer.qiniu.com/document_detail/108451.html)Windows实例。
  2. 单击**开始** ，输入`cmd`，单击**Enter** 按钮，打开命令行。
  3. 执行以下命令，获取占用远程连接端口的进程号（PID）。
    
        netstat -ano |findstr 3389

> **说明** ：此处以远程连接默认端口号3389为例，现场需要以实际情况为准。

  4. 执行以下命令，根据PID查看进程对应的应用程序。正常情况下，远程连接端口被svchost.exe进程占用。
    
        tasklist |findstr [$PID]

> **说明** ：[$PID]指上一步获取的PID。

  5. 如果远程连接端口被svchost.exe之外的进程占用，则表明远程连接端口的确被其他应用所占用。您可以执行以下命令，根据PID关闭指定的进程，释放被占用的远程连接端口。

> **警告** ：关闭进程属于风险操作，请确保关闭进程后不影响业务运行，方可执行此操作。
    
        taskkill /f /pid [$PID]

# 适用于

  * 云服务器QVM

如果您的问题仍未解决，您可以[提交工单](https://support.qiniu.com/tickets/new/?ref=developer.qiniu.com)联系七牛云技术支持。