
如果一张图片胜过千言万语,那么视频呢?

-
客户端从MediaCodec中使输入缓冲区出队,并在可用时接收。
-
客户端用帧数据填充缓冲区,并将其连同元数据(起始索引,字节数,帧显示时间,标志)一起释放回MediaCodec。
-
MediaCodec处理数据。
-
客户端使MediaCodec的输出缓冲区出队,并在可用时接收一个缓冲区。
-
客户端使用输出数据并将缓冲区释放回MediaCodec。


-
视频轨道代码转换器可以调整帧大小并更改编码比特率。如有必要,它还可以使用客户端提供的 滤镜来修改帧像素。它在Surface模式下同时运行编码器和解码器编解码器,并使用OpenGL将解码器的输出渲染到编码器的输入上。
-
音轨转码器只能更改比特率(目前)。
-
所有所有非视频和非音频帧都使用直通轨道转码器按原样写出

-
客户端必须提供唯一的String requestId,这是转码请求的标志。由于LiTr接受多个代码转换请求,因此需要一种方法来识别每个代码转换请求。
-
应该从实例化MediaTranscoder时使用的上下文访问源视频URI。转码时会保留源轨道计数和顺序。
-
视频将被转换为H.264,并以提供的文件路径保存在MP4容器中。
-
目标视频和音频格式是设置了所有所需参数的Android MediaFormat的实例。该格式将应用于该类型的所有轨道。空格式表示该类型的轨道不会被转码,而是原样写出。
-
将使用所有代码转换更新来调用侦听器:开始,进度完成,错误,取消。每个侦听器回调中都会提供一个请求令牌。
-
粒度是所需的进度更新数量。默认值为100(以匹配在UI中显示的百分比)。传递0将在每个帧上回调。
-
GlFilter的可选列表将您的自定义修改应用于视频帧。
-
读取编码的源数据。
-
解码编码的源数据。
-
将解码器输出渲染到编码器输入上。
-
编码渲染的数据。
-
编写编码的目标数据。

LiveVideoStackCon 2020 讲师招募
2020年LiveVideoStackCon将持续迭代,4月25日-26日在上海,9月11日-12日在北京,11月在旧金山。欢迎将你的技术实践、踩坑与填坑经历、技术与商业创业的思考分享出来,独乐不如众乐。请将个人资料和话题信息邮件到 speaker@livevideostack.com 或点击【阅读原文】了解成为LiveVideoStackCon讲师的权益与义务,我们会在48小时内回复。