Android-使用ffmpeg添加视频水印过慢问题

  • 在使用ffmpeg给视频添加水印的过程中速度过慢的问题代码如下:
StringBuilder sb1 = new StringBuilder();
        sb1.append("ffmpeg");
        sb1.append(" -i");
        sb1.append(" " + vediooutput);
        sb1.append(" -i");
        sb1.append(" " + imagePath);
        sb1.append(" -filter_complex");
        sb1.append(" overlay=20:35");
        sb1.append(" -vcodec libx264 -profile:v baseline -preset ultrafast -b:v 3000k -g 25");
        sb1.append(" -y");
        sb1.append(" " + mergeVideo);
  • 这段代码是一个正常来添加水印的ffmpeg命令。因为我在做版本迭代的过程中修改了底层的视频源数据,导致之后生成的视频文件在使用这个命令时速度异常缓慢,大概需要好几分钟,甚至更长时间,这样是无法接受的。开始我以为是ffmpeg对手机的性能有要求,后来我在查阅资料的过程中发现这个命令的处理速度还是很快的。所以问题的原因没有出在命令行上面,在我查找的时候发现是我的视频源的问题。对于视频源没有做任何编码的处理,导致源数据过于庞大。下面是解决办法:
StringBuilder sb = new StringBuilder("ffmpeg");
        sb.append(" -i");
        sb.append(" " + path);
        sb.append(" -codec");
        sb.append(" copy");
        sb.append(" -bsf");
        sb.append(" h264_mp4toannexb ");
        sb.append("-r 25  ");
        sb.append("-s 720x1280 ");
        sb.append("-pix_fmt nv21  ");
        sb.append("-ar 44100  ");
        sb.append("-ac 1  ");
        sb.append("-analyzeduration 500  ");
        sb.append("-vcodec libx264  ");
        sb.append("-profile:v baseline  ");
        sb.append("-preset ultrafast  ");
        sb.append("-b:v 4m -g 30  ");
        sb.append("-acodec libfdk_aac  ");
        sb.append("-b:a 512k  ");
        sb.append(" -f");
        sb.append(" mpegts");
        sb.append(" " + path.replaceAll("mp4", "ts"));
  • 这里的处理方式可以有很多种,我这种处理是因为我需要一个.ts结尾的视频文件进行一个分段合成的需求,所以在转码的过程中对这个视频源进行了一个处理。这个操作可能会比较耗时,建议做一个异步或者子线程处理。但是相比添加水印的耗时那就不过九牛一毛了。经过测试10s左右的视频转码大概需要1-2s,这样的处理效率还是可以接受的。

    ————————-
    :坚持终会有回报,我印证了并坚信着。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值