2013-04-21 27 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