
# H.264和H.265高清低码帮助视频网站打造极致体验
#### 场景说明
互联网视频网站需要在不同终端、不同带宽下，均能为客户提供良好的观看体验。MPC编解码算法，在优化原视频画质的同时，降低视频码率，实现保证视频清晰度的前提下，极大压缩视频体积。有效节约存储与带宽成本，降低视频卡顿率时延、失败率等指标，提升用户观看体验。
用户在创建转码任务时，可以根据使用场景启用MPC的高清低码能力，详情如下所示。
- [配置方式1]
- [配置方式2]
- [配置方式3]
 
#### 实现原理
图1实现原理图   
![](https://support.huaweicloud.com/bestpractice-mpc/zh-cn_image_0000001771750333.png)
 #### 配置方式1
访问API Explorer的[媒资转码接口](https://console.huaweicloud.com/apiexplorer/#/openapi/MPC/doc?api=CreateTranscodingTask)，将Body体中的请求参数"PVC"的值设置为"true"，如下图所示。
图2媒体转码接口   
![](https://support.huaweicloud.com/bestpractice-mpc/zh-cn_image_0000001771782125.png)
 #### 配置方式2
1. 登录[媒体处理控制台](https://console.huaweicloud.com/mpc2/#/mpc/home)。
2. 在左侧导航树中，选择"媒体处理 \> 转码"，进入"转码"页面。
3. 单击"创建任务"，进入"创建任务"页面。
4. 配置转码模板的"高清低码"参数，从下拉框中选择"开启"，再选择高清低码模板，如下图所示。 
   请注意：
   - 如果创建高清低码模板，需要将请求参数"Common"中的"PVC"的值设置为"true"，详情请参考[新建转码模板](https://support.huaweicloud.com/api-mpc/mpc_04_0021.html)。
   
   - 如果创建高清低码模板组，需要将请求参数"Common"中的"PVC"的值设置为"true"，详情请参考[新建转码模板组](https://support.huaweicloud.com/api-mpc/mpc_04_0073.html)。
     图3高清低码模板   
     ![](https://support.huaweicloud.com/bestpractice-mpc/zh-cn_image_0000001771712401.png) 
   
   
   
   
 
 #### 配置方式3
接入MPC的SDK，在创建转码任务的请求体中，将请求参数"Common"中的"PVC"的值设置为"true"，即"withPvc(true)"。
SDK集成方式，音视频转码功能的详细说明和样例代码，请参考[创建与查询转码任务](https://codelabs.developer.huaweicloud.com/codelabs/samples/2621ffdbb62f47558e3d65de7d343197)。
示例核心代码如下所示：
```
//设置转码输入视频地址和输出视频路径
    ObsObjInfo input = new ObsObjInfo().withBucket("mpc-east-2").withLocation("cn-east-2").withObject("ok.mp4");
    ObsObjInfo output = new ObsObjInfo().withBucket("mpc-east-2").withLocation("cn-east-2").withObject("output");
    AvParameters avParameters = new AvParameters();
    avParameters.setCommon(new Common().withPvc(true));
    ArrayList<AvParameters> avParametersArrayList = new ArrayList<>();
    avParametersArrayList.add(avParameters);
    CreateTranscodingTaskRequest request
        = new CreateTranscodingTaskRequest().withBody(new CreateTranscodingReq()
        .withInput(input)
        .withOutput(output)
        .withAvParameters(avParametersArrayList)
    );
    CreateTranscodingTaskResponse response = getMpcClient().createTranscodingTask(request);
    System.out.println("CreateTranscodingTaskResponse=" + response);
```
