前言:
阴天,在不开灯的房间,所有思绪都一点一点沉淀~~在这个没有“精神鸦片”的周末,不如到视频网站找点儿短片消遣一下;正当我兴致勃勃的将视频下载完成之后,准备捧着爆米花开启愉快的周末之旅时,却发现视频无法正常播放,这心情当时就不美丽了,
到底是视频本身有问题?还是播放的格式不支持?我换了几个播放器发现都有不同的表现,所以我打算动手给它变变身,先换个视频格式试试看~借助腾讯云点播转码,让我们来看下如何实现。
首先,我们来解读下视频转码:视频转码(Video Transcoding)官方理解其实就是将原视频码流转换成另一个视频码流的过程。转码可以改变原始码流的编码格式、分辨率和码率等参数,从而使原视频可以在不同的终端和网络环境下播放。
封装格式:支持转以下视频和纯音频封装格式:
视频:MP4、TS、HLS、FLV
纯音频:MP3、M4A、FLAC、OGG
视频编码:编码方式(Codec):支持 H.264 和 H.265 两种编码方式
码率(Bitrate) :支持的视频码率范围:10kbps - 35Mbps
帧率(Frame Rate):支持的帧率范围:1fps - 60fps,常见的有24fps、25fps和30fps
分辨率(Resolution):支持宽度范围:128px - 4096px ,支持高度范围:128px - 4096px
GOP 长度: 支持 GOP 长度范围:1秒 - 10秒 编码档次(Profile):当视频编码方式为 H.264 时,支持 Baseline、Main 和 High 的编码档次
当视频编码方式为 H.265 时,仅支持 Main 编码档次
颜色空间(Color Space):支持 YUV420P
音频编码:编码方式(Codec):支持 MP3、AAC、AC3 和 FLAC 的编码方式
采样率(Sample Rate):支持下列音频采样率:34000Hz 44100Hz 48000Hz
码率(Bitrate):支持码率在26kbps - 256kbps,包括:48kbps 64kbps 128kbps
声道(Channel):单声道 双声道 立体道
转码其实本质上是一个暂时先解码解封装,再编码封装的过程,一般情况下,视频文件主要由视频流和音频流等信息组成,其中视频流和音频流有着不同的编码格式,因此转换前后的码流可能遵循相同的视频编码标准,也可能不遵循相同的视频编码标准。转码过程大致如下:
我们可以来理解下其中的原理,解封装就是把输入的视频文件(例如flv,mp4,rmvb,avi)按照一定的规则进行拆分,把该视频的音频流、视频流、等信息拆分出来。经过解封装操作后,我们可以得到视频文件详细参数指标,包括编码的视频码流(H.264)与编码的音频码流(AAC)等音视频信息。
视频编码说白了就是要“压缩”,所谓解码也就是编码的逆过程——将视频编码时压缩好的编码数据解码成为它本来的面目,也就是没有压缩时的音视频原始数据。目前我们经常听说的解码包括软解与硬解,硬解解码通常由DSP完成,软解码通常由CPU完成。目前软解较为常见,解码是整个过程中至关重要也是较为复杂的关键环节。提到解码那我们自然也要提到解协议,像是我们通常在网络上看到的音视频,通常都会采用各种流媒体协议,常见的例如HTTP,RTMP等,这些协议不仅会传输音视频数据,同时也会传输一些信令数据,那么解协议就是为了去除信令只保留音视频数据;当然,对视频的重新编码运算量也是相当大的,一般占用CPU都会达到80%以上,稍微配置低些的电脑甚至会达到100%,决定转码快慢的因素其中包括视频的分辨率,视频码率以及音频码率等。在获取到视频数据和音频数据后,按照既定的参数再次进行转码,最后将视频流和音频流封装后输出。
解决方案:
视频处理的参数通常较复杂,例如,视频转码参数包括封装格式、编码格式、码率、分辨率以及帧率等数十个参数。为了简化视频处理任务参数,云点播将各类视频处理的参数集合固化成参数模板(如 转码模板),并用模板 ID 表示。
预置参数模板:对于常见的视频处理参数集合,云点播预置了一批参数模板,称为预置参数模板,模板清单请参见官网 预置参数模板列表。
自定义参数模板:可以通过控制台或服务端 API 自定义参数模板。
要把视频做转码都有哪些方式呢,首先方案一可以来试下直接在控制台操作:
步骤如下:
步骤一:首先我们得开通云点播服务;(若已开通云点播服务,请直接进入下一步骤。)
步骤二:上传需要“变身”的视频源文件;此处就用我已经下载好的视频来分享下吧~
步骤三:选择处理期望的类型→选择心仪的转码模板→单击确定即可;
步骤四:上述操作完成后,可点击管理查看转码状态及结果,获取播放链接:
方案二:也可以选择使用api来进行该操作,接口名称:ProcessMedia,官网文档链接:https://cloud.tencent.com/document/product/266/33427
这里就先展示下如何使用API3.0接口进行具体操作:
步骤一:对FileId为:5285890xxxxxxxxx进行转码操作,此处需自己的SecretId 与 SecretKey :
步骤二:填入上一步骤中转码后返回的Taskid,点击在线调用:
步骤三:任务执行成功后,可通过获取媒体详细信息查看资源详情:
步骤四:可查看使用模板信息及分辨率等:
这一趟下来还算顺利~一顿操作猛如虎之后终于如愿所偿阔以看霸道总裁啦~
另外,腾讯云点播也为用户预设了丰富且完备的系统模板,以满足用户对于目标视频在格式、码率、分辨率、加解密、水印等方面的普遍需求,对于不希望过多了解音视频复杂技术背景的用户来说,是最佳的选择。当然,对于那些在音视频技术上有着丰富积累的用户,系统也提供了可定制化的转码模板,以帮助他们满足复杂业务条件下的转码需求 。
其主要功能为以下几点:
分布式转码系统,支持分片转码、弹性可扩展转码资源,支持动态扩容,可满足各种场景的定制化转码需求。
主流格式全覆盖,支持多分辨率、多码率,灵活可配置转码模板,支持自定义水印。
智能分析视频元信息,根据结果智能选择最优的转码模板,并将转码结果及时回调给用户。
支持 H.265 转码、4K 转码、HDR 转码,支持视频转码为 GIF。
像刚刚上面的操作是比较顺利的情况,但是有没有不顺利的时候呢?——回答是:OfCourse~当然有~
拿个异常案例来分析一波儿:
{"appId":"130xxxxxx1","fileId":"5285890xxxxxxxxxxx4"}"
小七同学拿着这个fileId跑来问我说调用接口进行转码,转码也成功了,但是前端他咋就还是无法播放呢;
小七说此时已经进行自适应转码,模板ID为10,还是不能播放,几经周折还是找不到原因,我建议她可以检查下文件本身的分辨率再有就是仔细阅读下官网文档:
https://cloud.tencent.com/document/product/266/33476#.E9.A2.84.E7.BD.AE.E8.BD.AC.E8.87.AA.E9.80.82.E5.BA.94.E7.A0.81.E6.B5.81.E6.A8.A1.E6.9D.BF
原视频"fileId":"5285890xxxxxxxxxxx4"分辨率:width :480 height: 224 ,原来如此:原视频分辨率224<240,导致连一个子码流都转不出来,自然也就没办法播放,所以其实是转自适应码流失败了,OK~真相大白了~事实证明小七同学骗了我,无论是控制台还是调用api 接口,如果是低分辨率转高分辨率这种情况都转不出自适应码流来,所以图是假的,可能是小七同学播放时放错了链接。
这里还是非常值得注意下的,如果用预置转自适应码流模板进行转码,那么最小的短边都得大于240才行;那么问题又来了,因为有时候上传的视频高宽是不固定的,那这个我们需要怎么设置才能适应所有上传的视频呢?
相信很多小伙伴儿也都有这样的疑问,此时此刻,其实我们可以创建用户自定义转码模板,数量上限:100,按照原始流copy即可;官方文档可参考:https://cloud.tencent.com/document/product/266/33773
感兴趣的小伙伴儿快动手操作起来吧`~`
小结:
希望通过本篇文章分享的转码过程及案例分析,会对部分对转码操作跃跃欲试的同学有所帮助,有关更多更有趣的转码小实验我们下次可以做更深层次的研究与实践,本期的分享就先到这里啦~