最近上海的疫情稍微好一点了,可以去公司办公了,在家憋了这么久,学会了自己做饭,从原来的只会下面条和炒饭到现在挑战各种高难度的菜,厨艺见长。哈哈,言归正传,本期我们继续讨论VideoEditor中一个重头戏——导出视频。毕竟我们剪辑视频,添加各种好看和有趣的特效还有音乐,都是为了将视频导出,导出视频有四个重要的点:
- 视频导出有哪些重要的参数
- 视频导出的流程
- 如何优化视频导出的速度
- 如何优化导出视频的清晰度
其中后两个点【如何优化视频导出的速度】和【如何优化导出视频的清晰度】我们放在后面讨论,因为这两点可以展开比较丰富的内容。本文的篇幅比较有限,就不过多地讨论了。我们主要谈谈第一点和第二点。下面我们查看一下一个视频的基本参数,如下:
代码语言:javascript复制Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'test.mp4':
Metadata:
major_brand : mp42
minor_version : 1
compatible_brands: mp41mp42isom
creation_time : 2022-01-20T02:18:43.000000Z
Duration: 00:00:10.00, start: 0.000000, bitrate: 10164 kb/s
Stream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 1080x1080 [SAR 1:1 DAR 1:1], 10156 kb/s, 24 fps, 24 tbr, 600 tbn (default)
Metadata:
creation_time : 2022-01-20T02:18:43.000000Z
handler_name : Core Media Video
vendor_id : [0][0][0][0]
Stream #0:1[0x2](und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 2 kb/s (default)
Metadata:
creation_time : 2022-01-20T02:18:43.000000Z
handler_name : Core Media Audio
vendor_id : [0][0][0][0]
从中我们可以得到下面一些基本的参数:
代码语言:javascript复制基本信息:
- 名称
- 封装格式
- 视频时长
视频:
- 分辨率:宽 和 高
- 编码格式
- 视频码率
- 帧率
音频:
- 编码格式
- 采样率
- 声道数
- 音频码率
表面上的参数有上面这些,其他的像色彩空间这些可以不需要过度讨论,毕竟手机导出视频不能要求过高。还有一些隐含的参数,例如GOP的大小,例如视频画面的是FIT还是FILL。(GOP就是Group of Picture,GOP范围内的视频是一组独立的帧序列),精细化的视频剪辑甚至可以设置B帧和P帧的信息,其实我觉得对视频来剪辑视频的话,可以不用考虑这么多。对于普通的剪辑爱好者而言,上面这些导出参数已经足够了。
了解了视频导出的参数,我们简单谈一下视频导出的流程。视频导出算输出,那么输入是什么?输入的是一些视频(图片)和音乐的组合,其中有对视频(图片)的特效处理,也有对声音的特殊处理。例如我想在视频帧(图片)上加上水印、滤镜、动画等效果,对声音加上倍速、变声等操作,然后导出的视频上带上我这些操作。实际上就是在导出的过程中实时地处理这些应用的效果。
上面是视频导出的流程,确实流程比较复杂,我这里只列出了视频的导出流程,音频的导出流程比较类似,图已经比较大了,在手机上也看不太清楚,就没有把音频的画出来,如果有想详细了解的,可以私聊一下。关于音频的特殊处理我前面几篇文章也着重讨论了一下,大家可以出门左转看看。
视频导出除了基本的流程之外,还有两个重要的议题:
- 视频的导出速度
- 导出视频的清晰度
这两个问题也是用户非常关心的问题,目前主流的剪映和秒剪都在不断地优化过程中,当然是有很多优化的思路和方案的,我们在平时的工作中也遇到过。下面两篇文章会详细向大家介绍一下优化的思路。
疫情暂时告一段落,希望大家一切都好。