ffmpeg -r 1/5 -start_number 2 -i img%03d.png -c:v libx264 -r 30 -pix_fmt yuv420p out.mp4
이 줄은 정상적으로 작동했지만 다른 폴더의 이미지에서 비디오 파일을 만들고 싶습니다. 내 폴더의 이미지 이름은 다음과 같습니다.
img001.jpg
img002.jpg
img003.jpg
...
다른 폴더에서 이미지 파일을 어떻게 입력 할 수 있습니까? 예:C:\mypics
이 명령을 시도했지만 ffmpeg
첫 번째 이미지 (img001.jpg)로만 비디오를 생성했습니다.
ffmpeg -r 1/5 -start_number 0 -i C:\myimages\img%03d.png -c:v libx264 -r 30 -pix_fmt yuv420p out.mp4
답변
이미지에서 비디오 슬라이드 쇼 만들기 – FFmpeg를 참조하십시오.
비디오에 프레임이 올바르게 표시되지 않는 경우 첫 번째 이미지를 건너 뛰거나 한 프레임에만 표시되는 등의 문제가 발생 하면 출력 프레임 속도 에 -r 대신 fps 비디오 필터 를 사용하십시오
ffmpeg -r 1/5 -i img%03d.png -c:v libx264 -vf fps=25 -pix_fmt yuv420p out.mp4
또는 “fps = 25, format = yuv420p” 와 같이 -pix_fmt yuv420p 를 대체하기 위해 형식 비디오 필터를 필터 체인에 추가 할 수 있습니다 . 이 방법의 장점은 어떤 필터를 먼저 제어 할 수 있다는 것입니다
ffmpeg -r 1/5 -i img%03d.png -c:v libx264 -vf "fps=25,format=yuv420p" out.mp4
나는 아래 매개 변수를 테스트했는데 그것은 나를 위해 일했다.
"e:\ffmpeg\ffmpeg.exe" -r 1/5 -start_number 0 -i "E:\images\01\padlock%3d.png" -c:v libx264 -vf "fps=25,format=yuv420p" e:\out.mp4
아래 매개 변수도 작동했지만 항상 첫 번째 이미지를 건너 뜁니다.
"e:\ffmpeg\ffmpeg.exe" -r 1/5 -start_number 0 -i "E:\images\01\padlock%3d.png" -c:v libx264 -r 30 -pix_fmt yuv420p e:\out.mp4
다른 폴더에있는 이미지로 비디오 만들기
먼저 아래와 같이 imagepaths.txt 에 이미지 경로를 추가하십시오 .
# this is a comment details https://trac.ffmpeg.org/wiki/Concatenate
file 'E:\images\png\images__%3d.jpg'
file 'E:\images\jpg\images__%3d.jpg'
다음과 같은 샘플 사용법;
"h:\ffmpeg\ffmpeg.exe" -y -r 1/5 -f concat -safe 0 -i "E:\images\imagepaths.txt" -c:v libx264 -vf "fps=25,format=yuv420p" "e:\out.mp4"
-safe 0 매개 변수로 안전하지 않은 파일 이름 오류 방지
관련된 링크들
답변
-pattern_type glob
이 훌륭한 옵션을 사용하면 많은 경우 이미지를 쉽게 선택할 수 있습니다.
초당 하나의 이미지로 슬라이드 쇼 비디오
ffmpeg -framerate 1 -pattern_type glob -i '*.png' \
-c:v libx264 -r 30 -pix_fmt yuv420p out.mp4
이미지가 끝났을 때 오디오가 길어질 때 음악을 추가하십시오.
ffmpeg -framerate 1 -pattern_type glob -i '*.png' -i audio.ogg \
-c:a copy -shortest -c:v libx264 -r 30 -pix_fmt yuv420p out.mp4
YouTube의 두 가지 데모는 다음과 같습니다.
히피가되어 Theora의 특허를받지 않은 비디오 형식을 사용하십시오 .
ffmpeg -framerate 1 -pattern_type glob -i '*.png' -i audio.ogg \
-c:a copy -shortest -c:v libtheora -r 30 -pix_fmt yuv420p out.ogg
이미지는 물론 알파벳순으로 정렬해야합니다.
0001-first-thing.jpg
0002-second-thing.jpg
0003-and-third.jpg
등등.
또한 첫 번째 가능성으로 그들을 자르기에 의해, 모든 이미지는 동일한 화면 비율을 사용할 수 있도록 할 imagemagick
또는 nomacs 그는 FFmpeg 어려운 결정을 내려야하지 않도록 미리. 특히, 너비는 2로 나눌 수 있어야합니다. 그렇지 않으면 “2를 나눌 수없는 너비”로 변환에 실패합니다.
30 FPS에서 프레임 당 하나의 이미지가있는 표준 속도 비디오
ffmpeg -framerate 30 -pattern_type glob -i '*.png' \
-c:v libx264 -pix_fmt yuv420p out.mp4
그 모습은 다음과 같습니다.
GIF로 생성 : /ubuntu/648603/how-to-create-an-animated-gif-from-mp4-video-via-command-line/837574#837574
그것에 오디오를 추가하십시오 :
ffmpeg -framerate 30 -pattern_type glob -i '*.png' \
-i audio.ogg -c:a copy -shortest -c:v libx264 -pix_fmt yuv420p out.mp4
결과: https://www.youtube.com/watch?v=HG7c7lldhM4
다음은 제가 사용한 테스트 미디어입니다.
wget -O opengl-rotating-triangle.zip https://github.com/cirosantilli/media/blob/master/opengl-rotating-triangle.zip?raw=true
unzip opengl-rotating-triangle.zip
cd opengl-rotating-triangle
wget -O audio.ogg https://upload.wikimedia.org/wikipedia/commons/7/74/Alnitaque_%26_Moon_Shot_-_EURO_%28Extended_Mix%29.ogg
다음으로 생성 된 이미지 : 하는 방법 GLUT / OpenGL을 파일로 렌더링에 사용하는 방법?
특수 알고리즘을 사용하여 프레임 전체를 압축 할 수 있기 때문에 비디오가 ZIP보다 이미지 시퀀스를 얼마나 잘 압축하는지 관찰하는 것이 좋습니다.
opengl-rotating-triangle.mp4
: 340Kopengl-rotating-triangle.zip
: 7.3M
하나의 음악 파일을 YouTube 업로드 용 고정 이미지가있는 비디오로 변환
답변 : /superuser/700419/how-to-convert-mp3-to-youtube-allowed-video-format/1472572#1472572
전체 현실적인 슬라이드 쇼 사례 연구 설정 단계별
단일 ffmpeg 명령을 실행하는 것보다 슬라이드 쇼를 만드는 것이 조금 더 많으므로 여기에 더 흥미로운 자세한 예가 있습니다. 에서이 타임 라인에서 영감을 얻은 있습니다.
입력 미디어를 가져옵니다.
mkdir -p orig
cd orig
wget -O 1.png https://upload.wikimedia.org/wikipedia/commons/2/22/Australopithecus_afarensis.png
wget -O 2.jpg https://upload.wikimedia.org/wikipedia/commons/6/61/Homo_habilis-2.JPG
wget -O 3.jpg https://upload.wikimedia.org/wikipedia/commons/c/cb/Homo_erectus_new.JPG
wget -O 4.png https://upload.wikimedia.org/wikipedia/commons/1/1f/Homo_heidelbergensis_-_forensic_facial_reconstruction-crop.png
wget -O 5.jpg https://upload.wikimedia.org/wikipedia/commons/thumb/5/5a/Sabaa_Nissan_Militiaman.jpg/450px-Sabaa_Nissan_Militiaman.jpg
wget -O audio.ogg https://upload.wikimedia.org/wikipedia/commons/7/74/Alnitaque_%26_Moon_Shot_-_EURO_%28Extended_Mix%29.ogg
cd ..
# Convert all to PNG for consistency.
# /unix/29869/converting-multiple-image-files-from-jpeg-to-pdf-format
# Hardlink the ones that are already PNG.
mkdir -p png
mogrify -format png -path png orig/*.jpg
ln -P orig/*.png png
이제 최종 이미지 비율을 결정하기 위해 모든 이미지 크기를 간단히 살펴 보겠습니다.
identify png/*
어떤 출력 :
png/1.png PNG 557x495 557x495+0+0 8-bit sRGB 653KB 0.000u 0:00.000
png/2.png PNG 664x800 664x800+0+0 8-bit sRGB 853KB 0.000u 0:00.000
png/3.png PNG 544x680 544x680+0+0 8-bit sRGB 442KB 0.000u 0:00.000
png/4.png PNG 207x238 207x238+0+0 8-bit sRGB 76.8KB 0.000u 0:00.000
png/5.png PNG 450x600 450x600+0+0 8-bit sRGB 627KB 0.000u 0:00.000
따라서 클래식 480p (640×480 == 4/3) 종횡비가 적절 해 보입니다.
너비를 균일하게 만들기 위해 최소 크기 조정으로 한 번의 변환을 수행하십시오 (TODO는 모든 너비에 대해 자동화합니다. 여기서 수동으로 identify
출력을 보고 너비와 높이를 하나씩 줄였습니다).
mkdir -p raw
convert png/1.png -resize 556x494 raw/1.png
ln -P png/2.png png/3.png png/4.png png/5.png raw
ffmpeg -framerate 1 -pattern_type glob -i 'raw/*.png' -i orig/audio.ogg -c:v libx264 -c:a copy -shortest -r 30 -pix_fmt yuv420p raw.mp4
다음과 같이 끔찍한 출력이 생성됩니다.
ffprobe raw.mp4
ffmpeg는 첫 번째 이미지의 크기 인 556×494를 가져온 다음 다른 모든 이미지를 정확한 크기로 변환하여 가로 세로 비율을 깨뜨립니다.
이제 ImageMagick에 따라 자르면서 이미지를 대상 480p 종횡비로 자동 변환 해 보겠습니다 . 이미지를 특정 종횡비로 최소화하는 방법은 무엇입니까?
mkdir -p auto
mogrify -path auto -geometry 640x480^ -gravity center -crop 640x480+0+0 png/*.png
ffmpeg -framerate 1 -pattern_type glob -i 'auto/*.png' -i orig/audio.ogg -c:v libx264 -c:a copy -shortest -r 30 -pix_fmt yuv420p auto.mp4
이제 종횡비는 좋지만 필연적으로 일부 자르기를 수행해야했기 때문에 이미지의 흥미로운 부분을 잘라 냈습니다.
다른 옵션은 다음과 같은 화면비를 갖도록 검은 색 배경으로 채 웁니다. 상자에 맞게 크기를 조정하고 “빈”부분에서 배경을 검은 색으로 설정합니다
mkdir -p black
ffmpeg -framerate 1 -pattern_type glob -i 'black/*.png' -i orig/audio.ogg -c:v libx264 -c:a copy -shortest -r 30 -pix_fmt yuv420p black.mp4
일반적으로 말해서, 처음에는 이러한 문제를 피하기 위해 동일하거나 유사한 종횡비를 가진 이미지를 선택하는 것이 이상적입니다.
CLI 옵션 정보
이름에도 불구하고 있다는 그러나 참고 -glob
이 예를 들어, 쉘 글롭의 재잘 같은 일반으로되지 않습니다 : -i '*'
실패 https://trac.ffmpeg.org/ticket/3620 (파일 형식은 확장에서 도출되는 분명히 있기 때문에).
-r 30
차종 -framerate 1
: 동영상 30 FPS 낮은 프레임 속도에 대한 VLC 같은 선수 버그를 극복하기 위해 VLC가 FFmpeg를 가진 이미지로부터 생성 낮은 1 FPS 비디오의 정지 따라서는 두번째 효과 당 1 명 화상을 원하는 유지 프레임마다 30 회 반복한다.
다음 단계
당신은 또한 원할 것입니다 :
-
참여하기 전에 원하는 오디오 부분 잘라 내기 : ffmpeg를 사용하여 시작 및 종료 시간을 기준으로 비디오 자르기
ffmpeg -i in.mp3 -ss 03:10 -to 03:30 -c copy out.mp3
TODO : 중간 파일없이 여러 개의 오디오 파일을 잘라내어 비디오로 연결하는 방법을 배웁니다.
- ffmpeg cut 및 concat 단일 명령 행
- /video/21315/concatenating-split-media-files-using-concat-protocol
- /superuser/587511/concatenate-multiple-wav-files-using-single-command-without-extra-file
에 테스트
ffmpeg 3.4.4, vlc 3.0.3, 우분투 18.04.
서지