그래서 필터링을 하려고 했는데H265/HEVC이전 코덱이 아닌 비디오만 표시한 다음 내 설정을 사용하여 비디오를 트랜스코딩하는 명령을 실행합니다.
내가 원하는 방식으로 해결 방법이나 방법을 찾을 때마다 작동하지 않습니다. 그것은 일종의 버그이거나 더 이상 사용되지 않으며 지금은 그렇게 되지 않습니다.
하지만 다음과 같아야 합니다.
find /mnt/videos -type f *.mp4 exec $filtercmd; $transcodecmd
이 명령은 파일의 절대 경로를 인쇄하여 두 번째 명령에서 이를 사용하여 트랜스코딩할 수 있도록 해야 합니다.
ffprobe
더 깔끔한 접근 방식인 것 같아서 사용하는 것을 선호합니다 . 나는 기본적으로 누군가에게 명령이나 스크립트를 작성해달라고 요청하는 것을 싫어하지만 지식이 없습니다. 이것이 계획대로 글쓰기를 위한 것이라면 훌륭합니다.
미리 감사드립니다!
편집하다:
아마도 해결책을 찾았을 것 같아요.
#!/bin/bash
# Reset
Color_Off='\033[0m' # Text Reset
# Regular Colors
Red='\033[0;31m' # Red
Green='\033[0;32m' # Green
# Bold
BRed='\033[1;31m' # Red
BGreen='\033[1;32m' # Green
for i in $(find /mnt/movies/ -type f -name '*.mkv' -o -name '*.mp4' -o -name '*.wmv' -o -name '*.flv' -o -name '*.webm' -o -name '*.mov'); do
ffprobe -v error -select_streams v:0 -show_entries stream=codec_name -of default=noprint_wrappers=1:nokey=1 "${i}"
if [[ $1 == 'h264' ]]; then
echo "Video is a ${BGreen}H264${Color_off} video file"
python sickbeard_mp4_automator/manual.py -i "$i" -a
elif [[ $1 == hevc ]]; then
echo "Video is alread transcoded to ${BRed}HEVC${Color_Off}"
fi
done
하지만 공간을 탈출하는 것 같습니다. 종료할 수 없는 것 같습니다. 어떻게 생각하나요?
답변1
답을 찾았어요!
#!/bin/bash
IFS=$'\n'
# Reset
Color_Off='\033[0m' # Text Reset
# Regular Colors
Red='\033[0;31m' # Red
Green='\033[0;32m' # Green
# Bold
BRed='\033[1;31m' # Red
BGreen='\033[1;32m' # Green
for i in $(find /mnt/movies/ -type f -name '*.mkv' -o -name '*.mp4' -o -name '*.wmv' -o -name '*.flv' -o -name '*.webm' -o -name '*.mov'); do
# ffprobe -v error -select_streams v:0 -show_entries stream=codec_name -of default=noprint_wrappers=1:nokey=1 "$i"
if [ $(ffprobe -v error -select_streams v:0 -show_entries stream=codec_name -of default=noprint_wrappers=1:nokey=1 "$i") = h264 ]; then
echo -e "Video is a ${BGreen}H264${Color_Off} video file"
python2 sickbeard_mp4_automator/manual.py -i "$i" -a
elif [ $(ffprobe -v error -select_streams v:0 -show_entries stream=codec_name -of default=noprint_wrappers=1:nokey=1 "$i") == hevc ]; then
echo -e "Video is already transcoded to ${BRed}HEVC${Color_Off}"
elif [ $(ffprobe -v error -select_streams v:0 -show_entries stream=codec_name -of default=noprint_wrappers=1:nokey=1 "$i") == vp8 ]; then
echo -e "Video is a ${BGreen}WEBM${Color_Off} video file"
python2 sickbeard_mp4_automator/manual.py -i "$i" -a
fi
done
H264를 확인하고 파일을 트랜스코딩합니다. 그렇지 않으면 그대로 유지됩니다. 모든 분들의 도움에 감사드립니다. 제가 가끔 어리석을 수도 있다는 것을 깨닫습니다. :)
답변2
다음 명령을 사용할 수 있습니다.
find /your/path -exec bash -c "if file {} | grep "python"; then cat {} ; fi" \;
이 명령은 file
발견된 모든 파일에 대해 실행되거나 이 명령의 출력에 "python"이 포함된 경우 실행됩니다 cat
.
물론 이 명령을 필요에 맞게 조정해야 합니다.