我想为选定的视频添加水印,减少重量,调整大小和更改格式。 另外,我需要保持尽可能高的质量。
现在我拥有:
ffmpeg -i prepared/video.mp4 -i units/video_watermark.png -filter_complex overlay=10:10 -codec:a copy moved/video_test.mp4
我正在为视频加水印,但质量下降很多。我也有:
ffmpeg -i prepared/video.mp4 -s 1280x720 -b 512k -vcodec mpeg1video -acodec copy
但我也需要尽可能减轻体重。重建的视频将在线显示为电影。我的问题是 - 是否可以一行并将格式更改为.mp4?
PS。我构建了命令:
ffmpeg -i downloaded/movie/movie.avi -c:v libx264 -acodec libfaac -b:a 64k -preset ultrafast -vf "movie=units/video_watermark.png [watermark]; [in][watermark] overlay=10:10 [out]" -movflags faststart prepared/movie.mp4
但它返回错误:
ffmpeg version 2.7.1 Copyright (c) 2000-2015 the FFmpeg developers
built with gcc 4.8 (Ubuntu 4.8.4-2ubuntu1~14.04)
configuration:
libavutil 54. 27.100 / 54. 27.100
libavcodec 56. 41.100 / 56. 41.100
libavformat 56. 36.100 / 56. 36.100
libavdevice 56. 4.100 / 56. 4.100
libavfilter 5. 16.101 / 5. 16.101
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 2.100 / 1. 2.100
Unrecognized option 'preset'.
Error splitting the argument list: Option not found
答案 0 :(得分:0)
尝试减小文件大小时,无法保留输入源的原始质量。您仍然可以调整属性以完成此操作,直到人眼无法识别质量差异。好吧,要回答你的问题,你可以在一行命令中添加水印,减小文件大小(降低质量)并重新调整输入视频的大小。
为此,您需要使用filter_complex
相应地链接所有必需的过滤器。要进行水印,您可以使用overlay
过滤器并将其放置在视频上。 scale
过滤器会将视频或图片重新调整为指定的宽度和高度。重要的是,要调整最终输出的质量,您可以使用crf
。如果您需要更多地控制文件大小调整,也可以明确指定视频的帧速率和比特率。
ffmpeg -y -i input_video -i input_image -filter_complex "
[0:0]scale=1280:720[scaled];
[scaled][1:0]overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2[vout]"
-map [vout] -c:v libx264 -crf 22 -movflags faststart output_video
scale
过滤器会将视频(第一次输入)调整为1280x720。您可以找到更多缩放选项here。overlay
过滤器会将水印图像定位在其中心的缩放视频上。libx264
用于mp4输出。crf
值,直到产生令人满意的输出。您提到的错误不会出现在您的命令中。希望您的FFmpeg版本有一些问题。包括完整的未切割控制台输出以进一步分析它。
希望这有帮助!
答案 1 :(得分:0)
ffmpeg
配置行缺少--enable-libx264
,因此您的构建不支持使用libx264进行编码。
您的选择: