点播转码相关常见问题及排查方式

概述:
点播转码目前涉及用户上传自动触发转码、通过SubmitTranscodeJobs接口触发转码等方式,会出现用户转码失败的情况,这当中有用户源片的问题、也有用户设置转码参数的原因以及相关资源性数据授权限制问题导致,本文主要提供点播转码常见的问题排查及处理方式。

HLS标准加密问题排查
SubmitTranscodeJobs接口错误提示:
KeyNotFound:出现这种错误提示一般都是使用的加密Service Key 和视频不在同一个区域,例如:华东2的视频,必须使用华东2的KMS生成秘钥。
NoSuchResource:出现这种错误通常代表用户的某种的资源缺失,可以结合message进行排查,如下所示:
1、"can not find cross service token" :表示用户没有通过RAM授权点播操作用户的KMS导致,需要用户先授权。
2、"can not find customer encrypt master key":表示在用户对应区域的KMS中没有拿到响应的加密Service key,可以在神农鼎生成对应区域的Service Key。
3、"can not find customer encrypt info":表示用户传递的密文秘钥不是使用KMS生成或者秘钥生成和视频存储不在同一个区域,需要用户在视频相应区域生成加密秘钥。
4、"can not find customer plaintext":表示用户生成的秘钥解密不到明文秘钥,需要用户使用GenerateDataKey生成加密秘钥。
5、"The specified resource Template does not exist":表示视频对应区域的转码模板数据不存在,这种问题通常是模板添加或者更新接口异常导致,可以联系点播后台进行数据订正。

其他常见问题:
文件未加密:生成的文件未加密,一般都是由于转码模板在设置的时候没有选择HLS加密选项(标准加密、私有加密必须要勾选)
加密转码失败:视频标准加密失败,一般都是由于用户在调用GenerateDataKey生成的秘钥是非AES_128位的,或者秘钥使用自定义字符串生成
解密失败:通常HLS标准加密成功,说明秘钥是没问题的,那么解密失败通常是由于解密接口直接将名称秘钥返回,实际应该是将名称秘钥进行base64decode解码之后返回
MtsHlsUriToken参数重写失效:可能存在以下两点问题
1、对应的域名没有开通CDN的MtsHlsUriToken参数重写功能,需要到CDN神农鼎设置。
2、域名开启了鉴权,MtsHlsUriToken参数重写和鉴权功能是互斥的。

转码失败问题排查:
转封装(原画)失败:通常都是由于格式支持问题导致,例如:wmv、rmvb等格式不支持装封装成mp4;mpeg4不能转封装成m3u8
条件转码导致转码失败:查看用户是否开启对应的条件转码,如果开启则表模板设置的分辨率、码率是否大于源片的分辨率或者码率,如果大于则模板设置是按照源片转码还是不转码,不转码则会以失败的结果返回,这种是正常的转码处理步骤,可建议用户修改条件转码阈值或者移除条件转码限制。
视频转码失败原因及排查步骤:
1、查看源片文件大小是否为0,这种视频通常是没有上传成功但是OSS错误的通知底层触发转码导致。
2、点播神农鼎查看源片地址看是否可以播放,不可播放通常转码都会失败,说明源片存在问题
3、使用ffprobe -show_streams -print_format json -i "文件地址"查看源片是否存在多个音频流,目前转码还不能处理多音轨源片
4、使用ffprobe -show_streams -print_format json -i "文件地址" 或者ffprobe -show_frames -print_format -i "文件地址" 查看文件的音视频流、帧信息,如果存在红色异常提示,基本上可以确定源片封装参数存在问题,例如:源片的NAL数据问题

源片流数据有问题

源片的音视频Codec封装异常:Codec 为data或者binary类型

转码成功但文件异常:
转码视频变形:原因是用户设置转码模板同时设置了宽和高,这样会导致源片的画面比例如果和设置的宽高比例不一致,就发生了形变,解决办法是只设置宽或者高,保持另一边按照源片的画面比例等比输出。
视频转码后时间变长:这种视频一般都是由于源片的pkt_pts_time显示时间过大导致,可以通过ffprobe -show_frames -print_format json -i "源文件地址"查看pkt_pts_time是否异常,一般都是大于源片的真实时长,正常的pkt_pts_time是均匀递增,最大为视频总时长。
视频转封装成m3u8的ts分片大小差别大:一般都是源片的关键帧分布不均匀导致的,可以通过查看ffprobe -show_frames -print_format json -i "源文件地址"命令查看帧信息,看key_frame=1的帧信息中pakt_pts_time是否均匀递增,如果非均匀一般会导致转封装ts切片不均匀。
直播转点播有音频无画面:一般都是用户侧推流的前面几个ts分片全是音频无视频画面导致,而底层转码只会抓取前面几个ts分片的编码信息,如果前面几个ts分片无视频流,则转码器只会读取音频流,从而导致整个视频输出无画面。
其他
转码任务卡住,一直处于转码中:通常发生在直播转点播录制的视频,这种视频限于推流端配置的问题,导致pts_time非均匀增加,而是跳变,这种情况会导致底层转码ffmpeg卡住,无任何转码结果返回,这种视频通常建议用户排查推流端设置问题。?

原文地址:http://blog.51cto.com/14031893/2330638

时间: 2024-10-04 21:30:08

点播转码相关常见问题及排查方式的相关文章

C++二维码相关库编译

一.瞎想 坐在地铁上闲来无聊,突然想到了二维码,顺手就百度了下相关的资料,目前C++二维码相关的库不多,也就zbar(开源中国上下了半天也没下载下来).zxing,不过这两个库据说都是解析二维码的,不能生成二维码,这个是对于C++而言,如果你是搞C#或者java的,那么恭喜你,你可以直接使用zxing库来完成生成和解析二维码,具体参看 C++生成二维码总结,这篇文章主要是总结了下当前二维码相关的第三方库,个人觉着不错.QZXing是基于qt将zxing进行了封装 zxing实现二维码生成和解析,

钉钉扫码登录网站(两种方式实现)

原文:钉钉扫码登录网站(两种方式实现) 钉钉扫码登录网站(两种方式实现)# 效果:# 源代码地址:https://github.com/jellydong/DingQrCodeLogin 动手敲代码!# 第一步,钉钉后台配置 参考链接:获取appId及appSecret. 点击进入钉钉开发者平台 的页面,点击左侧菜单的[移动接入应用-登录],然后点击右上角的[创建扫码登录应用授权],创建用于免登过程中验证身份的appId及appSecret,创建后即可看到appId和appSecret. 这里因

OAuth 第三方登录授权码(authorization code)方式的小例子

假如上面的网站A,可以通过GitHub账号登录: 下面以OAuth其中一种方式,授权码(authorization code)方式为例. 一.第三方登录的原理 所谓第三方登录,实质就是 OAuth 授权. 数据的所有者告诉系统,同意授权第三方应用进入系统,获取数据.系统从而产生一个短期的进入令牌(token),用来代替密码,供第三方应用使用. 用户想要登录 A 网站,A 网站让用户提供第三方网站的数据,证明自己的身份.获取第三方网站的身份数据,就需要 OAuth 授权. 这里利用OAuth au

http状态码相关知识(复制)

HTTP报文是面向文本的,报文中的每一个字段都是一些ASCII码串,各个字段的长度是不确定的.HTTP有两类报文:请求报文和响应报文. HTTP请求报文 一个HTTP请求报文由请求行(request line).请求头部(header).空行和请求数据4个部分组成,下图给出了请求报文的一般格式. or <request-line> <headers> <blank line> [<request-body> 1.请求行 HTTP协议的请求方法有GET.POS

ViewModel处理View相关事件的多种方式(非技术贴,仅学习总结)

众所周知,在UWP中,微软为我们提供了一种新的绑定方式:x:bind,它是基于编译时的绑定.在性能方面,运行时绑定Binding与它相比还是有些逊色的.因此针对一些确定的.不需要变更的数据,我们完全有理由来使用X:bind进行绑定.(当然,如果你不在乎程序性能的话就没必要继续往下看了!) 悉MVVM的朋友都知道,我们常常遇到这样一种情况:我们需要为一个控件绑定一个ViewModel中的Command,但是这个控件并没有Command属性?笼统的解决方法有很多,我这里大致列举几种常用的解决方法:

SSH深度历险(十) AOP原理及相关概念学习+AspectJ注解方式配置spring AOP

AOP(Aspect Oriented Programming).是面向切面编程的技术.AOP基于IoC基础.是对OOP的故意补充. AOP之所以能得到广泛应用,主要是由于它将应用系统拆分分了2个部分:核心业务逻辑(Core business concerns)及横向的通用逻辑,也就是所谓的切面Crosscutting enterprise concerns.比如,全部大中型应用都要涉及到的持久化管理(Persistent).事务管理(Transaction Management).权限管理(P

手把手教你用python打造网易公开课视频下载软件2-编码相关说明

函数getdownLoadInfo(url)主要实现核心功能:根据url地址,获取课程信息:课程名(courseTitle),课程数目(courseCount),可下载视频数目(videoCount),视频下载链接(videoUrl):不过再讲解之前,需要对编码的相关知识进行说明: #coding:utf-8 关于python编码的问题,的确是个值得研究的问题,因为简直是乱的一塌糊涂,大家可以看一些讲解的文章,这里不做深入讲解,只是给出结论性的东西,方便实际的使用: 1.正因为有了中文,才有了一

Spark源码分析:多种部署方式之间的区别与联系(1)

从官方的文档我们可以知道,Spark的部署方式有很多种:local.Standalone.Mesos.YARN.....不同部署方式的后台处理进程是不一样的,但是如果我们从代码的角度来看,其实流程都差不多. 从代码中,我们可以得知其实Spark的部署方式其实比官方文档中介绍的还要多,这里我来列举一下: 1.local:这种方式是在本地启动一个线程来运行作业: 2.local[N]:也是本地模式,但是启动了N个线程: 3.local[*]:还是本地模式,但是用了系统中所有的核: 4.local[N

APICloud相关常见问题33个(10月24日更新)

APICloud上线一个多月以来,谢谢大家对APICloud提出的意见和建议,我们把这一个月里的APICloud常见问题进行整理,方便大家对一些基本的问题进行查找查看,以后我们会对这些问题进行定期更新,感谢大家体验我们的产品并且提出建议. 相关问题(点击标题进入问题帖): 焦点图模块scrollPicture 怎么在指定位置显示么? 目前apicloud没有自己的UI库是吧? 云修复和版本增量更新如何使用,求说明 我在窗口打开的时候添加了一个事件侦听,当这个窗口关闭的时候要移除事件侦听吗? id