美文网首页
视频开发徜过的那的坑

视频开发徜过的那的坑

作者: 玛格纳斯 | 来源:发表于2017-09-07 10:10 被阅读63次

因为开发期间的任务重,一直都没有停下来记录些什么,那些徜过的坑坑,时为艰难,现在项目难点都已实现和优化了。

因此非常的有必要来缕一缕那些折磨着的我深坑。

首先说一下我的开发背景:

视频处理运用的是北京炫一下公司(秒拍)编译的ffmpeg库  封装的UilityAdapter.

在了解他的SDK前 后有注:

************************************************************************************

 在这个项目中主要是采用的是北京炫一下公司出品的VCamera,其自己编译了ffmpeg,生成.so文件,

* 然后在java层进行封装,其最主要的特点是提供了UtilityAdaptert 中的FFmpegRun 方法用于执行 ffmpeg 命令 ,

* 便于开发者自己编写ffmpeg命令行进行怄气处理。

但是在使用的过程中,遇到了以下几个问题:

1,该封装包在某些程度上缺乏灵活性,比如比特率在底层写死了,无法进行修改,利用其提供的合成视频函数,

视频分辨率无法改变,只能通过继承jar中的FFMpegUtils类,重写合成视频的函数。

2,利用ffmpeg命令行合成一个音频与一个视频,音频会覆盖视频中的原声道,音频PCM被替换,好像只有单声轨。

3,h264编码与aac编码合成无效

4,连接多个音频,采用命令行无效

5,延迟音频的声道时,只能合成一个音频到视频中,合成多个音频,只保留一个声轨。

************************************************************************************

先从最近一下坑点往前缕 :

坑点 一:   2,利用ffmpeg命令行合成一个音频与一个视频,音频会覆盖视频中的原声道,音频PCM被替换,好像只有单声轨。

是的,如果是正常用百度的一般的ffmpeg 命令去处理 

String cmd1 = "-i video_input.mp4 -i audio_Input.mp3 -vcodec copy -acodec copy output.mp4"; 

String cmd2 = "-i audio_Input.mp3 -i video_input.mp4 -filter_complex amerge -c:a libmp3lame -q:a 4 output.mp4"; 

等等 ,在电脑上其实的没有问题的。被移植到手机上。以上的命令就不起做用了。 也是很蒙逼的。再者看到上的注2.我一直以为这个sdk生成时候 就已经将部分的功能阉割掉了。于是很长一段时间想要放弃掉UilityAdapter 这个编译的PEG库。但又找不到更好的可以替代的。在寻找更合适的SDK期间 发现了一个 全型对  ffmpeg库移植到android 的项目:

https://github.com/WritingMinds/ffmpeg-android-java因为是全移植所以SDK包肯定会很大。一开始就没有什么好感。但还是偿试了一下 cmd1 cmd2。发现,这个库也是同样的结果。运行可以功能 但只能合成一个音频到视频中,合成多个音频,只保留一个声轨。将原音消去了。与在windows下执行效果并不相同。这个时候我其实是快已经放弃了给视频+背景音(不消原音)的需求。 接下来我比较了同的的peg命令在ffmpeg-android-java 与我项目中UilityAdapter 库的运行速度。 得到的结果就是UilityAdapter库的速率上比ffmpeg-android-java 快两倍多。但ffmpeg-android-java库的很明显的优点是   它全程监控了ffmpeg running.  可以看到它的速率 及 进度。

更令人愉快的是 如果是运行失败了,这个库可以看到peg命令运行失败的原因。

接下来任务完成不了。又没有别的事,于是goole去看看这个世界有没有人与我有过同样的烦恼。于是https://superuser.com/questions/712862/ffmpeg-add-background-audio-to-video-but-not-completely-muting-the-original-audi/1247848#肯定是有人和我一模一样的烦恼。哈哈,但是好像他的烦恼并没有因为别人的回答解决他的问题。但回答楼层里我看到一个看上去很靠谱的命令。

ffmpeg -i audio.mp3 -i video.mp4 -filter_complex \"[0:a][1:a]amerge,pan=stereo:c0-map 1:v -map "[out]" -c:v copy -c:a libfdk_aac -shortest output.mp4 

我想这种电脑就不用试了。直接试ffmpeg-android-java 结果是运行通不过的。报的是找不到 filter ""  因为这个错了修改这个命令应该过半百次再运行。结果都是直接不能运行。也积累了无数发错误原因。无奈之下 ,将以上命令的所有分号全部去掉 再运行这时候也是运行通不过的报错点在-c:a libfdk_aac  于是直接将这个直接干掉再次运行。 这个时候可以哈哈了。心里一万的草尼马  那是一种喜悦。居然可以了。这真他妈的是一种意外。完全不明真相。却得到了想要的结果。

不急,这时我将同样的命令用UilityAdapter库执行。Ok.也是没有问题的。此时我才知道我已经解决了UilityAdapter上传者的其中的一个疑惑。但是都忘记在那个地址看到那文章了。同时希望那个上传者可以看到我写下的这坑录。

坑点 二: 后续     提前总结一下:ffmpeg命令的移植后。很多的命令与电脑都 不太相同了 特别是一些复杂的处理。 接下来的坑点二也同样的证实了我个人的观点。但由于个人对C++不是很懂。也不知道为什么。有大神看到又知道原因的可以留言拨开我心中的那层迷雾!

相关文章

  • 视频开发徜过的那的坑

    因为开发期间的任务重,一直都没有停下来记录些什么,那些徜过的坑坑,时为艰难,现在项目难点都已实现和优化了。 因此非...

  • Android之音频焦点

    Android之音频焦点 车机开发很多应用涉及到音频,音频焦点踩过很多坑,也填过很多坑,蓝牙,多媒体音视频,ipo...

  • iOS 开发踩过的坑

    1、navigationBar的透明问题 如果仅仅把navigationBar的alpha设为0的话,那就相当于把...

  • 网页播放视频踩过的坑

    遇到的问题 公司官网首页需要播放一段介绍公司情况的视频,类似于宣传性质!给到我的是 mp4 格式的视频 300 M...

  • 谈谈关于Android视频编码的那些坑

    本文讲的是谈论关于Android视频编码的那些坑,Android的视频相关的开发,大概一直是整个Android生态...

  • 微信 Android 视频编码爬过的那些坑

    来源 微信 Android 视频编码爬过的那些坑 Android的视频相关的开发,大概一直是整个Android生态...

  • vue开发中踩过的坑

    watch 它用于观察Vue实例上的数据变动。对应一个对象,键是观察表达式,值是对应回调。值也可以是方法名,或者是...

  • iOS开发中踩过的坑

    1.证书失效 http://blog.csdn.net/chocolateloveme/article/detai...

  • 【Android】控件开发踩过的坑

    控件开发需要考虑的问题: 磨刀不误砍柴工: 弄清楚清楚onMeasure、onLayout、onDraw。 还有d...

网友评论

      本文标题:视频开发徜过的那的坑

      本文链接:https://www.haomeiwen.com/subject/wobbjxtx.html