热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

短视频SDK方案调研

本文主要分享【】,技术文章【短视频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音效、视频上传功能。

二、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、libavfilterYUV像素数据加特效,滤镜效果

FFmpeg编译后的动态库:

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版权协议。


推荐阅读
  • 在这分布式系统架构盛行的时代,很多互联网大佬公司开源出自己的分布式RPC系统框架,例如:阿里的dubbo,谷歌的gRPC,apache的Thrift。而在我们公司一直都在推荐使用d ... [详细]
  • 最简便的 JavaScript 代码检查工具安装方式
    前两天发了一篇用mingw编译javascriptv8,讲述我为了在Windows下给javascript做lint检查,费劲去编译google的jav ... [详细]
  • Istio是一个用来连接、管理和保护微服务的开放平台。Istio提供一种简单的方式来为已部署的服务建 ... [详细]
  • 前端简史之纵横:Node东出
    引💡Ajax的出现,带来了jQuery时代,而jQuery时代也伴随着Node风暴淡淡退出了历史舞台。如果说Ajax给前端带来了从网页静 ... [详细]
  • 说明:主要是基于ghostyu网友整理的《 armmini2440基于v4l2ffmpegx264的视频远程监控》。自己做了一遍,遇到不少问题,就整理记录下来。 1、平台硬件:ar ... [详细]
  • ffmpeg【百度百科】
    FFmpeg是一个开源免费跨平台的视频和音频流方案,属于自由软件,采用LGPL或GPL许可证(依据你选择的组件)。它提供了录 ... [详细]
  • 如果说以比特币为代表的货币区块链技术为1.0,以以太坊为代表的合同区块链技术为2.0,那么实现了完备的权限控制和安全保障的Hyperledger项目毫无疑问代表着区块链技术3.0 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 使用eclipse创建一个Java项目的步骤
    本文介绍了使用eclipse创建一个Java项目的步骤,包括启动eclipse、选择New Project命令、在对话框中输入项目名称等。同时还介绍了Java Settings对话框中的一些选项,以及如何修改Java程序的输出目录。 ... [详细]
  • 阿里首席架构师科普RPC框架
    RPC概念及分类RPC全称为RemoteProcedureCall,翻译过来为“远程过程调用”。目前,主流的平台中都支持各种远程调用技术,以满足分布式系统架构中不同的系统之间的远程 ... [详细]
  • 微服务之总体架构篇
    一、单体架构存在的问题缺点:1、难以维护:当单体应用业务不断迭代后代码量非常臃肿,模整个项目非常复杂,每次更改代码都可能带来新的bug;2、部署项目麻烦:庞大之后项目部署效率 ... [详细]
  • 阿里云监控URL的配置笔记
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了阿里云监控URL的配置笔记相关的知识,希望对你有一定的参考价值。有很多细节需要记录 ... [详细]
  • golang反射,golang反射性能
    本文目录一览:1、关于反射2、尝试用golan ... [详细]
author-avatar
怎么又是你呀
你讲话咧,撸起袖子加油干!!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有