이미지 파일을 입력으로 사용하여 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.