首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > ASP >

ASP.NET下调用ffmpeg兑现视频水印

2013-04-02 
ASP.NET下调用ffmpeg实现视频水印续上篇文章,视频加水印这块,我走了不少弯路,主要是相关资料太混乱,有人说

ASP.NET下调用ffmpeg实现视频水印

续上篇文章,视频加水印这块,我走了不少弯路,主要是相关资料太混乱,有人说ffmpeg+avisynth可以,但我不想装avisynth,最后看了老外一篇文章终于OK了,我在这提醒一下:vhook这个参数早就不用了,新版的不是-vfilters,而是-vf,我这用的ffmpeg版本是FFmpeg version: 2013-03-22 git-e0e8c20,它的水印参数是:

Top left corner
ffmpeg –i inputvideo.avi -vf "movie=watermarklogo.png [watermark]; [in][watermark] overlay=10:10 [out]" outputvideo.flv

Top right corner
ffmpeg –i inputvideo.avi -vf "movie=watermarklogo.png [watermark]; [in][watermark] overlay=main_w-overlay_w-10:10 [out]" outputvideo.flv

Bottom left corner
ffmpeg –i inputvideo.avi -vf "movie=watermarklogo.png [watermark]; [in][watermark] overlay=10:main_h-overlay_h-10 [out]" outputvideo.flv

Bottom right corner
ffmpeg –i inputvideo.avi -vf "movie=watermarklogo.png [watermark]; [in][watermark] overlay=main_w-overlay_w-10:main_h-overlay_h-10 [out]" outputvideo.flv

ASP.NET下使用:

经过我个人反复调试问题锁定在:-vf "movie=watermarklogo.png [watermark]; [in][watermark] overlay=10:10 [out]"中的movie=后面只接受相对路径,如/data/watermarklogo.png之类的,一旦使用C:/data/watermarklogo.png它就找不着北了,如果是窗体程序的话,把watermarklogo.png搁到程序所在的目录下使用相对路径就OK了,但是如果是Web怎么办呢?相信大家可能就想到了,设置WorkingDirectory,没错,假如图片在C:/data/watermarklogo.png,那么咱们就这样写:

WaterMarkstartInfo.WorkingDirectory = "C:\\data\\";

试试,是不是可以了呢?折腾了老多天的问题,终于解决了。

可是回头我们就会发现加完水印后,视频质量严重下降,这是怎回事,其实上面的命令只是简单的水印命令,如果想保证视频质量的话,命令应该如下:

ffmpeg.exe -y -i input.avi -acodec copy -b 300k -vf "movie=watermarklogo.png [watermark]; [in][watermark] overlay=0:0 [out]" output.avi

    -y 表示有同名的output.flv存在时不提示,直接覆盖
    -i input.avi 表示要进行水印添加处理的视频
    -acodec copy 表示保持音频不变
    -b 300k 表示处理视频的比特率,用-vcodec copy时报错,可以使用其他工具获取到原始视频比特率后加到这里,保持比特率基本不变,不然默认为200k,视频有损。
    -vf "..." 中间便是水印处理参数,主要是overlay,第一个参数表示水印距离视频左边的距离,第二个参数表示水印距离视频上边的距离
    output.avi 处理后的视频

水印就加到这吧!有问题多多交流!


热点排行