ffmpeg 水印问题

一、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);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章