Выходное изображение должно выглядеть следующим образом:
Моя команда:
String[] command1211 = {"-i", inputPath_audio.mp3,
"-preset", "ultrafast",
"-filter_complex",
"[0:a]showspectrum=s=1280x720,format=yuv420p[v]",
"-map", "[v]", "-map", "0:a", "-c:v", "libx264", "-c:a",
"copy", filePath.mp4};
С помощью этой команды я хочу добавить водяной знак в правом нижнем углу.
А это моя команда для водяного знака:
"[1] масштаб=70:70 [tmp]; [0][tmp]наложение=main_w-overlay_w-10:main_h-overlay_h-10"
Я добился этого с помощью следующего запроса:
String[] command12111 = {
"-i", inputPath_audio,
"-i",imagepath.getAbsolutePath(),
"-preset", "ultrafast",
"-filter_complex",
"[0:a]showspectrum=s=1280x720[spec];
[1]scale=70:70[watermark];[spec][watermark]overlay=main_w-
overlay_w-10:main_h-overlay_h-10[output]",
"-map", "[output]", "-map", "0:a", "-c:v", "libx264",
"-c:a",
"copy", filePath
};
решение1
В вашей исходной команде отсутствуют необходимые элементы для наложения водяного знака:
- Изображение водяного знака в качестве входных данных
- Фильтр наложения для добавления водяного знака
Итак, вам понадобится еще один -i
для входа водяного знака и overlay
фильтр, который соединяет выход спектрального фильтра с входом изображения.
ffmpeg \
-i audio_path \
-i image_path \
-filter_complex \
"[0:a]showspectrum=s=1280x720[spec];
[1]scale=70:70[watermark];
[spec][watermark]overlay=main_w-overlay_w-10:main_h-overlay_h-10[output]
" \
-map "[output]" -map 0:a \
output.mp4
Здесь важно отметить метки входов фильтра (0 и 1 для соответствующих двух входов) и выходов ( spec
, watermark
, …). Вы используете их для подключения различных фильтров.