一、ffmpeg添加水印的2中方式:
fmpeg -y -i demo.3gp -i icon-72.png -filter_complex overlay=10:10 -vcodec li
bx264 -acodec copy -strict -2 merge.3gp或者
ffmpeg -i input -vf 'movie=long.png[logo];[in][logo]overlay=10:10[out]' output
二、VS2010版本出現水印花屏問題:原因是因爲vf_overlay.c文件移植到vs時,AVFilterPad_vf_overlay_input結構的初始化最後一位書寫錯誤。
三、透明:使用png可以達到透明的效果
四、如何支持JPEG:allcodec.c文件中確保 REGISTER_ENCDEC (MJPEG, mjpeg);確保是打開的,並添加mjpegdec.c/jpegls.c等文件到工程。
五、movie形式如何支持windows盤符:如果寫成ffmpeg -i input -vf 'movie=d:/long.png[logo];[in][logo]overlay=10:10[out]' output, 由於avfilter.c文件的process_options函數
解析時將":"當作是分隔符,所以解析文件名失敗,認爲文件名只是d,而不是d:/long.png,導致水印失敗。
解決方法:
char* pairs_sep = ":";
//ret = av_opt_get_key_value(&args, "=", ":",
if(ctx->filter && !strcmp(ctx->filter->name, "movie"))
{
pairs_sep = "="; //"movie=d:/icon-72.png[logo]
}
ret = av_opt_get_key_value(&args, "=", pairs_sep,
shorthand ? AV_OPT_FLAG_IMPLICIT_KEY : 0,
&parsed_key, &value);