![ffmpeg의 출력 파일 이름에 입력 파일 이름을 포함하는 방법](https://linux55.com/image/152663/ffmpeg%EC%9D%98%20%EC%B6%9C%EB%A0%A5%20%ED%8C%8C%EC%9D%BC%20%EC%9D%B4%EB%A6%84%EC%97%90%20%EC%9E%85%EB%A0%A5%20%ED%8C%8C%EC%9D%BC%20%EC%9D%B4%EB%A6%84%EC%9D%84%20%ED%8F%AC%ED%95%A8%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
비디오에서 프레임을 이미지로 추출하고 각 이미지에 이름을 지정하고 싶습니다. 어떻게 해야 합니까?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가 지적했듯이 변수 참조가 수정되었습니다.