本文为您介绍视频点播转码相关的常见问题。
转码失败时,如何自主排查?
确认转码源文件能否在本地正常播放(非常重要),经统计大部分转码失败是因为源文件本身有问题(如:视频流缺失、metadata存在问题、帧错误、视频头部信息缺失等),会触发转码效率监控,导致转码退出。
使用
ffprobe -show_streams -show_format -of json -i [filePath]
命令检查文件meta信息,是否有moov缺失、流异常等问题。使用
ffprobe -show_packets -i [filePath]
命令查看数据码流是否有问题,码流时长与metadata时长是否一致。说明metadata中的时长与实际持续的码流时长不一致可能导致转码失败,对于metadata有问题的文件,建议您先本地使用ffmpeg工具处理,再进行上传转码。
在错误码中找到对应的错误码,分析具体失败原因。
如果您添加的文本水印中包含特殊字符,可能会导致水印输出截断或失败,需要在输入前对特殊字符进行转义。
加密转码失败,使用HLS标准加密转码时,常见错误原因请参见视频加密常见问题。
使用系统内置的不转码模板组转码后的视频,为什么无法播放?
请排查是否由下述原因造成:
原因一:上传的源视频本身存在问题,不能正常播放。
原因二:目前仅MP4、FLV、M3U8、MP3、WEBM格式的视频支持不转码直接播放。
上传视频到视频点播中时,如果使用视频点播系统内置的不转码模板组转码上传,若源视频是MP4、FLV、M3U8、MP3、WEBM格式,则视频上传完成后会生成原画视频流;若源视频为其他格式时,则视频上传完成后会生成原始文件视频流。
原始文件视频流无法通过视频点播控制台进行播放预览,也无法通过GetPlayInfo - 获取音视频播放地址接口获取到播放地址,只能通过GetMezzanineInfo - 获取源文件信息接口获取源文件地址用于播放;原画视频流可以在视频点播控制台进行播放预览,也可以通过GetPlayInfo - 获取音视频播放地址接口获取到播放地址用于播放。
源视频有多个音频流,转码完成后只剩下一个音频流怎么解决?
目前仅支持保留一路音频流,即在Output参数中添加音频流的配置为audioMap=0
,如果您有特殊场景需求,请提交工单。
转码之后,视频的宽高为什么和设置的不一样?
视频点播的转码模板中,可以设置横竖屏自适应(LongShortMode),该功能默认开启,开启后视频的width对应长边,height对应短边,只需设置宽或高其中的一个,另一个留空(不设置)即可。如果想要输出指定的分辨率,则需要关闭横竖屏自适应(输出可能会拉伸变形)。
转码之后,为什么视频分辨率发生置换(竖屏变横屏或横屏变竖屏)?
通常是由于视频源包含了rotation=-90
而导致转码后视频分辨率发生置换。您可以使用FFmpeg工具,检查源文件是否包含rotation角度旋转信息。查询源文件信息的方法如下:
ffprobe -show_streams -show_format -of json -i [filepath]
mp4转码后的m3u8文件播放黑屏,应该如何排查?
请先检查您的源文件视频流是否正常。如果源文件第一个ts没有视频流数据,会导致播放器认为没有画面。如果出现这种情况,可以先将源文件先进行一次mp4转码,再进行m3u8转码,即可正常播放。
源文件为HDR,转SDR后过曝或亮度过暗?
亮度过曝是因为模板中的已有配置未能适配HDR文件导致,请提交工单适配。
视频点播转码能判断moov box位置吗?没有moov的文件怎么办?
转码后默认会将moov box放置在mp4文件头部,不支持自定义配置。没有moov的文件暂时无法处理,会导致转码失败。
视频转为音频后,为什么时长与源视频不一致?
当前视频点播的转码逻辑为了保证时长的一致性,会根据输入文件中音频流时长最短的来计时转码。如果源文件中部分切片时间戳不连续,会导致无法获取视频流的媒体信息,影响对于转码时长的估计,产生时长偏差的问题。
转码时转码模板设置的音/视频码率未生效?
请检查转码模板中是否配置了码率检查机制(即点播控制台普通转码模板中条件转码参数下的检查视频码率或检查音频码率),当配置了码率检查机制时,如果转码前后的音/视频编码器一致且转码后的音/视频码率大于转码前的音/视频码率,则转码模板中设置的音/视频码率不会生效,音/视频码率将会按您配置的码率检查机制按原片转码或不转码被重置。
一个转码作业需要多长时间?
视频点播中,一个转码作业的耗时主要与转码视频的时长正相关,同时受输出分辨率、编码格式、转码算法复杂度、转码任务多少等多种因素综合影响。具体影响说明如下:
视频时长:转码的视频时长越长,则转码越慢。
输出分辨率:转码输出的分辨率越高,则转码越慢。
转码算法:转码算法复杂度越高,则转码越慢。转码算法的复杂度排序为:窄带高清2.0>窄带高清1.0>普通转码。
转码任务:转码任务越多,则转码越慢,因为提交的转码任务过多时,会产生额外的排队等待处理的时间。
编码格式(转码耗时:H.265>H.264)等其他因素。
正常情况下,一个输出规格为H.264 720P的转码作业,经过普通转码的转码速度为视频时长的5~6倍速,经过窄带高清1.0转码的转码速度为视频时长的2~3倍速。例如:一个6分钟的视频经转码输出为H.264 720P的视频,从开始转码到转码完成,如果是普通转码,则耗时为1分钟左右,如果是窄带高清1.0转码,则耗时为2分钟左右。
能否实时查询转码进度?
目前不提供实时查询转码进度的接口,您可以设置回调,通过事件通知来判断转码处理的结果,详情请参见事件通知。
为什么我的转码作业一直失败?
作业失败有多种原因,请留意返回错误信息。如果您收到预处理失败的错误,说明我们无法解码您的源文件,请提交工单协助诊断并提供以下信息来协助诊断:阿里云账户ID、视频ID。
是否支持实时转码?
视频点播目前是基于文件的转码服务,暂不支持实时转码。
已经上传到视频点播中的视频,是否可以批量设置转码?
针对已经上传到视频点播中的视频,暂不支持批量设置转码。
已经转码设置了水印,为什么不生效或看不到水印?
请检查转码所使用的水印模板的尺寸(宽×高)、偏移等参数的设置是否能确保水印正常显示在视频画面范围(分辨率宽×高)内,若超出视频画面范围,会导致即使水印转码成功,也看不到水印。
为什么收不到转码失败的回调?
配置转码事件通知时,如果您仅配置了单个清晰度转码完成(StreamTranscodeComplete),未配置全部清晰度转码完成(TranscodeComplete)的事件,当您上传视频时发起转码,如果您上传的源视频有损坏导致所有转码流都失败的场景下,则点播会返回TranscodeComplete失败的回调给您,而由于您并未配置该回调,因此导致您转码失败,却收不到转码失败的回调。