ffmpeg의 출력 파일 이름에 입력 파일 이름을 포함하는 방법

ffmpeg의 출력 파일 이름에 입력 파일 이름을 포함하는 방법

비디오에서 프레임을 이미지로 추출하고 각 이미지에 이름을 지정하고 싶습니다. 어떻게 해야 합니까?InputFileName_number.bmp

다음 명령을 시도했습니다.

ffmpeg -i clip.mp4 fr1/$filename%d.jpg -hide_banner

하지만 내가 원하는 대로 작동하지 않습니다. 예를 들어, 나는 을 얻고 싶지만 clip_1.bmp내가 얻는 것은 입니다 1.bmp.

여러 비디오에서 이미지를 추출하기 위해 GNU Parallel과 함께 사용하려고 하는데 둘 다 처음이라서 동적 파일 명명 왕 input-> 을 원합니다 input_number.bmp.

답변1

$filename쉘 변수로 처리됩니다.

무엇에 대해

ffmpeg -i clip.mp4 fr1/clip_%d.jpg -hide_banner

또는

$mp4filename=clip
ffmpeg -i ${mp4filename}.mp4 fr1/${mp4filename}_%d.jpg -hide_banner

?

고쳐 쓰다:Gnu 병렬과 함께 사용하려면 병렬 -i옵션을 사용할 수 있습니다:

-i
일반적으로 명령은 명령줄 끝에 인수를 전달합니다. 이 옵션을 사용하면 명령의 "{}" 인스턴스가 인수로 대체됩니다.

결과 명령줄은 다음과 같이 간단할 수 있습니다.

parallel -i ffmpeg -i {} fr1/{}_%d.jpg -hide_banner -- *.mp4

출력 파일에서 확장자를 허용할 수 있는 경우.

동시 I/O로 인해 속도가 느려지므로 실제로는 기존 하드 드라이브에서 병렬로 실행하고 싶지 않을 수 있습니다.

편집하다:@DonHolgo가 지적했듯이 변수 참조가 수정되었습니다.

관련 정보