1、前言
最近在研究FFmepg滤镜方面的知识,索性就准备尝试一下代码给视频添加水印。
一开始想直接FFmpeg直接c代码加水印,写完后测试了一下比较慢,毕竟软解得看CPU即使设置了多线程编解码还是一个吊样,然后想到了另一条路硬解码然后ffmpeg数据处理水印接着送入硬编码这样效率会很高,毕竟GPU还是很快的。软解永远是兜底方案
注:这不是一篇单纯的FFmpeg水印命令文章注:本篇使用JNI开发2、效果
3、流程
仅核心流程具体细节参照示例
原视频AAC解码H264编码YUV编码H264合成MediaCodecAVFilterMediaCodecMediaMuxerAudioAACMPEG4
AVFilter是FFmpeg库下的一个流媒体过滤器,它用于对组件常用于多媒体处理与编辑,包含多种滤镜,比如旋转,加水印,多宫格等等,源码位于ffmpeglibavfilter中。4、准备FFmpegso库音视频(1)FFmpeg4。3。4编译libyuvso库libyuv库编译5、示例5。1提取音频视频流轨道MediaFormat视频流提取器MediaExtractormediaExtractornewMediaExtractor();设置视频源mediaExtractor。setDataSource(path);寻找视频流for(inti0;imediaExtractor。getTrackCount();i){MediaFormatmediaFormatmediaExtractor。getTrackFormat(i);if(mediaFormat。getString(MediaFormat。KEYMIME)。contains(video)){视频流videoMediaFmtmediaF选择当前视...
(全文)