비 연속 이미지 파일에 FFMPEG를 연결하는 방법은 무엇입니까? (3 초 건너 뛰기)


27

이 패턴을 따르는 많은 이미지가 있습니다.

0001.png
0004.png
0007.png
0010.png
0013.png
0016.png
0019.png
...

올바른 순서로되어 있지만 FFMPEG는 첫 번째 파일 뒤에있는 파일을 찾을 수 없으므로 무시합니다 0002.png. 이 파일들을 어떻게 결합시킬 수 있습니까?

나는 시도했다

ffmpeg -i %04d.png out.avi

2
임시로 이름을 바꾸고 AVI를 만든 다음 (3x-2) .png 구성표로 다시 이름을 바꾸는 것은 어떻습니까? 대량 이름 바꾸기 유틸리티 @ bulkrenameutility.co.uk/Main_Intro.php 는 무료 음, 대량 이름 바꾸기 도구입니다.
Gyan

답변:


18

ffmpeg 0.11.1을 사용하면 다음과 같이 쉽습니다.

ffmpeg -f image2 -i %*.png out.avi

로부터 man"비디오 및 오디오 파일 형식 변환"아래 예제 페이지 :

이미지 시퀀스를 가져올 때 -i내부적으로 쉘과 같은 와일드 카드 패턴 (글 로빙) 확장을 지원합니다. 실제 파일 이름과 쉘의 글로브 확장을 방해 가능성을 낮추기 위해, 단일로 접두사를 지정하여 활성화 글로브 메타 문자에 필요한 %처럼, 문자 foo-%*.jpeg, foo-%?%?%?.jpeg또는 foo-00%[234%]%*.jpeg.

주석 별 업데이트 : 최신 버전에서는 이제 -i '*.png'구문을 사용해야 합니다.


3
이것은 우분투 13.04는 FFmpeg 또는 avconv를 사용하여 나를 위해 작동하지 않은
hellocatfood을

2
더 이상 옵션이 아닌 것 같습니다.
Timmmm

2
glob_sequence패턴 유형은 사용되지 않습니다,하지만 glob패턴 유형은 아니다. Mulvya와 Peter Cordes의 답변이 효과가 있습니다.
박사. Sybren

1
Pattern type 'glob_sequence' is deprecated: use pattern_type 'glob' instead
Sroo Stroobandt

1
설명과 Pattern type 'glob_sequence' is deprecated마찬가지로이 페이지는 현재 해당 경고 메시지 ( ...)에 대한 Google의 최고 결과 이므로 위의 rymo (특히)에서 제공 한 명령으로 경고 -i %*.png발생 합니다. 그것을 없애려면 Peter Cordes answer ( -i '*.png') 의 약간 다른 구문을 사용하십시오 .
James

19

내 의견의 해결 방법 외에도 ffmpeg 설명서 에서이 구문을 사용할 수 있습니다 .

ffmpeg -f image2 -pattern_type glob -i '*.png' out.avi

따옴표는 중요 *합니다. 쉘을 확장하지 말고 ffmpeg가 필요 합니다.


나를 위해 작동하지 않지만 아마도 오래된 빌드가 있기 때문일 수 있습니다. 향후 사용자에게 도움이 될 가능성이 높으므로이 내용을 수락합니다.
Brigand

ffmpeg 문서 에 따르면 glob 패턴 유형에 % 04d.png 대신 '* .png'를 사용해야합니다.
친구의 조지

그러면 00xx.png 외에 폴더에있는 모든 png가 선택되지만 OP는 번호 연속성에 대해 걱정하지 않고 % 04d png 만 대기열에 넣고 싶어합니다.
Gyan

2
확신 이 둘 필요가 있음을 *.png단일 따옴표 (그래서 '*.png')가 유닉스 스타일 쉘 (그래서, OSX와 리눅스 등)으로 확대되지 않도록합니다.
evilsoup

1
슬프게도 ffmpeg 개발자는 파일 글 로빙 지원 옵션을 만듭니다 ! 표준 윈도우 빌드에는 포함되지 않습니다.
Timmmm

9

에서 http://www.ffmpeg.org/faq.html : 이름을 바꿀 사진의 수가 많은 경우 부담을 완화하기 위해 다음 명령을 사용할 수 있습니다. Bourne 쉘 구문을 사용하는 명령은 * jpg와 일치하는 현재 디렉토리의 모든 파일을 'img001.jpg', 'img002.jpg'등의 순서로 '/ tmp'디렉토리에 심볼릭 링크합니다.

x=1; for i in *jpg; do counter=$(printf %03d $x); ln -s "$i" /tmp/img"$counter".jpg; x=$(($x+1)); done


나는 여러 시퀀스를 결합하기 위해 사용 seqA-[0001-n].png, seqB-[0001-n].png등의 글 로빙 이미지 2와 CONCAT 필터 장난보다 훨씬 쉽습니다.
z0r

내가 교체 할 때까지 나를 위해이 작동하지 않았다 for i in *jpg으로 for i in /full/path/*jpg모든 심볼릭 링크가 졌 있었다 때문에,
Jezzamon

4

사실 Mulvya가 제안한 것과 같은 것을 제안합니다. 3D 애니메이션 렌더링을 처리 할 때 이와 같은 작업을 수행해야 할 때마다 파일의 이름을 순차적으로 변경했습니다. 어떤 이유로 파일 이름을 보존 할 필요가없는 한 많은 다른 소프트웨어에서 이러한 방식으로 작업하는 것이 더 쉽습니다. 총 사령관은 또한 다중 이름 변경을위한 훌륭한 도구입니다.


나는 비슷한 것을 (파이썬 이름 바꾸기 스크립트) 끝내었다.
Brigand

3

누락 된 시퀀스 부분에는 2 개의 라이너를 사용했습니다.

CONCAT=$(echo $(ls *.png | sort -n -t _ -k 2) | sed -e "s/ /|/g")
ffmpeg -framerate 25 -i "concat:$CONCAT" -c:v libx264 -profile:v high -pix_fmt yuv420p output.mp4

이것이 미래에 누군가를 도울 수 있기를 바랍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.