avconv를 사용하여 .mov 및 .mp4 비디오의 크기를 줄이고 이미 압축된 비디오(문자열을 통해 존재함)를 건너뛰는 스크립트를 만들었습니다. 스크립트에서는 이름에 동영상의 날짜를 넣었지만 축소된 파일의 동영상 원본 날짜를 속성으로 유지하는 것을 선호했는데 이는 물론 스크립트에서 구현되지 않습니다. 리눅스 콘솔을 사용할 수 있나요?
#! /bin/bash
shopt -s globstar || exit
for f in **
do
if [[ "$f" =~ \.mp4$ ]] || [[ "$f" =~ \.mov$ ]] || [[ "$f" =~ \.MOV$ ]] ; then
if [[ "$f" =~ reduced.*\.mp4$ ]] || [[ "$f" =~ compressed.*\.mp4$ ]]; then
echo "already compressed"
else
if yes | avconv -i "$f" -c:v libx264 -crf 24 -c:a aac -strict -2 "${f%.*}_$(date -d@$(stat --printf='%Y' "$f") +%Y%m%d)"_compressed.mp4; then
rm -Rf "$f"
else
rm -Rf "${f%.*}_$(date -d@$(stat --printf='%Y' "$f") +%Y%m%d)"_compressed.mp4
echo "Command failed"
fi
fi
fi
done
답변1
예, 다음을 사용하여 이 작업을 수행할 수 있습니다 touch
.
else
t="${f%.*}_$(date -d@$(stat --printf='%Y' "$f") +%Y%m%d)"_compressed.mp4
if yes | avconv -i "$f" -c:v libx264 -crf 24 -c:a aac -strict -2 "$t"; then
touch -r "$f" "$t"
rm -f "$f"
else
rm -f "$t"
echo "Command failed"
fi
fi
이 -r
옵션은 touch
지정된 파일을 대상 파일에 적용되는 시간 참조로 사용함을 나타냅니다.