2013-04-21 20 views
-3

我认为命令行视频编辑软件+ bacth生成一个循环,以便一次编辑所有视频是一种可行的方式。我的问题是,我还没有找到自由软件与命令行插入水印到目前为止。有任何想法吗?如何将我的标志一次免费加入200个视频?

+0

除非你试图用编程语言完成这个,否则这个问题是脱离主题。 – 2013-04-21 22:28:54

回答

0

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

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

我写了一个/bin/sh脚本来帮助我进行家庭视频批量转换。它会在当前目录中生成窗口.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 [email protected])" 
} 

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文件将使用appriopriate命令生成。正如我所说的:用echo ffmpeg ...来改变部分以满足您的需求,但是您已经有了“框架”来生成.bat.avs或者什么不是你想要的任意数量的输入文件。 :-)

+0

非常感谢,它似乎真的很有帮助。我会尝试使用批处理或使用Cygwin来完成它,并尝试运行修改后的脚本以满足我的需要。 AviSynth似乎非常强大。 – 2013-04-21 22:54:51

+0

确实如此。我很高兴这对你有一些帮助。 :)也许你会考虑接受答案。 – 2013-04-21 23:19:38