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

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