本文介绍了利用智能媒体管理(IMM)媒体转码接口来实现视频转码的能力。
功能简介
视频转码通过将已压缩编码的视频码流转换为另一种视频码流,将视频格式、封装、分辨率、帧率及码率等参数转换为适合不同设备和平台播放,同时降低文件大小以优化传输效率的过程。

使用场景
- 多设备兼容性:为确保视频能够在不同设备(如手机、平板、电脑、智能电视等)上顺利播放,转码技术能够将视频转换为符合特定设备所支持的格式。 
- 流媒体播放:流媒体服务需要将视频转码为多种格式和比特率,以便根据用户的网络状况进行动态调整,从而提升观看体验。 
- 视频压缩:在确保视频质量的前提下,通过转码技术降低文件大小,以便于存储和传输,尤其是在网络带宽受限的情况下。 
支持音视频格式列表
| 分类 | 格式 | 
| 音频 | AAC、MP3、WAV、FLAC、WMA、AC3、OPUS等所有主流格式。 | 
| 视频 | MP4、MPEG-TS、MKV、MOV、AVI、FLV、M3U8、WebM、WMV、RM、VOB等所有主流格式。 | 
如何使用
前提条件
- 已创建并获取AccessKey。具体操作,请参见创建AccessKey。 
- 已开通OSS服务、创建存储空间。具体操作,请参见创建存储空间。 
- 已开通智能媒体管理服务。具体操作,请参见开通产品。 
- 已通过智能媒体管理控制台创建项目。具体操作,请参见创建项目。 说明- 您也可以调用API接口创建项目。具体操作,请参见CreateProject - 创建项目。 
- 您可以调用ListProjects - 列出所有项目信息的列表接口列出指定地域下已创建的所有项目信息。 
 
步骤一:上传文件
请使用OSS管理控制台将媒体文件上传至IMM项目所在地域的Bucket。

步骤二:使用IMM视频转码
调用CreateMediaConvertTask - 创建媒体转码任务接口创建视频转码任务。
参数说明
以下示例以IMM项目test-project为基础,使用视频文件oss://test-bucket/video-demo/蜀山区商业大楼.mov进行视频转码处理。
更多有关媒体处理各功能介绍和使用,请参见媒体转码。
- 您可以通过OpenAPI 门户使用媒体转码接口对视频文件进行处理,可参考SDK代码。 
- 为实现最佳的播放兼容性,推荐转码为 mp4 或者 hls,并设置视频 Codec 为 h264 且PixelFormat 为 yuv420p,音频 Codec 为 aac 且 Channel 为 2。 
- 转码过程将不可避免地导致视频画面质量的下降。您可以通过 Bitrate 和 CRF 参数来调控转码后的视频画面质量。一般而言,画面质量越高,文件大小也会相应增大。 
- h265相较于h264具有更优越的压缩效率。在视频画面质量相同的条件下,h265通常能够比h264节省超过30%的存储空间和带宽成本。然而,h265的使用必须在播放器兼容的前提下进行。 
- Codec 参数不设置时默认为 copy,为 copy 时,表示将需要处理的视频流直接拷贝到输出文件,此时 TranscodeVideo 下的其余参数无效。copy 不可用于视频转码,通常应用于转封装场景。 
- Targets中URI文件名建议使用变量设置输出文件路径,相关变量请参见TargetURI模板。 
转码为mp4
将视频转为mp4格式,且不改变分辨率、帧率等视频参数。

转码信息
- 视频格式:mov -> mp4 
- 视频配置:CRF设置为24,保持原有分辨率与帧率等视频参数 
- 音频配置:aac格式,码率96Kbps,双声道,采样率44.1kHz 
- 输出视频保存路径: - oss://test-bucket/video-demo/蜀山区商业大楼.mp4
- 转码完成消息通知:发送MNS消息到MNS主题“test-mns-topic” 
SDK示例请参见OpenAPI门户,已为您自动填充示例的参数,请您按需修改后再进行调试。
请求参数如下
{
  "ProjectName": "test-project",
  "Notification": {
    "MNS": {
      "TopicName": "test-mns-topic"
    }
  },
  "Sources": [
    {
      "URI": "oss://test-bucket/video-demo/蜀山区商业大楼.mov"
    }
  ],
  "Targets": [
    {
      "Audio": {
        "TranscodeAudio": {
          "Bitrate": 96000,
          "Channel": 2,
          "Codec": "aac",
          "SampleRate": 44100
        }
      },
      "Container": "mp4",
      "URI": "oss://test-bucket/video-demo/蜀山区商业大楼.mp4",
      "Video": {
        "TranscodeVideo": {
          "CRF": 24,
          "Codec": "h264",
          "PixelFormat": "yuv420p"
        }
      }
    }
  ]
}转码为1920x1080分辨率30fps的hls格式视频
将视频转码为1920x1080分辨率、30fps的H.265视频,使用HLS格式切片,当源视频分辨率与帧率不足时遵循源视频参数。

转码信息
- 视频格式:mov -> m3u8 
- 切片:hls格式,切片时长10s 
- 视频配置:h265编码格式,CRF设置为24,分辨率1920x1080,帧率30 
- 音频配置:aac格式,码率128Kbps,双声道,采样率44.1kHz 
- 输出视频保存路径: - oss://test-bucket/video-demo/蜀山区商业大楼.m3u8、- oss://test-bucket/video-demo/蜀山区商业大楼-%d.ts
- 转码完成消息通知:发送MNS消息到MNS主题“test-mns-topic” 
SDK示例请参见OpenAPI门户,已为您自动填充示例的参数,请您按需修改后再进行调试。
请求参数如下
{
  "ProjectName": "test-project",
  "Notification": {
    "MNS": {
      "TopicName": "test-mns-topic"
    }
  },
  "Sources": [
    {
      "URI": "oss://test-bucket/video-demo/蜀山区商业大楼.mov"
    }
  ],
  "Targets": [
    {
      "Audio": {
        "TranscodeAudio": {
          "Bitrate": 128000,
          "Channel": 2,
          "Codec": "aac",
          "SampleRate": 44100
        }
      },
      "Container": "ts",
      "Segment": {
        "Duration": 10,
        "Format": "hls"
      },
      "URI": "oss://test-bucket/video-demo/蜀山区商业大楼.{autoext}",
      "Video": {
        "TranscodeVideo": {
          "AdaptiveResolutionDirection": true,
          "CRF": 24,
          "Codec": "h265",
          "FrameRate": 30,
          "FrameRateOption": "adaptive",
          "PixelFormat": "yuv420p",
          "Resolution": "1920x1080",
          "ResolutionOption": "adaptive",
          "ScaleType": "fit"
        }
      }
    }
  ]
}转码为1080p、720p、480p三个分辨率的hls视频
将视频转码为1080p、720p、480p三个分辨率的视频,使用HLS格式切片。

转码信息
转码前
- 视频格式:mov 
- 视频编码格式:h264 
- 分辨率:3840x2160 
- 帧率:30 
转码后
转码完成消息通知:发送MNS消息到MNS主题“test-mns-topic”
视频1
- 视频格式:m3u8 
- 切片:hls格式,切片时长10s 
- 视频配置:h264编码格式,CRF设置为25,分辨率1920x1080,帧率30 
- 音频配置:aac格式,码率256Kbps,双声道,采样率44.1kHz 
- 输出视频保存路径: - oss://test-bucket/video-demo/蜀山区商业大楼-x1080.m3u8、- oss://test-bucket/video-demo/蜀山区商业大楼-x1080-%d.ts
视频2
- 视频格式:m3u8 
- 切片:hls格式,切片时长10s 
- 视频配置:h264编码格式,CRF设置为26,分辨率1280x720,帧率30 
- 音频配置:aac格式,码率128Kbps,双声道,采样率44.1kHz 
- 输出视频保存路径: - oss://test-bucket/video-demo/蜀山区商业大楼-x720.m3u8、- oss://test-bucket/video-demo/蜀山区商业大楼-x720-%d.ts
视频3
- 视频格式:m3u8 
- 切片:hls格式,切片时长10s 
- 视频配置:h264编码格式,CRF设置为28,分辨率854x480,帧率25 
- 音频配置:aac格式,码率96Kbps,双声道,采样率44.1kHz 
- 输出视频保存路径: - oss://test-bucket/video-demo/蜀山区商业大楼-x480.m3u8、- oss://test-bucket/video-demo/蜀山区商业大楼-x480-%d.ts
SDK示例请参见OpenAPI门户,已为您自动填充示例的参数,请您按需修改后再进行调试。
请求参数如下
{
  "ProjectName": "test-project",
  "Notification": {
    "MNS": {
      "TopicName": "test-mns-topic"
    }
  },
  "Sources": [
    {
      "URI": "oss://test-bucket/video-demo/蜀山区商业大楼.mov"
    }
  ],
  "Targets": [
    {
      "Audio": {
        "TranscodeAudio": {
          "Bitrate": 256000,
          "Channel": 2,
          "Codec": "aac",
          "SampleRate": 44100
        }
      },
      "Container": "ts",
      "Segment": {
        "Duration": 10,
        "Format": "hls"
      },
      "URI": "oss://test-bucket/video-demo/蜀山区商业大楼-{resolution}.{autoext}",
      "Video": {
        "TranscodeVideo": {
          "AdaptiveResolutionDirection": true,
          "CRF": 25,
          "Codec": "h264",
          "FrameRate": 30,
          "FrameRateOption": "adaptive",
          "PixelFormat": "yuv420p",
          "Resolution": "x1080",
          "ResolutionOption": "adaptive",
          "ScaleType": "fit"
        }
      }
    },
    {
      "Audio": {
        "TranscodeAudio": {
          "Bitrate": 128000,
          "Channel": 2,
          "Codec": "aac",
          "SampleRate": 44100
        }
      },
      "Container": "ts",
      "Segment": {
        "Duration": 10,
        "Format": "hls"
      },
      "URI": "oss://test-bucket/video-demo/蜀山区商业大楼-{resolution}.{autoext}",
      "Video": {
        "TranscodeVideo": {
          "AdaptiveResolutionDirection": true,
          "CRF": 26,
          "Codec": "h264",
          "FrameRate": 30,
          "FrameRateOption": "adaptive",
          "PixelFormat": "yuv420p",
          "Resolution": "x720",
          "ResolutionOption": "adaptive",
          "ScaleType": "fit"
        }
      }
    },
    {
      "Audio": {
        "TranscodeAudio": {
          "Bitrate": 96000,
          "Channel": 2,
          "Codec": "aac",
          "SampleRate": 44100
        }
      },
      "Container": "ts",
      "Segment": {
        "Duration": 10,
        "Format": "hls"
      },
      "URI": "oss://test-bucket/video-demo/蜀山区商业大楼-{resolution}.{autoext}",
      "Video": {
        "TranscodeVideo": {
          "AdaptiveResolutionDirection": true,
          "CRF": 28,
          "Codec": "h264",
          "FrameRate": 25,
          "FrameRateOption": "adaptive",
          "PixelFormat": "yuv420p",
          "Resolution": "x480",
          "ResolutionOption": "adaptive",
          "ScaleType": "fit"
        }
      }
    }
  ]
}转码为mp4并添加水印
将视频转码为mp4格式,并在视频左上角添加水印Logo,在视频右下角添加水印文字。

转码信息
- 视频格式:mov -> mp4 
- 视频配置:h264编码格式,CRF设置为25,保持原有分辨率与帧率等视频参数。在左上角添加阿里云LOGO图片水印,在右下角添加“智能媒体管理”文字水印。 
- 音频配置:aac格式,码率为256 Kbps,双声道,采样率为44.1 kHz。 
- 输出视频保存路径: - oss://test-bucket/video-demo/蜀山区商业大楼.mp4
- 转码完成消息通知:发送MNS消息到MNS主题“test-mns-topic” 
SDK示例请参见OpenAPI门户,已为您自动填充示例的参数,请您按需修改后再进行调试。
请求参数如下
{
  "ProjectName": "test-project",
  "Notification": {
    "MNS": {
      "TopicName": "test-mns-topic"
    }
  },
  "Sources": [
    {
      "URI": "oss://test-bucket/video-demo/蜀山区商业大楼.mov"
    }
  ],
  "Targets": [
    {
      "Audio": {
        "TranscodeAudio": {
          "Bitrate": 256000,
          "Channel": 2,
          "Codec": "aac",
          "SampleRate": 44100
        }
      },
      "Container": "mp4",
      "URI": "oss://test-bucket/video-demo/蜀山区商业大楼.{autoext}",
      "Video": {
        "FilterVideo": {
          "Delogos": [],
          "Watermarks": [
            {
              "Dx": 0.05,
              "Dy": 0.1,
              "ReferPos": "topleft",
              "Type": "file",
              "URI": "oss://test-bucket/video-demo/aliyun.png",
              "Width": 0.1
            },
            {
              "Content": "智能媒体管理",
              "Dx": 0.05,
              "Dy": 0.1,
              "FontColor": "#FFFFFF",
              "FontSize": 100,
              "ReferPos": "bottomright",
              "Type": "text"
            }
          ]
        },
        "TranscodeVideo": {
          "CRF": 25,
          "Codec": "h264",
          "PixelFormat": "yuv420p"
        }
      }
    }
  ]
}截取视频的部分片段转码为flv格式
截取源视频的部分片段转码为FLV格式,将码率调整为1Mbps。

转码信息
- 视频格式:mov -> flv 
- 截取开始时间:5s 
- 截取时长:10s 
- 视频配置:码率为1Mbps,保持原有的分辨率、帧率及其他视频参数。 
- 音频配置:aac格式,码率96Kbps,双声道,采样率44.1kHz 
- 输出视频保存路径: - oss://test-bucket/video-demo/蜀山区商业大楼.flv
- 转码完成消息通知:发送MNS消息到MNS主题“test-mns-topic” 
SDK示例请参见OpenAPI门户,已为您自动填充示例的参数,请您按需修改后再进行调试。
请求参数如下
{
  "ProjectName": "test-project",
  "Notification": {
    "MNS": {
      "TopicName": "test-mns-topic"
    }
  },
  "Sources": [
    {
      "Duration": 10,
      "StartTime": 5,
      "URI": "oss://test-bucket/video-demo/蜀山区商业大楼.mov"
    }
  ],
  "Targets": [
    {
      "Audio": {
        "TranscodeAudio": {
          "Bitrate": 96000,
          "Channel": 2,
          "Codec": "aac",
          "SampleRate": 44100
        }
      },
      "Container": "flv",
      "URI": "oss://test-bucket/video-demo/蜀山区商业大楼.{autoext}",
      "Video": {
        "TranscodeVideo": {
          "Bitrate": 1000000,
          "Codec": "h264",
          "PixelFormat": "yuv420p"
        }
      }
    }
  ]
}将视频转封装为mp4
将视频转封装为mp4,转封装不改变音视频数据内容,可能存在播放兼容性问题。
转码信息
- 视频格式:mov -> mp4 
- 输出视频保存路径: - oss://test-bucket/video-demo/蜀山区商业大楼.mp4
- 转码完成消息通知:发送MNS消息到MNS主题“test-mns-topic” 
SDK示例请参见OpenAPI门户,已为您自动填充示例的参数,请您按需修改后再进行调试。
请求参数如下
{
  "ProjectName": "test-project",
  "Notification": {
    "MNS": {
      "TopicName": "test-mns-topic"
    }
  },
  "Sources": [
    {
      "URI": "oss://test-bucket/video-demo/蜀山区商业大楼.mov"
    }
  ],
  "Targets": [
    {
      "Container": "mp4",
      "URI": "oss://test-bucket/video-demo/蜀山区商业大楼.{autoext}"
    }
  ]
}将视频水印区域打马赛克
将视频左上角水印logo区域和右下角水印文字区域打上马赛克。

转码信息
- 输入视频路径: - oss://test-bucket/video-demo/蜀山区商业大楼.mp4
- 视频配置:h264编码格式,CRF设置为24,保持原有分辨率、帧率等视频参数,并对左上角的LOGO区域和右下角的文字水印区域进行马赛克处理。 
- 音频配置:aac格式,码率为96 Kbps,双声道,采样率为44.1 kHz。 
- 输出视频保存路径: - oss://test-bucket/video-demo/蜀山区商业大楼-mosaic.mp4
- 转码完成消息通知:发送MNS消息到MNS主题“test-mns-topic” 
SDK示例请参见OpenAPI门户,已为您自动填充示例的参数,请您按需修改后再进行调试。
请求参数如下
{
  "ProjectName": "test-project",
  "Notification": {
    "MNS": {
      "TopicName": "test-mns-topic"
    }
  },
  "Sources": [
    {
      "URI": "oss://test-bucket/video-demo/蜀山区商业大楼.mp4"
    }
  ],
  "Targets": [
    {
      "Audio": {
        "TranscodeAudio": {
          "Bitrate": 96000,
          "Channel": 2,
          "Codec": "aac",
          "SampleRate": 44100
        }
      },
      "Container": "mp4",
      "URI": "oss://test-bucket/video-demo/蜀山区商业大楼-mosaic.{autoext}",
      "Video": {
        "FilterVideo": {
          "Delogos": [
            {
              "Dx": 0.05,
              "Dy": 0.1,
              "Height": 0.1,
              "ReferPos": "topleft",
              "Width": 0.1
            },
            {
              "Dx": 0.05,
              "Dy": 0.1,
              "Height": 100,
              "ReferPos": "bottomright",
              "Width": 600
            }
          ],
        },
        "TranscodeVideo": {
          "CRF": 24,
          "Codec": "h264",
          "PixelFormat": "yuv420p"
        }
      }
    }
  ]
}