2013-08-14 5 views
0

나는 .mov 파일에 대한 주어진 경로의 모든 하위 폴더를 검색하여 ffmpeg로 변환하고 대상 폴더에서 클립 이름을 유지하면서 출력하는 bash 스크립트를 만들려고합니다.여러 파일을 ffmpeg로 파이프하는 방법은 무엇입니까?

저는 스크립팅에 매우 익숙하며이를 해결하는 방법을 찾는 데 어려움을 겪고 있습니다.

지금까지 ls를 사용하여 시도해 보았지만 filepaths를 출력했지만 ffmpeg에 올바른 방법으로 파이프하는 방법을 모릅니다.

실마리가 있습니까?

편집 :

이 일부 성공을 가지고 :

#!/bin/bash 

echo "drop source folder: " 
read source 

echo "drop destination folder: " 
read des 

find "$source" -name '*.mov' -exec sh -c 'ffmpeg -i "$0" -vcodec prores -profile:v 0 -an "$des/${0%%.mov}.mov"' {} \; 
exit; 

을하지만은 그것은 덮어 쓰기를 요청하는 소스 폴더에 출력 보인다. 매개 변수를 올바르게 설정하여 "대상 폴더"로 출력하고 파일 이름을 유지하려면 어떻게해야합니까? 이 같은

+0

* 당신이 시도한 것은 무엇입니까? – devnull

+0

배열에서 파일 참조를 보유하고 루프에서 하나씩 참조를 전달하는 동안 ffmpeg를 호출하는 C++/Java로 작은 프로그램을 만들 수 있습니다. ! 읽기 소스 에코 "드롭 대상 폴더 :이 @devnull – AsG

+0

내가 조금 복사본에서 #/빈/bash는 ... 유사한 문제에 대한 주위 에코"드롭 소스 폴더 "를 검색하여 붙여 넣기, 지금까지 무엇을 가지고 : " 읽기 des "$ 소스 "- 이름 '* .mov'-exec sh -c 'ffmpeg -i"$ 0 "-vcodec prores -profile : v 0 -an"$ {0 %%. mov} .mov " '{} \; exit; ffmpeg에 대상 변수를 설정하여 작동하는지 확인해야합니다. 내가 어떻게 그럴 수 있니? – Olung

답변

0

당신이와 함께 시작할 수 :

#!/bin/bash 

shopt -s extglob || { 
    echo "Unable to enable exglob." 
    exit 1 
} 

TARGETEXT='.avi' 
TARGETPREFIX='/path/to/somewhere/' ## Make sure it ends with /. 

while IFS= read -r FILE; do 
    BASE=${FILE##*/} 
    NOEXT=${BASE%.*} 
    TARGETFILEPATH=${TARGETPREFIX}${NOEXT}${TARGETEXT} 
    echo ffmpeg -i "$FILE" "$TARGETFILEPATH" ## Remove echo if it's already correct. 
done < <(exec find -type f -name '*.mov') ## You could also use -iname '*.sh' instead. 

당신은 파일을 검색하는 사용자 정의 디렉토리를 사용할 수 있습니다 물론 :

find /path/to/directory -type f -name '*.mov' 
0

뭔가 작업을 수행해야합니다

for f in *.mov; do ffmpeg -i "$f" -vcodec copy -acodec copy "/desination/${f%.mov}.mp4"; done

+0

고마워,하지만 난 모든 movs 다른 하위에있을 때이 작품을 생각하지 않습니다. 필자는이 성공 HADE :! #을/빈/bash는 에코 "드롭 소스 폴더 :" 읽기 소스 에코 "드롭 대상 폴더 :" 읽는 데 찾기 "$ 소스"-name ' * .mov '-exec sh -c'ffmpeg -i "$ 0"-vcodec prores -profile : v 0 -an "$ {0 %%. mov} .mov" '{} \; exit; 하지만 변환 된 모든 movs 거기에 가서 그래서 내 대상 변수를 넣을 알아. ? – Olung

+0

대상 변수는 $ des입니다. "$ {0 %%. mov} .mov"를 "$ des/$ {0 %%. mov} .mov"로 수정해야합니다. – maxxxou

+0

나는 그것을 시험해 보았습니다. 그러나 테스트 설정에서 ffmpeg는 내가 덮어 쓸 것인지 묻습니다. 내가 지정된 대상 폴더에 theres 아무것도 없기 때문에 이상한가요 ... 그것은 소스 폴더로 출력 것 같습니다. – Olung

관련 문제