作者:怎么又是你呀 | 来源:互联网 | 2023-05-17 10:32
本文主要分享【】,技术文章【短视频SDK方案调研】为【喜六六】投稿,如果你遇到音视频相关问题,本文相关知识或能到你。一、产品需求分析产品需求,我们要做什么,需要提供什么样的能力。二、竞品调
本文主要分享【】,技术文章【短视频SDK方案调研】为【喜六六】投稿,如果你遇到音视频相关问题,本文相关知识或能到你。
一、产品需求
分析产品需求,我们要做什么,需要提供什么样的能力。
二、竞品调研
抖音、快手、腾讯视频号、小红书
三、我们需要提供的能力
1、音频、视频采集(系统API、LiteAVSDK_Professional)
UGCRecord
2、音视频处理
a、视频剪辑,视频可以分割成若干段,可以从中删除某段(MediaCodec、FFmpeg、LiteAVSDK_Professional)
b、美颜、滤镜(LiteAVSDK_Professional)
美颜是针对人像进行处理,可以有效的提高人脸的一些识别性以及人脸的完美性,包括美白、磨皮、祛斑、面部重塑(瘦脸、大眼、隆鼻)等操作。
滤镜改变图片的色调,可以将不同色调的图片统一为同一个色调。
MediaCodec+MediaExtractor+MediaMuxer硬编方案不支持,需要集成旷视、火山引擎等第三方美颜SDK或者集成OpenCV做图像处理以及OpenGL做图像渲染。
FFmpeg不支持,需要集成旷视、火山引擎等第三方美颜SDK或者集成OpenCV做图像处理以及OpenGL做图像渲染。
c、视频变速,某段视频可以变速播放(MediaCodec、FFmpeg、LiteAVSDK_Professional)
d、视频添加文字、图片(LiteAVSDK_Professional、FFmpeg)
e、从直播截取视频片段(点播、回放、结构化片段),拉取m3u8文件获取ts片段地址,保存到本地
3、音频、视频播放器(LiteAVSDK_Professional、FFmpeg、ijkplayer)
5、网络协议,视频上下行(grpc、quic、WebSocket)、接口请求(http1.1)与服务端商定,断点续传问题?
6、视频本地存储(磁盘、内存)
7、打开相册、拍照、闪光灯、摄像头切换(系统API、LiteAVSDK_Professional)
8、添加字幕(AIT-ASR)
后期可能需要提供的能力:
1、音视频剥离,音频、视频独立(MediaCodec+MediaExtractor、FFmpeg)
2、视频、图片添加音效(MediaCodec+MediaExtractor、FFmpeg、LiteAVSDK_Professional)
3、视频高级编辑能力(MediaCodec+MediaExtractor、FFmpeg)
4、变声、语音合成(第三方SDK)
四、方案选择 一、腾讯云
专业版SDK已经包括了UGSV短视频SDK,可支持美颜、滤镜、录制拍摄、裁剪拼接、BGM音效、视频上传功能。
![](https://www.#.com/go/aHR0cHM6Ly9pbWctYmxvZy5jc2RuaW1nLmNuL2JkZDM1YmYxNDM5NzQ1OGU5ZmQyODI2MDU5YTI4NGZmLnBuZz94LW9zcy1wcm9jZXNzPWltYWdlL3dhdGVybWFyayx0eXBlX2QzRjVMWHBsYm1obGFRLHNoYWRvd181MCx0ZXh0X1ExTkVUaUJBNVphYzVZV3Q1WVd0LHNpemVfMjAsY29sb3JfRkZGRkZGLHRfNzAsZ19zZSx4XzE2)
二、FFmpeg软编方案
1、提取音频流
2、提取视频流
3、转换音频、视频的编码格式
4、转换容器格式(音频、视频的编码格式可以保持不变)
5、调整码率,降低视频文件体积
6、改变分辨率
7、添加音轨(mux)
将外部音频加入视频,比如添加背景音乐或旁白
ffmpeg \
-i input.aac -i input.mp4 \
output.mp4
8、截图(截取视频帧)
9、裁剪
截取原始视频里面的一个片段,输出为一个新视频。可以指定开始时间(start)和持续时间(duration),也可以指定结束时间(end)
10、为音频添加封面,可以将音频文件,转为带封面的视频文件
11、libavfilter,YUV像素数据加特效,滤镜效果
FFmpeg编译后的动态库:
![](https://www.#.com/go/aHR0cHM6Ly9pbWctYmxvZy5jc2RuaW1nLmNuLzE5ZjNkY2E5M2IyMDRkMGVhOTFmM2ZjNWM3MjcyMzVjLnBuZz94LW9zcy1wcm9jZXNzPWltYWdlL3dhdGVybWFyayx0eXBlX2QzRjVMWHBsYm1obGFRLHNoYWRvd181MCx0ZXh0X1ExTkVUaUJBNVphYzVZV3Q1WVd0LHNpemVfMjAsY29sb3JfRkZGRkZGLHRfNzAsZ19zZSx4XzE2)
libavcodec.so:负责音频(audio)、视频( video)解码和编码,yuv ↔h264/h265、pcm <->aac, armeabi-v7a库3.9MB,arm64-v8a库3.8MB。
libavfilter.so:滤镜,也就是音频、视频处理的各种小工具,一个 filter 的输出可以作为另一个 filter 的输入,各种滤镜组合在一起可以实现音视频倍速、水平翻转、裁剪、加方框、叠加文字等效果,如overlay 这个滤镜可实现图像的覆盖,transport 这个滤镜可以实现图像的旋转。armeabi-v7a库1.9MB,arm64-v8a库2.2MB。
libavformat.so:负责封装(mux)和解封装(demux),armeabi-v7a库1.7MB,arm64-v8a库1.8MB。
libavutil.so:数学函数、字符串操作、内存管理、日志输出,armeabi-v7a库432KB,arm64-v8a库383KB。
libpostproc.so:用于后期效果处理,如图像的去块效应,armeabi-v7a库46KB,arm64-v8a库47KB。
libswresample.so:负责的音频重采样、格式转换、音频混合,armeabi-v7a库83KB,arm64-v8a库75KB。
libswscale.so:负责图像像素格式的转换,例如YUV与RGB之间的转换以及图像大小缩放(例如640x360拉伸为1280x720),armeabi-v7a库362KB,arm64-v8a库350KB。
三、MediaCodec+MediaExtractor+MediaMuxer硬编方案
1、音视频录制、拍照
MediaRecord、AudioRecord系统API
2、音视频编码、处理
MediaCodec+MediaExtractor+MediaMuxer+mp4parser
a:裁剪
b:加速
c:添加音轨
d:提取音频流、视频流
3、播放器(ijkplayer)
四、方案选择
一期采用LiteAVSDK_Professional现有能力,投入人力少、稳定性高、无多余收费,二期需要提供音视频深处处理能力再基于FFmpeg做二次开发。
LiteAVSDK_Professional、FFmpeg都可提供音视频采集、编辑、裁剪、播放等能力,都可以满足产品一期需求,但各有优劣:
LiteAVSDK_ProfessionalFFmpeg硬编码优势
1、采集、编辑、播放是现有能力,只需关注业务逻辑即可,投入人力少
2、不需要购买其他lisence,不会新增花销
3、稳定性高、机型兼容性问题很少
4、监控、溯源机制有成熟体系
1、可基于FFmpeg做二次开发,提供音频深度处理能力,后期产品需求扩充也能处理
1、系统API+编码标准+芯片硬编,音视频编码、处理速度会大大加快
2、可提供更多、更丰富的音视频处理能力
劣势
1、如果后期产品需求扩充,无法提供音频深度处理能力,只能使用UGSV现有接口
2、高级美颜、特效能力需要SDK升级到企业版,而且需要额外收费
1、SDK架构会多两层,采集、编辑、播放底层能力(.so、.a),封装视频频接口(Java、OC),投入人力较多
2、包体积会进一步增大,armeabi-v7a需要增加8.2M,arm64-v8a需要增加8.5M,降低包体积的话需要裁剪FFmpeg以及去符号化
3、动态库的内存泄漏、native崩溃监控机制需要建立
1、技术挑战较大,投入人力过多
2、包体积进一步增大
本文《短视频SDK方案调研》版权归喜六六所有,引用短视频SDK方案调研需遵循CC 4.0 BY-SA版权协议。