.mov 파일 배치를 mp4로 변환하려고 합니다. ffmpeg 명령을 생성하기 위해 파이프에서 파일 이름을 어떻게 얻을 수 있습니까? 체인 링크에서 파이프 인수를 여러 번 사용하는 방법은 무엇입니까? 나는 그런 것을 가지려고 노력하고 있습니다 :
ls *.MOV | ffmpeg -y -i $file "$file.mp4"
답변1
파이프는 다음을 사용하려는 경우에 유용합니다.표준 출력하나의 명령으로표준 입력다른 명령의. 그러나 ffmpeg
표준 입력의 파일 이름이 아닌 파일을 입력으로 전달해야 합니다 . 그리고 ffmpeg
출력 파일을 얻으려면 각 입력 파일에 대해 한 번씩 여러 번 실행해야 합니다 .
간단히 말해서 파이프는 이에 유용하지 않습니다. 다른 답변에서 제안한 것처럼 루프가 필요합니다. 하지만 파일 이름 매개변수는 큰따옴표로 묶어야 합니다.
for file in *.MOV; do
ffmpeg -y -i "$file" "$file.mp4"
done
Perl 스크립트를 작성할 수 있다고 의견에서 언급하셨습니다. 그건 정말 지나친 일이겠죠. Bash는 더 간단하고 완벽하게 적합한 접근 방식입니다. 위 스크립트를 한 줄에 작성하고 명령줄에서 직접 실행할 수 있습니다.
for file in *.MOV; do ffmpeg -y -i "$file" "$file.mp4"; done
답변2
간단한 for
루프를 사용하여 이 작업을 수행할 수 있습니다.
#!/bin/bash
for file in /path/to/*.MOV
do
echo "Converting $file"
done