이미지 파일을 입력으로 사용하여 ffmpeg 입력 옵션에 대한 설명


34

이미지가 몇 개 있는데 ffmpeg로 애니메이션 GIF를 만들고 싶습니다. 이미지 이름은 다음과 같습니다.

837_1.png
838_1.png
...

ffmpeg 의 -i 명령 행 옵션 을 이해하려고 노력하고 있지만 일부 문제가 발생했습니다.

아무것도 지정하지 않으면 파일을 교체하도록 요청합니다.

ffmpeg -i * -vcodec libx264 out.mp4

ffmpeg version 1.2.1 Copyright (c) 2000-2013 the FFmpeg developers
  built on Jul 26 2013 20:18:03 with Apple LLVM version 4.2 (clang-425.0.28) (based on LLVM 3.2svn)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/1.2.1 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables --enable-avresample --enable-vda --cc=cc --host-cflags= --host-ldflags= --enable-libx264 --enable-libfaac --enable-libmp3lame --enable-libxvid
  libavutil      52. 18.100 / 52. 18.100
  libavcodec     54. 92.100 / 54. 92.100
  libavformat    54. 63.104 / 54. 63.104
  libavdevice    54.  3.103 / 54.  3.103
  libavfilter     3. 42.103 /  3. 42.103
  libswscale      2.  2.100 /  2.  2.100
  libswresample   0. 17.102 /  0. 17.102
  libpostproc    52.  2.100 / 52.  2.100
Input #0, image2, from '358_1.png':
  Duration: 00:00:00.04, start: 0.000000, bitrate: N/A
    Stream #0:0: Video: png, rgb24, 550x550, 25 tbr, 25 tbn, 25 tbc
File '359_1.png' already exists. Overwrite ? [y/N]

인터넷에서 가장 많이 사용되는 형식 (% d) 중 하나를 사용하려고하면 .. ffmpeg에서 파일을 찾을 수 없습니다.

fmpeg -i '%3d_1.png' -vcodec libx264 out.mp4

ffmpeg version 1.2.1 Copyright (c) 2000-2013 the FFmpeg developers
  built on Jul 26 2013 20:18:03 with Apple LLVM version 4.2 (clang-425.0.28) (based on LLVM 3.2svn)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/1.2.1 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables --enable-avresample --enable-vda --cc=cc --host-cflags= --host-ldflags= --enable-libx264 --enable-libfaac --enable-libmp3lame --enable-libxvid
  libavutil      52. 18.100 / 52. 18.100
  libavcodec     54. 92.100 / 54. 92.100
  libavformat    54. 63.104 / 54. 63.104
  libavdevice    54.  3.103 / 54.  3.103
  libavfilter     3. 42.103 /  3. 42.103
  libswscale      2.  2.100 /  2.  2.100
  libswresample   0. 17.102 /  0. 17.102
  libpostproc    52.  2.100 / 52.  2.100
[image2 @ 0x7f963a006600] Could find no file with with path '%3d_1.png' and index in the range 0-4
%3d_1.png: No such file or directory

그래서 .mp-g 명령과 함께 -i 명령 행 옵션 을 사용하는 방법은 다음 과 같습니다.

명확성을 기하기 위해 Mac OSX 10.8, ffmpeg 버전 1.2.1, zsh 4.3.11에 있습니다.

답변:


47

추가 옵션이 없으면 ffmpeg의 image2demuxer는 0으로 시작하는 시퀀스를 찾습니다. 또한 기본 범위가 5 인이 인덱스를 확인합니다 (따라서 0-4 범위의 인덱스가 없다고 불평하는 이유). 당 문서 는 837과 같은 임의의 인덱스에서 시작하려는 경우, 당신은 시작 번호를 설정해야합니다.

ffmpeg -start_number 837 -i '%3d_1.png' -c:v libx264 out.mp4

PNG에서 H.264 로의 색상 공간 변환

PNG 파일은 RGB 색상 공간을 사용하여 픽셀을 나타내므로 H.264 로의 변환은 YUV 4 : 4 : 4 ( 비 서브 샘플링 )입니다. 결과 비디오는 일부 플레이어, 특히 FFmpeg 기반이 아닌 모든 플레이어에서 재생되지 않을 수 있습니다. 플레이어는 검은 색 프레임 만 표시하거나 충돌 할 수 있습니다. 이를 해결하려면 픽셀 형식을 YUV 4 : 2 : 0으로 변경하십시오.

ffmpeg -start_number 837 -i '%3d_1.png' -c:v libx264 -pix_fmt yuv420p out.mp4

품질을 제어하려면 -crf옵션을 사용하십시오 . 자세한 내용은 x264 인코딩 안내서 를 참조하십시오.

*글로브가 작동하지 않는 이유

*입력 옵션으로 사용하지 마십시오 . 쉘은 그것을보기 전에 현재 디렉토리의 모든 파일로 ffmpeg확장하므로 명령은로 확장됩니다 ffmpeg -i file1 file2 … filen. 모든 입력 파일 ffmpeg에는 -i옵션 이 필요 file2 … filen하므로 출력 파일로 대신 덮어 씁니다. 안좋다.


매우 완전한 답변! 그리고 애니메이션 GIF에 대한 조언이 있습니까?
— nkint

애니메이션 GIF의 경우 시각적 품질이 크게 향상되어 ffmpeg 버전 2.0 이상으로 업데이트하려고합니다. 다운로드 정적 나이는 FFmpeg를 들어 OS X 용 빌드에 페이지를 참조하십시오 몇 가지 링크가 있습니다 끔찍한 품질 .gif 참고로는 FFmpeg 변환 flv를 비디오
— slhck

실제로, 그것은 + 0..4뿐만 아니라 8,16,32,64 등을 검사합니다. 이것은 HTTP url을 사용할 때 눈에 able니다. 그러나 "file found"에 해당 image2하는 것을 인식 200 OK하지 못하면 검색을 중지하지 않습니다.
— MSalters

1
귀하의 제안을 이행하려고 시도한 후에도 동일한 결과가 나타납니다. 내 파일의 이름은 DSCxxxxx.jpg어디에서 xxxxx제로로 5 자리 숫자의 시작 (주 내가 더 밑줄이없는이)입니다. 그럼에도 불구하고, 실행 한 후 ffmpeg -r 30 -start_number 04606 -i DSC%d.jpg out.mp4나는 위의 원래의 게시물에서와 동일한 오류
— 익명

@jphollowed 파일 이름 패턴을 따옴표로 묶었습니까?
— slhck

29

다음 -pattern_type glob옵션 을 지정하여 글 로빙을 사용할 수 있습니다 .

ffmpeg -pattern_type glob -i '*.png' -vcodec libx264 out.mp4

2
훨씬 더 좋은 방법 :)
— Gustav

3
이것 만이 나를 위해 일했습니다. 어떤 방법이를 얻을 수 없습니다 xxx%d.png, xxx%3d.png, 'xxx%d.png'또는 'xxx%3d.png'일의 작업
— yPhil

이 작업을 시도한 후에도 같은 오류가 발생합니다.[image2 @ 0x2552560] Could find no file with path '*.jpg' and index in the range 0-4 *.jpg: No such file or directory
— 익명의

패턴 유형 'glob'이 선택되었지만이 libavformat 빌드 [Windows ffmpeg 사용] [oof, 아래로 스크롤해야 함]에서 globbing이 지원되지 않습니다.
— Katastic Voyage

7

참고 : Windows에서는 패턴 globbing이 작동하지 않으며 Windows에서는 libavfilter에서 globbing 지원이 부족하지 않을 수 있습니다. 따라서 Windows에서이 작업을 수행하는 경우 파일의 이름을 순차적으로 지정하도록 파일 이름을 바꿔야합니다. 그리고 차이없이.

간단한 Powershell 명령 줄을 사용하여 이름을 바꿀 수 있습니다.

dir *.jpg | %{$x=0} {Rename-Item $_ -NewName “Base$x”; $x++ }

이것은 반환합니다 file1.jpg file2.jpg... file10.jpg당신은 일종의 순으로 끝날 것인지하는 file1.jpg, file10.jpg...file2.jpg
— STIB

Base $ x.jpg가 아니어야합니까? 있는 그대로, 모든 파일 이름이 바뀌고 파일 확장자가 없어졌습니다.
— Katastic Voyage

5

PowerShell로 이름을 바꾸는 더 좋은 방법 (순서 유지) :

dir *.jpg | %{$x=0} {Rename-Item $_ -NewName "Base$($x.tostring('000000')).jpg"; $x++ }

dir알파벳순으로 정렬 된 파일을 항상 반환 합니까 ? sort-object믹스 에 추가하는 것이 더 안전 합니까?
— stib
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.