ffprobe를 사용하여 비디오 파일에서 매개변수를 추출하고 해당 결과를 기반으로 처리하려고 합니다. 그러나 파일에 공백이 포함되어 있으면 파일을 ffprobe에 올바르게 전달할 수 없습니다.
echo $1
inputfile=$(printf '%q' "$1")
#inputfile=${1@Q}
echo $inputfile
ffprobeout= ffprobe -v error -select_streams v:0 -show_entries stream=width,height,bit_rate -of csv=s=x:p=0 $inputfile
files2reenc.sh "test file with spaces.mp4"
이제 결과가 포함된 샘플 파일을 호출하면
test file with spaces.mp4
test\ file\ with\ spaces.mp4
Argument 'file' provided as input filename, but 'test' was already specified.
따라서 ffprobe는 이름의 각 부분을 별도의 파일로 처리하고 이를 매개변수로 인식하지 않습니다. 예상대로 작동하도록 입력을 전달/이스케이프하는 방법을 잘 모르겠습니다. bash 스크립트를 호출할 때 문제가 발생했는지, 아니면 입력 매개변수를 처리하려고 할 때 문제가 발생했는지 잘 모르겠습니다. 나는 또한 사용해 보았지만
echo $inputfile | xargs -0 ffprobe ...
성공하지 못했습니다.
답변1
빠른 팁 rAlen에 감사드립니다. 변경되지 않은 입력을 사용하고 간단히 인용해야 했습니다.
inputfile=$1
ffprobeout= ffprobe -v error -select_streams v:0 -show_entries stream=width,height,bit_rate -of csv=s=x:p=0 "$inputfile"
답변2
줄 연속이 긴 줄의 가독성에 도움이 될 수 있다는 것은 의심의 여지가 없습니다.
ffprobeout= ffprobe -v error \
-select_streams v:0 \
-show_entries stream=width,height,bit_rate \
-of csv=s=x:p=0 \
"$inputfile"