`
LanSoSdk
  • 浏览: 9827 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

android平台短视频技术之 视频编辑的经验分享

 
阅读更多
android平台短视频技术之 视频编辑的经验分享.


提示一: 各位看官,这里分享的是视频编辑,即剪切/拼接/分离/合并/涂鸦/标记/叠加/滤镜等对视频的编辑操作.不是流媒体网络播放等功能,请注意.

提示二: 这些文字90%的为普及知识,10%为宣传我们的SDK,因为分享别人,有利自已,才是良性循环,才可以让我们持续分享,毕竟只分享,不有益很难持续下去.要养家糊口啊^_^.

提示三:我们是android视频编辑的专业团队,以下分享的文字,完全实际经验总结,每一个知识点您都可以在我们的SDK或开源的工程中验证.
我们的SDK:https://github.com/LanSoSdk/LanSoEditor_common(收费的,但写了30个详细注释,适合初学者学习,可以用来练手)
开源的工程:https://github.com/WritingMinds/ffmpeg-android(免费的,需要自己编译,需懂linux和ndk)
这两个工程您都可以测试,学习后, 然后再决定采用何种方式对您的项目最有利。

正文:
1, 做android的视频编辑,一定要从编辑ffmpeg开始吗?
完全不是。需求是最重要的,android从4.1开始提供了MediaCodec类,你要做视频提取图片,用mediacodec或mediaextractor就可以;你做视频裁剪,用MediaCodec也可以;你要做视频缩放,用MediaCodec+ Opengl是最好的选择;完全不一定用ffmepg来做。
2,那么为什么很多用ffmpeg来完成?
因为ffmpeg封装了很多的格式,使用起来比较灵活,简单,兼容性好,他的命令行可以帮你节省大量的时间,比如视频裁剪 ffmpeg -ss 10 -t 20 -i INPUT -acodec copy -vcodec copy OUTPUT;这样就完成了,不再需要您自己去编写大量的代码。
3,ffmpeg可以帮我完成大部分的视频编辑功能吗?
没有优化的ffmpeg在功能可以,但性能不行。由于手机CPU的性能的限制,有些命令处理起来比较慢,比如overlay命令,colorchannelmixer命令 eq命令,libx264编码功能,这样你功能上虽然实现了,但处理一个10秒的视频,要花费2分钟,这样的功能,估计很难在APP里使用。我们的SDK针对这样的情况,做了硬解码器和硬编码器,完全加速ffmpeg的执行,这个也是我们SDK的核心所在。
4,ffmpeg我怎么开始做呢?
    如果您是初学者,建议不要一上来就编译ffmpeg,因为网上github上编译好的工程太多了,你的目的是学习使用到你项目中。再说了,如果你要用ffmpeg实现一些复杂的运算,即使你花费一周时间编译好了,结果发现功能可以满足,但处理起来太慢了,根本无法使用,事倍功半,也是没意义的。建议用上面推荐的两个链接,先学习了再说,即使收费的版本,但ffmpeg的命令代码是公开的,运行是不变的,只是有时间和其他限制而已,学习ffmepg是没有阻碍的。建议先学习起来再说,毕竟熟悉了,才可以灵活的使用。
5,ffmpeg哪些功能执行较快,并且免费工程里也可以实现?
         像普通的音视频剪切,分离,合成,拼接,封装,格式转换这些是可以的。因为没有用到视频数据解码和编码操作,执行起来很快;比如秒拍中音乐那个功能,他用到的命令有: 音频裁剪,把视频中的音频分离,然后把新的音频在和视频合并;用到音量调节,也可以用ffmpeg的amixer来实现;再比如秒拍中的视频截取,其实就是用ffmpeg的截取命令来实现的;再比如你直接把MediaCodec编码好的H264裸码流保存成文件,你想封装成mp4格式,让别的播放器也可以播放,则用ffmpeg的封装命令就可以实现,不需要自己去封装。如果您的项目中只用到这些,则免费版本就可以满足,完全不需要收费的SDK。
6,普通的ffmpeg哪些功能较慢,不适合使用?
         在一些需要用到操作视频画面像素的场合,比如用overlay做叠加,colorchannelmixer或eq做滤镜,用scale缩放,用到视频解码-->处理-->再编码的场合。
         这些功能的大概工作流程是:
         第一步解码,如果采用硬件解码,则会快很多,如果用软解码,即使经过NEON批处理优化,处理速度还是不够理想;
         第二步处理,假如您用到的是colorchannelmixer这个命令,他的工作原理是事先把255个像素值根据您的设置全部放到一个表里,在处理一个像素时,利用查表法来得到处理后的值,虽然快一些,但和用opengl比较起来还是很慢,毕竟这个是一个像素一个像素的去做,而opengl则采用矢量并行处理,速度上完全不能比;
         第三步:视频编码,ffmpeg本身不带H264视频编码器,需要使用外部的,比如libx264,libopenh264这些,但也是软编码。
         你的视频每帧都需要经过这三步来做,解码,处理,再编码。这样下来,假如20秒的视频,每秒25帧,则是500帧,如果不用硬件加速来做,速度上估计很难完成。
         我们的SDK针对这样的情况,做了硬解码和硬编码,加速ffmpeg的执行,让它跑快一些,这个也是我们SDK的核心所在。
7,有没有好的办法,又想实现功能,又想用免费版本的?
      有。 用MediaCodec+ OpenGL的形式来做,把ffmpeg一些处理慢的操作,统统用MediaCodec+OpenGL来实现,比如滤镜,比如叠加,比如缩放等,我们高级版本中的大部分操作也是用opengl来做的,我们做了大量的工作,让你像操作一个ArrayList类一样,增加一个媒体,删除一个媒体,简单易用。
     
8,如果我们自己做,需要懂得哪些知识:
     首先你要从战略上轻视它^_^,毕竟又不是让你去搞科研,去搞高精尖,去获得诺贝尔奖。这是一项技术,一项已经很成熟的技术,类似学习android的UI,学习java的编程一样的一项技术,需要的是在这方面知识的积累和花时间去做的事情。如果你是初学者,那需要花很长的时间去学习,去摸索的事情,然后精通的过程。
     再者你就要从战术上重视它^_^, 涉及到的知识点有:
      8.1 linux基本操作,在这里强烈不推荐在windows下用cygwin来搞,第一很难行通,第二事倍功半。
      8.2 ndk和jni,gcc的知识,因为你要做的最终要封装成java的一个类和方法,让做UI的工程师调用,并需要懂得一些java的编程,这样你调试起来会快一些。
      8.3 视频的知识。这个必不可少,也不用多说,毕竟做的是视频编辑,像视频格式,音频,pcm,h264的基本知识,视频码率,分辨率,帧率,ffmpeg的常用命令等等。
      8.4 懂得视频知识后,强烈推荐完全精通MediaCodec和视频播放原理,因为这个可以帮你节省大量的时间去实现一个功能。

总结:不要一上来就编译,学以致用才重要,用免费的版本消耗的是人力成本和时间成本,用我们的SDK可以加速您项目的开发,再说我们的SDK的费用远远小于您人力成本和时间成本的费用^_^。
分享到:
评论
4 楼 LanSoSdk 2017-12-15  
蓝松短视频SDK更新至2.7.11
主打 :增加绿背景抠图, 实现场景转移功能(电影演员在绿幕前表演).
实时音量调节.
声音容器的实时回调,实时调节.
应客户要求,增加优化的其他代码。

(绿幕实时抠图, 在绿幕前录制, 背景可以是:长城,草原,沙滩,夏威夷海,巴厘岛等等,录制出来的视频,即您在长城上, 草原上,沙滩上,巴厘岛的视频)
测试演示地址:https://github.com/LanSoSdk/LanSoEditor_advance
3 楼 LanSoSdk 2017-09-26  
-----------------------------2017年09月25日更新至2.6.6

我们的sdk专业版本已经更新至2.6.6.
新增子图层功能, 你可以任意的把当前画面复制出多个子画面, 从而实现灵活出窍, 炫目, 幻影,叠加,重复等视频效果



-----------------------------2017年9月5日更新至 2.6.0

当前版本是2.6.0
1,增加BitmapPad容器, 类似DrawPad是处理画面的容器一样, BitampPad是处理图片的容器.
2,增加AudioPad容器, 是处理声音的容器, 可以在任意时刻增删声音, 后期增加变声,重复,滤镜等功能.
3,优化DrawPad的处理速度, 前台增加滤镜后的处理速度提高一倍.
4,图层的父类Layer 增加画面区域显示功能,圆形显示, 你可以把视频慢慢展开, 花样展开等操作, 可和移动缩放旋转同时使用.
5,摄像头图层CameraLayer增加多画面显示功能, 您可以创建多个子图层, 从而同时显示多个Camera的画面.
6,优化其他代码和 增加客户需求的一些小细节功能.
2 楼 LanSoSdk 2017-09-05  
我们的sdk已经更新到2.6.0,更新内容是:
1,增加BitmapPad容器, 类似DrawPad是处理画面的容器一样, BitampPad是处理图片的容器.
2,增加AudioPad容器, 是处理声音的容器, 可以在任意时刻增删声音, 后期增加变声,重复,滤镜等功能.
3,优化DrawPad的处理速度, 前台增加滤镜后的处理速度提高一倍.
4,图层的父类Layer 增加画面区域显示功能,圆形显示, 你可以把视频慢慢展开, 花样展开等操作, 可和移动缩放旋转同时使用.
5,摄像头图层CameraLayer增加多画面显示功能, 您可以创建多个子图层, 从而同时显示多个Camera的画面.
6,优化其他代码和 增加客户需求的一些小细节功能.
下载地址: https://github.com/LanSoSdk/LanSoEditor_advance
1 楼 LanSoSdk 2017-09-05  
我们的sdk已经更新到2.6.0,更新内容是:
1,增加BitmapPad容器, 类似DrawPad是处理画面的容器一样, BitampPad是处理图片的容器.
2,增加AudioPad容器, 是处理声音的容器, 可以在任意时刻增删声音, 后期增加变声,重复,滤镜等功能.
3,优化DrawPad的处理速度, 前台增加滤镜后的处理速度提高一倍.
4,图层的父类Layer 增加画面区域显示功能,圆形显示, 你可以把视频慢慢展开, 花样展开等操作, 可和移动缩放旋转同时使用.
5,摄像头图层CameraLayer增加多画面显示功能, 您可以创建多个子图层, 从而同时显示多个Camera的画面.
6,优化其他代码和 增加客户需求的一些小细节功能.

相关推荐

    android视频剪辑demo

    这个“android视频剪辑demo”就是一个很好的学习资源,由某位经验丰富的开发者分享,旨在帮助其他开发者快速理解和实践Android视频剪辑技术。 在Android应用开发中,视频剪辑通常涉及到多媒体处理,这包括读取、...

    uni-app短视频应用开发项目源码

    2. **短视频功能实现**:项目涵盖了短视频上传、播放、编辑、分享等功能。这涉及到了多媒体处理技术,如视频编码、解码、压缩,以及音视频同步等。你需要了解如何使用uni-app的媒体处理API来实现这些功能。 3. **...

    安卓视频开发2020Android视频开发2020.txt

    根据给定文件的信息,我们可以总结出以下与Android视频开发相关的知识点: ### 一、Android视频开发概述 在当今数字化时代,视频应用已经成为人们日常生活中不可或缺的一部分。随着移动互联网技术的发展,越来越多...

    社交附近交友资源类短视频安卓苹果双端原生源码

    【社交附近交友资源类短视频安卓苹果双端原生源码】是一个专为移动平台设计的原生应用开发项目,旨在构建一个集社交、短视频分享、附近交友功能于一体的平台。此项目覆盖了Android和iOS两大主流操作系统,采用原生...

    android JAVA源码,工具,视频,文件。经验,2年收藏网盘分享

    6. **两年经验分享**: - 一位有两年经验的开发者分享的内容往往更注重实践,包含他们在实际项目中遇到的问题及解决方案。 - 可能包括最佳实践、避免陷阱的经验,以及如何快速适应不断变化的Android生态系统。 ...

    archive_ 呆错短视频系统 v1.4.5 [江西新余电信].zip.zip

    【呆错短视频系统 v1.4.5】是一款专为创建和分享短视频而设计的平台,此版本为1.4.5,据描述所示,它可能由江西新余电信提供服务支持。该系统可能集成了视频上传、编辑、分享、播放和社交互动等多种功能,以满足用户...

    Android开发各种demo集合

    以上仅是部分Android开发经典Demo的介绍,它们不仅包含了丰富的技术知识点,还提供了实用的开发技巧和经验分享。通过学习这些Demo,开发者不仅可以深入了解Android开发的核心技术,还能获得灵感,提高自己的开发水平...

    趣拍sdk_android_1.2.1

    【标题】"趣拍sdk_android_1.2.1" 是一个专为Android平台设计的短视频录制SDK,它旨在帮助开发者快速集成到自己的应用中,实现类似微信的小视频拍摄功能。趣拍SDK提供了完整的视频录制、编辑以及分享的解决方案,让...

    安卓软件清视频编辑 v5.9.7.rar

    《安卓软件清视频编辑 v5.9.7》是一款专为Android用户设计的高效视频编辑应用,旨在提供简便而功能强大的视频处理...如果你是一名热衷于分享生活瞬间或创作短视频的Android用户,这款应用无疑是你不可或缺的得力助手。

    基于java的短视频微信小程序源码数据库.zip

    3. **Android开发**:虽然微信小程序不直接涉及Android开发,但考虑到短视频可能包含上传和分享到Android设备的功能,Android知识也是重要的辅助技能。Android开发者需要掌握Java或Kotlin语言,理解Android SDK,...

    Android开发视频(老罗第一季)

    根据提供的文件信息,我们可以推断出这是一套关于Android开发的教学视频资料,由知名讲师“老罗”主讲的第一季课程。接下来,我们将基于这些信息提取相关的知识点,并尽可能详细地展开说明。 ### Android开发基础 ...

    Google.Android开发入门与实战

     由于Android平台被推出的时间才一年左右,了解Android平台软件开发技术的程序员还不多,如何迅速地推广和普及Android平台软件开发技术,让越来越多的人参与到Android应用的开发中,是整个产业链都在关注的一个话题...

    让文字动起来 一键制作生成翻转文字动画视频 for Android .rar

    通过这款应用,即使是没有专业视频编辑经验的用户也能快速上手,为自己的故事、信息或者创意添加动态视觉元素,提高吸引力。 该应用的核心功能包括: 1. **一键制作**:用户只需输入文字,应用就能自动生成翻转...

    《Android多媒体编程从初学到精通].苗忠良等.扫描版.pdf》

    《Android多媒体编程从初学到精通》是一本专为Android开发者设计的书籍,旨在帮助读者深入理解和熟练掌握在Android平台上进行多媒体编程的各种技术和实践。作者苗忠良等人通过丰富的实例和详细讲解,引领读者逐步...

    Android-imagepicker(图片选择器)

    在Android应用开发中,图片选择是一个常见的功能需求,用户可能需要从手机相册中选取照片用于上传、编辑或者分享。Android-imagepicker是一个专门为Android平台设计的图片选择器库,它提供了一种简单、易用的方式来...

    小影PRO v6.0.5 for Android 快速专业制作好玩 有趣 有故事的视频应用.rar

    1. **丰富的编辑工具**:小影PRO提供了全面的视频编辑功能,包括剪辑、合并、分割、倒放、慢动作等,让用户可以随心所欲地调整视频内容。此外,它还支持多轨音频,使你能够为视频添加背景音乐、配音或音效,增强听觉...

    威力酷剪 v6.5.1 for Android 专为运动摄影玩家量身打造的视频创作软件.rar

    《威力酷剪 v6.5.1 for Android:运动摄影玩家的专业视频编辑工具》 威力酷剪是一款专为运动摄影爱好者设计的视频编辑应用,版本号为v6.5.1,特别针对Android操作系统进行了优化。它集成了丰富的功能和易用性,使得...

Global site tag (gtag.js) - Google Analytics