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的费用远远小于您人力成本和时间成本的费用^_^。
分享到:
相关推荐
这个“android视频剪辑demo”就是一个很好的学习资源,由某位经验丰富的开发者分享,旨在帮助其他开发者快速理解和实践Android视频剪辑技术。 在Android应用开发中,视频剪辑通常涉及到多媒体处理,这包括读取、...
2. **短视频功能实现**:项目涵盖了短视频上传、播放、编辑、分享等功能。这涉及到了多媒体处理技术,如视频编码、解码、压缩,以及音视频同步等。你需要了解如何使用uni-app的媒体处理API来实现这些功能。 3. **...
根据给定文件的信息,我们可以总结出以下与Android视频开发相关的知识点: ### 一、Android视频开发概述 在当今数字化时代,视频应用已经成为人们日常生活中不可或缺的一部分。随着移动互联网技术的发展,越来越多...
【社交附近交友资源类短视频安卓苹果双端原生源码】是一个专为移动平台设计的原生应用开发项目,旨在构建一个集社交、短视频分享、附近交友功能于一体的平台。此项目覆盖了Android和iOS两大主流操作系统,采用原生...
6. **两年经验分享**: - 一位有两年经验的开发者分享的内容往往更注重实践,包含他们在实际项目中遇到的问题及解决方案。 - 可能包括最佳实践、避免陷阱的经验,以及如何快速适应不断变化的Android生态系统。 ...
【呆错短视频系统 v1.4.5】是一款专为创建和分享短视频而设计的平台,此版本为1.4.5,据描述所示,它可能由江西新余电信提供服务支持。该系统可能集成了视频上传、编辑、分享、播放和社交互动等多种功能,以满足用户...
以上仅是部分Android开发经典Demo的介绍,它们不仅包含了丰富的技术知识点,还提供了实用的开发技巧和经验分享。通过学习这些Demo,开发者不仅可以深入了解Android开发的核心技术,还能获得灵感,提高自己的开发水平...
【标题】"趣拍sdk_android_1.2.1" 是一个专为Android平台设计的短视频录制SDK,它旨在帮助开发者快速集成到自己的应用中,实现类似微信的小视频拍摄功能。趣拍SDK提供了完整的视频录制、编辑以及分享的解决方案,让...
《安卓软件清视频编辑 v5.9.7》是一款专为Android用户设计的高效视频编辑应用,旨在提供简便而功能强大的视频处理...如果你是一名热衷于分享生活瞬间或创作短视频的Android用户,这款应用无疑是你不可或缺的得力助手。
3. **Android开发**:虽然微信小程序不直接涉及Android开发,但考虑到短视频可能包含上传和分享到Android设备的功能,Android知识也是重要的辅助技能。Android开发者需要掌握Java或Kotlin语言,理解Android SDK,...
根据提供的文件信息,我们可以推断出这是一套关于Android开发的教学视频资料,由知名讲师“老罗”主讲的第一季课程。接下来,我们将基于这些信息提取相关的知识点,并尽可能详细地展开说明。 ### Android开发基础 ...
由于Android平台被推出的时间才一年左右,了解Android平台软件开发技术的程序员还不多,如何迅速地推广和普及Android平台软件开发技术,让越来越多的人参与到Android应用的开发中,是整个产业链都在关注的一个话题...
通过这款应用,即使是没有专业视频编辑经验的用户也能快速上手,为自己的故事、信息或者创意添加动态视觉元素,提高吸引力。 该应用的核心功能包括: 1. **一键制作**:用户只需输入文字,应用就能自动生成翻转...
《Android多媒体编程从初学到精通》是一本专为Android开发者设计的书籍,旨在帮助读者深入理解和熟练掌握在Android平台上进行多媒体编程的各种技术和实践。作者苗忠良等人通过丰富的实例和详细讲解,引领读者逐步...
在Android应用开发中,图片选择是一个常见的功能需求,用户可能需要从手机相册中选取照片用于上传、编辑或者分享。Android-imagepicker是一个专门为Android平台设计的图片选择器库,它提供了一种简单、易用的方式来...
1. **丰富的编辑工具**:小影PRO提供了全面的视频编辑功能,包括剪辑、合并、分割、倒放、慢动作等,让用户可以随心所欲地调整视频内容。此外,它还支持多轨音频,使你能够为视频添加背景音乐、配音或音效,增强听觉...
《威力酷剪 v6.5.1 for Android:运动摄影玩家的专业视频编辑工具》 威力酷剪是一款专为运动摄影爱好者设计的视频编辑应用,版本号为v6.5.1,特别针对Android操作系统进行了优化。它集成了丰富的功能和易用性,使得...