概述
本文记录在播放端/采集端(视频编辑工具)录制音视频及上传过程中遇到的一些问题,以及优化点。
技术点及原理
- 基本实现方式——播放端分为屏幕录制和媒体内容录制两种情况。屏幕录制是指业务层捕获屏幕(或渲染器)数据,叠加声卡收到的音频数据,编码封装完成。底层录制是指将解封装后、解码前的音视频数据直接转封装为指定的视频格式。这俩的区别是,一个用的是解码后的数据,一个用的是解码前的数据,是否要重新做一次编码。采集端目前想到的就是直接用编码后的数据。
基本流程
问题
- 录制的起始位置:类似seek,必须得是上层指定的录制时间点附近的一个视频I帧开始。
- 音画同步:如果是解码后从渲染器和声卡拿到的数据,那音画同步是比较简单的,但如果是解码前的数据呢
- 录制异常中断,存储的文件无法播放:比如设备异常断电,crash等情况,如果录制文件存储为mp4,那么moov box中数据缺失,残缺文件中保存了一个个mdat box,moov可能存在或不存在,可以使用之前录制记录中的采样率、帧率等解码信息尝试读packet,解码再重新编码。(默认残缺文件是音画同步的)。