Я вытащил сценарий Bash с here, который проверяет файл AVI на наличие плохих кадров, используя расширение ffmpeg и cygwin. Я могу выполнить код в Mingw. Я помещаю ffmpeg.exe (ren ffmpeg), cygwin1.dll & cygz.dll в bin bin (/ c/mingw/bin /). Теперь, я ищу, чтобы портировать этот код bash в PowerShell. Может ли кто-нибудь пролить свет PowerShell на этот?Преобразование простого сценария Bash в PowerShell?
Сценарий:(путь:/с/mygw/бен/AviConvert)
#!/bin/bash
FFMPEG="ffmpeg"
LIST=`find | grep \.avi$`
for i in $LIST; do
OUTP="$i.txt"
OUTP_OK="$i.txt.ok"
TMP_OUTP="$i.tmp"
if [ -f "$OUTP" -o -f "$OUTP_OK" ] ; then
echo Skipping "$i"
else
echo Checking "$i"...
RESULT="bad"
ffmpeg -v 5 -i "$i" -f null - 2> "$TMP_OUTP" && \
mv "$TMP_OUTP" "$OUTP" && \
RESULT=`grep -v "\(frame\)\|\(Press\)" "$OUTP" | grep "\["`
if [ -z "$RESULT" ] ; then
mv "$OUTP" "$OUTP_OK"
fi
fi
done
Как далеко вы получить, когда вы попробовали это самостоятельно? Что именно вы застряли? – zdan
Его работа отлично. Для каждого файла AVI в целевой папке он генерирует файл отчета с * .ok (если файл не имеет дефектного фрейма), * .txt (если были какие-то ошибки кадра fround) или * .tmp (в то время как его процесс). Но обработка происходит очень медленно. Я думал, что запуск сценария в PowerShell может улучшить производительность, поскольку mingw эмулирует среду bash (что означает много накладных расходов?). CMIIW! –
Я подозреваю, что самая длинная вещь - это команда 'ffmpeg -v 5 -i '$ i" -f null - 2> "$ TMP_OUTP" '. Вы пробовали использовать сборку для windows avaialble [здесь] (http://ffmpeg.zeranoe.com/builds/).? Вы можете сравнить cygwin и Powershell, просто обработав 1 из ваших файлов AVI и сравнив время завершения. –