音视频处理MCT

    Preset(模板)

    模板是系统预设的对于一个视频资源在做转码计算时所需定义的集合。用户可以更简便的将一个模板应用于一个和多个视频的转码任务,以使这些任务输出相同规格的目标视频资源。

    音视频转码为用户预设了丰富且完备的系统模板,以满足用户对于目标规格在格式、码率、分辨率、加解密、水印等诸多方向上的普遍需求,对于不希望过多了解音视频复杂技术背景的用户来说,是最佳的选择。百度为那些在音视频技术上有着丰富积累的用户,提供了可定制化的转码模板,以帮助他们满足复杂业务条件下的转码需求。

    当用户仅需对于音视频的容器格式做变化时,百度提供Transmux模板帮助用户以秒级的延迟快速完成容器格式的转换,比如从MP4转换成HLS,而保持原音视频的属性不变。

    模板接口的各参数含义和取值方法参考Preset-API

    查询当前用户Preset及所有系统Preset

    用户可以通过如下代码查询所有的Preset:

    response = client.list_presets()
    
    for preset in response.presets:
      print preset

    查询指定的Preset信息

    用户可以通过如下代码指定的某个Preset:

    preset_name = "your_preset"
    response = client.get_preset(preset_name)
    print response

    创建Preset

    如果系统预设的Preset无法满足用户的需求,用户可以自定义自己的Preset。根据不同的转码需求,可以使用不同的接口创建Preset。

    创建仅支持容器格式转换的Preset

    如下代码创建仅执行容器格式转换Preset:

    preset_name = "your_preset"
    container = "hls"
    response = client.create_preset(preset_name, container)
    print response

    创建音频文件的转码Preset,不需要截取片段和加密

    如果创建一个不需要截取片段和加密的音频文件转码Preset,可以参考如下代码:

    preset_name = "your_preset"
    container = "mp3"
    audio = {'bitRateInBps': 25600, 'sampleRateInHz': 32000, 'channels': 1}
    response = client.create_preset(preset_name, container, audio=audio)
    print response

    创建音频文件转码Preset,需要设置片段截取属性和加密属性

    如果创建一个支持截取片段和加密的音频文件转码Preset,可以参考如下代码:

    preset_name = "your_preset"
    container = "mp4"
    
    clip = {'startTimeInSecond':0, 'durationInSecond': 50}
    audio = {'bitRateInBps': 1980, 'sampleRateInHz': 32000, 'channels': 1}
    encryption = {'aesKey': 'abcdefghij123456','strategy': 'Fixed'}
    response = client.create_preset(preset_name, container, clip=clip, audio=audio, encryption=encryption)
    print response

    创建视频文件转码Preset,不需要截取片段和加密

    如果创建一个不需要截取片段和加密的音频文件转码Preset,可以参考如下代码:

    preset_name = "your_preset"
    container = "mp4"
    codecOptions = {'profile': 'baseline'}
    video = {
        'codec': 'h264',
        'codecOptions': codecOptions,
        'bitRateInBps': 32000,
        'maxFrameRate': 30,
        'maxWidthInPixel': 4096,
        'maxHeightInPixel': 96,
        'sizingPolicy': 'stretch'
    }
    audio = {'bitRateInBps': 1980, 'sampleRateInHz': 32000, 'channels': 1}
    response = client.create_preset(preset_name, container, video=video, audio=audio)
    print response

    创建视频文件转码Preset,需要设置片段截取属性和加密属性

    如果创建一个截取片段和加密的音频文件转码Preset,可以参考如下代码:

    preset_name = "your_preset"
    container = "mp4"
    codecOptions = {'profile': 'baseline'}
    video = {
        'codec': 'h264',
        'codecOptions': codecOptions,
        'bitRateInBps': 32000,
        'maxFrameRate': 30,
        'maxWidthInPixel': 4096,
        'maxHeightInPixel': 96,
        'sizingPolicy': 'stretch'
    }
    clip = {'startTimeInSecond':0, 'durationInSecond': 50}
    audio = {'bitRateInBps': 1980, 'sampleRateInHz': 32000, 'channels': 1}
    encryption = {'aesKey': 'abcdefghij123456','strategy': 'Fixed'}
    response = client.create_preset(preset_name, container, video=video, clip=clip, audio=audio, encryption=encryption)
    print response

    创建Preset,指定所有的参数

    如果需要定制所有配置参数,可以参考如下代码:

    preset_name = "your_preset"
    
    container = "mp4"
    desc = 'My Desc'
    transmux = True
    codecOptions = {'profile': 'baseline'}
    video = {
        'codec': 'h264',
        'codecOptions': codecOptions,
        'bitRateInBps': 32000,
        'maxFrameRate': 30,
        'maxWidthInPixel': 4096,
        'maxHeightInPixel': 96,
        'sizingPolicy': 'stretch'
    }
    clip = {'startTimeInSecond':0, 'durationInSecond': 50}
    audio = {'bitRateInBps': 1980, 'sampleRateInHz': 32000, 'channels': 1}
    encryption = {'aesKey': 'abcdefghij123456','strategy': 'Fixed'}
    response = client.create_preset(preset_name, container, transmux=transmux, description=desc, video=video, clip=clip, audio=audio, encryption=encryption)
    print response

    更新Preset

    用户可以修改自己创建的模板。

    如下代码可以更新指定模板的音频目标码率:

    preset_name = "your_preset"
    preset = self.the_client.get_preset_for_update(preset_name)
    preset.audio.bitRateInBps = 256000
    response = self.the_client.update_preset(preset_name, preset)
    print response

    更新其他参数类似

    上一篇
    Job(任务)
    下一篇
    Mediainfo(媒体信息)