【问题标题】:How to watermark my logo to 200 videos at once for free? [closed]如何一次免费为我的徽标添加水印到 200 个视频? [关闭]
【发布时间】:2013-04-14 18:00:55
【问题描述】:

我认为命令行视频编辑软件 + bacth 生成一个循环以便一次编辑所有视频是要走的路。我的问题是到目前为止我还没有找到带有命令行插入水印的免费软件。有什么想法吗?

【问题讨论】:

  • 除非你想用编程语言来完成这个,否则这个问题是题外话。

标签: windows video batch-file automation command


【解决方案1】:

编写AviSynth 脚本添加水印,然后使用FFmpeg 重新转换文件。 FFmpeg for Win32 能够从 AviSynth 框架服务器读取。

一个有用的链接:How to add a watermark with AviSynth

我编写了一个/bin/sh 脚本来帮助我进行家庭视频批量转换。它会在您的当前目录中生成 windows .bat 文件。您可以轻松修改它以生成 200 个.avs 脚本,然后调用 FFmpeg 进行转换。

#!/bin/sh

OUTBAT="$(pwd)/conv.bat"
OUTSH="$(pwd)/conv.sh"

if [ -e "${OUTBAT}" ] ; then
    echo "${OUTBAT}: file exists, exiting"
    exit 4
fi

if [ -e "${OUTSH}" ] ; then
    echo "${OUTSH}: file exists, exiting"
    exit 4
fi

usage() {
    echo "${0}: ${1}"
    echo
    echo "usage: ${0} <mode> <file1>[ <file2> [...]]"
    echo
    echo "available <mode>'s:"
    echo "    -x : generates windows .BAT file (conv. to x264+AAC@mp4)"
}

if [ $# -eq 0 ] ; then
    usage "no mode specified"
    exit 1
fi

MODE=${1}
shift

if [ $# -eq 0 ] ; then
    usage "no input files"
    exit 2
fi

while [ $# -gt 0 ] ; do
    FILE=$(echo "${1}" | sed -re 's/\//\\\\/g')
    if [ -n "$(echo "${FILE}" | grep -P '\.mp4$')" ] ; then
        ORIG=$(echo "${FILE}" | sed -re 's/(\.[^\.]*)$/-original\1/')
        echo ren \""${FILE}"\" \""${ORIG}"\" >>"${OUTBAT}"
    else
        ORIG="${FILE}"
    fi
    BASE=$(echo "${FILE}" | sed -re 's/\.[^\.]*$//')
    shift

    case "${MODE}" in
        "-x")
            echo ffmpeg -threads 4 -i \""${ORIG}"\" -vn -af \"aresample=48000:resampler=soxr\" -acodec pcm_s16le \""${BASE}"-audio.wav\" >>"${OUTBAT}"
            echo normalize \""${BASE}"-audio.wav\" >>"${OUTBAT}"
            echo neroAacEnc -if \""${BASE}"-audio.wav\" -of \""${BASE}"-audio.mp4\" >>"${OUTBAT}"
            echo del \""${BASE}"-audio.wav\" >>"${OUTBAT}"
            echo x264 --preset veryslow --tune film --crf 25 --vbv-maxrate 17500 --vbv-bufsize 17500 --level 3.1 -o \""${BASE}"-video.mp4\" \""${ORIG}"\" >>"${OUTBAT}"
            echo mp4box -add \""${BASE}"-video.mp4\" \""${BASE}".mp4\" >>"${OUTBAT}"
            echo mp4box -add \""${BASE}"-audio.mp4\" \""${BASE}".mp4\" >>"${OUTBAT}"
            echo del \""${BASE}"-audio.mp4\" >>"${OUTBAT}"
            echo del \""${BASE}"-video.mp4\" >>"${OUTBAT}"
            echo >>"${OUTBAT}"

            echo cptime \""${ORIG}"\" \""${BASE}".mp4\" >>"${OUTSH}"

            ;;
        *)
            usage "unknown mode"
            exit 3
            ;;
    esac

done

您应该通过将目录更改为视频文件所在的位置并输入$ script-name *.avi 来使用它。 conv.bat 文件将使用适当的命令生成。正如我所说:使用echo ffmpeg ... 更改部分以满足您的需要,但是您已经有了“框架”来生成.bat.avs 或您希望的任意数量的输入文件。 :-)

【讨论】:

  • 非常感谢,这似乎真的很有帮助。我将尝试使用 win 批处理或使用 Cygwin 并尝试运行根据我的需要修改的脚本。 AviSynth 似乎相当强大。
  • 确实如此。我很高兴这对您有所帮助。 :) 也许你会考虑接受这个答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-05
  • 1970-01-01
  • 1970-01-01
  • 2014-02-13
  • 2023-03-24
相关资源
最近更新 更多