媒体转码截图和工作流场景常见问题【系列一】

媒体处理创建消息主题出现“Only one topic can be created!”错误

目前媒体处理每个用户只能开一个管道,无法创建多管道,所以会出现Only one topic can be created!这个错误。

如果问题还未能解决,请联系 售后技术支持

媒体处理服务中AliyunAudioCodec中Profile字段的含义

媒体处理中的音频编解码配置类型中支持以下五种profile:

MPEG-4 AAC LC (default)
MPEG-4 HE-AAC (SBR)
MPEG-4 HE-AAC v2 (SBR+PS)
MPEG-4 AAC LD
MPEG-4 AAC ELD

兼容性:LC-AAC > HE-AAC > HE-AAC v2压缩率:HE-AAC v2 > HE-AAC > LC-AAC

LD跟ELD主要用于广播等快速编码场景。
媒体转码截图和工作流场景常见问题【系列一】

SBR:Spectral Band Replication(频段复制),SBR把频谱切割开来,低频单独编码保存主要成分,高频单独放大编码保存音质。

PS:Parametric Stereo(参数立体声),PS存储一个声道的全部信息,然后花很少的字节用参数描述另一个声道和它的差异。

如果问题还未能解决,请联系 售后技术支持

截图常见问题

1.提交截图任务如何区分同步异步

只要设置了Interval和Num中的任何一个参数,就表示异步模式,跟是否设置piplineId无关。详情参考 参数详情 11. SnapshotConfig参数详情。

2.指定截图时间点不是关键帧时如何处理

获取截图时间附近最近的关键帧。如果是多张截图,截图时间附近找不到相应关键帧图片,则不返回相应时间点对应的图片,出现返回的图片张数与设定张数不一致情况。

3.指定截图时间超过视频时长

单张截图

  • 普通截图返回失败
  • 关键帧截图根据定义,返回截取输入的截图时间附近最近的关键帧图片。

多张截图

Time+Interval*Num的截取点超过视频时长时,后续截图自动失效,截图完成时返回实际截取的个数

4.m3u8文件截图

同步截图必须保证m3u8索引中的ts路径与m3u8在相同的路径下,异步无要求

5.序列截图返回的截图数量少于设置值

对应时间点附近不存在关键帧图片;后续截图时间点已超出了输入文件总时长;

6.图片大小设置

1)截图支持对输出图片进行宽高设置,详情参考 参数详情中 11 SnapshotConfig参数详情 width、height
2)width、height均不设置,则按照视频的分辨率作为图片大小
3)width、height只设置一个,则按照输入文件的宽高比进行缩放

7.截图任务报错排查

截图任务错误码主要包含SnapshotTimeOut、InvalidParameter.ResourceNotFound、InvalidParameter.ResourceContentBad等,详情参考 提交截图作业

1) 错误码获取方式

  • 提交截图任务失败可以通过查询截图任务接口来获取失败原因,详情参考 查询截图作业。 QuerySnapshotJobList接口返回
  • 工作流截图失败登录MTS控制台 > 媒体库,选择相应的执行实例查看截图活动具体失败原因,见下图:
    媒体转码截图和工作流场景常见问题【系列一】

2)主要错误常见原因

  • InvalidParameter.ResourceNotFound,输入文件找不到,确保输入文件存在指定区域的对应bucket,特别注意各region之间的数据是相互独立的。
  • SnapshotTimeOut, 截图超时,此错误由同步截图返回,目前提交截图作业6s返回,如果同步截图超时情况频繁时,建议采用异步方式截图避免超时情况,不建议重试。
  • InvalidParameter.ResourceContentBad,截图文件内容已经损坏,或者不符合规格导致截图失败。首先确保输入文件内容正常,其次保证截图配置是否符合规格,可按照本文中常见问题一一对照,特别注意截图时间点,关键帧等信息。

如何上传文件?

您可以通过媒体处理控制台或使用面向Web、iOS、Andirod的上传SDK工具进行文件上传工作,支持分片上传、断点续传、批量上传。您也可以直接使用OSS的客户端工具。

音视频文件上传后转码操作是自动执行的么?

文件后缀名在指定范围内的文件上传后是自动触发工作流执行的。

创建媒体工作流时需要指定该工作流的输入文件路径,当该路径下有下列后缀名的音视频文件上传完成时,服务将自动触发该媒体工作流,对此输入文件执行媒体工作流中设定的各项操作。

文件后缀名为在以下范围内的文件支持自动触发工作流执行:

视频:

3gp, asf, avi, dat, dv, flv, f4v, gif, m2t, m3u8, m4v, mj2, mjpeg, mkv, mov, mp4, mpe, mpg, mpeg, mts, ogg, qt, rm, rmvb, swf, ts, vob, wmv, webm

音频

aac, ac3, acm, amr, ape, caf, flac, m4a, mp3, ra, wav, wma,aiff

工作流触发执行的匹配规则:

上传文件的路径包含该工作流设置的输入路径,则该工作流会被触发,例如:

注意:工作流A的输入路径为BucketA下的AA/BB目录,则上传至BucketA下的AA/BB/a.mp4 和上传至BucketA下的AA/BB/CC/b.flv 都会触发工作流A。

当工作流被停用时,不会自动触发执行。

视频可以通过OSS工具上传到媒体工作流输入路径下面之后激活转码吗?

可以。服务是根据文件上传完成到指定工作流的OSS输入位置自动触发的,上传的方式没有限制,使用控制台、API、SDK或者OSS 客户端工具都是可以的。但当工作流是停用状态时,不会自动触发执行。上传方式及工具说明见 本 FAQ - 如何上传文件?

媒体工作流支持哪些操作?

媒体工作流目前支持截图、转码、模版分析、发布管理等操作。

媒体工作流中转码节点的输出文件该如何命名?

由于媒体工作流为批量文件的处理提供了便捷,同时也带来了输出文件名的命名问题。为了便于您使用,系统提供了如下变量供您选择:

  • {RunId}:媒体工作流执行ID;
  • {ObjectPrefix}:不含Bucket信息的原文件路径;
  • {FileName}:不含扩展名的原文件名;
  • {ExtName}:原文件扩展名;

例如:当输入文件为http://a.oss-cn-hangzhou.aliyuncs.com/news/video/foooo.mp4时,三个与原文件相关的变量值为:

  • {ObjectPrefix}:news/video/
  • {FileName}:foooo
  • {ExtName}:.mp4

您可以设置 输出Object为:vod/{ObjectPrefix}{FileName}_HD.flv则该输入文件转码后的输出Object为: vod/news/video/foooo_HD.flv

另外截图节点增加一个特有变量:

  • {SnapshotTime}:截图时间,单位:毫秒

媒体工作流支持哪些消息模式?

媒体工作流支持消息服务的队列和通知,您可以在输入节点上配置;媒体工作流执行时会在其触发执行、执行结束时按设定的队列或通知主题发送消息。

视频转码完成后如何获取播放地址的URL?

您可以在控制台-媒体库 页面管理视频,通过每个视频的管理链接进入视频详情页面,你可以看到每个输出的OSS地址及CDN加速地址(该OSS Bucket有配置CDN的情况下);另外,您还可以通过SDK,以编程方式获取,参见 媒体详细信息

媒体工作流执行时,转码管道上绑定的队列或通知机制是否同时生效?

目前媒体工作流触发执行的作业,忽略转码管道上绑定的消息机制。

为什么转码输出文件的CDN地址在控制台上无法播放预览?

这种情况一般为您的CDN域名没有做解析到相应CNAME的操作做所导致。可通过以下命令查询您域名的CNAME配置:

nslookup -type=cname [您的域名]

CNAME设置, 详情参考 域名管理。

为什么转码输出的M3U8文件在控制台上无法播放预览?

首先,输出媒体Bucket的读写权限需要设置为 公共读。

其次,因为控制台使用的是阿里云的Flash播放器,需要在M3U8文件所在Bucket根目录下放置 crossdomain.xml 文件,文件中包含播放器所在域名,否则无法播放。

为了控制台能正常预览播放您的M3U8文件,请在该M3U8文件所在Bucket根目录下放置如下内容的 crossdomain.xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<cross-domain-policy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.adobe.com/xml/schemas/PolicyFile.xsd">
<allow-access-from domain="*.alicdn.com"/>
</cross-domain-policy>

其中 *.alicdn.com 是控制台播放器所在的域名,如您使用其他的Flash播放器,将播放器所在的域名添加一条新的 allow-access-from domain 记录即可。

上一篇:使用kettle转换中的JavaScript对密码进行加密和解密


下一篇:iOS开发UI篇—CAlayer层的属性