태그 보관물: ffmpeg

ffmpeg

FFmpeg를 사용하여 이미지에서 비디오를 만드는 방법은 무엇입니까? 세트의 시퀀스에서 비디오를 만들? 예를

그것은 사용할 수 있습니다 ffmpeg수가 0에서 시작하지 않는 한 세트의 시퀀스에서 비디오를 만들?

예를 들어 일부 이미지 [test_100.jpg, test_101.jpg, test_102.jpg, …, test_200.jpg]가 있고 비디오로 변환하고 싶습니다. 다음 명령을 시도했지만 작동하지 않습니다 (숫자가 0에서 시작해야합니다).

ffmpeg -i test_ % d.jpg -vcodec mpeg4 test.avi

조언이 있습니까?



답변

-start_number스위치를 다음과 같이 사용하는 경우 파일 이름을 바꿀 필요가 없습니다 .

ffmpeg -start_number n -i test_%d.jpg -vcodec mpeg4 test.avi

n스틸 시퀀스의 시작은 어디 입니까?

시퀀스가 시작되면 끊어지지 않는 한 작동합니다. 간격이 있고 모든 스틸을 포함하려면 간격을 채우기 위해 번호를 다시 매길 필요가 있습니다.

유용한 다른 스위치가 있습니다.

다음의 한 줄을 사용하여 프레임 속도를 낮추고 이미지를 압축하고 결과 비디오의 크기를 줄입니다.

ffmpeg.exe -f image2 -framerate 25 -pattern_type sequence -start_number 1234 -r 3 -i Imgp%04d.jpg -s 720x480 test.avi

-r 3옵션은 결과 비디오의 프레임 속도를 초당 3 프레임으로 설정하여 짧은 시간 동안 각각의 스틸을 볼 수 있습니다. 이 -s옵션은 결과 비디오의 크기를 관리하기 위해 사진을 원하는 해상도로 조정합니다.

(Windows 셸에서 교체 -i Imgp%04d.jpg-i "Imgp%%04d.jpg". 신용이를 위해 마이크 피츠 패트릭에 https://superuser.com/a/344178/153054 )


답변

아래 코드 스 니펫을 사용할 수 있습니다.

 cat *.jpg | ffmpeg -f image2pipe -r 1 -vcodec mjpeg -i - -vcodec libx264 out.mp4


답변

ffmpeg 문서 에서 예제 스크립트를 찾을 수 있습니다 .

3.2 단일 사진을 동영상으로 어떻게 인코딩합니까?

이름을 바꿀 사진이 많은 경우 다음 명령을 사용하여 부담을 줄일 수 있습니다. Bourne 쉘 구문을 사용하는 명령은 * jpg와 일치하는 현재 디렉토리의 모든 파일을 /tmp' directory in the sequence ofimg001.jpg ‘,`img002.jpg’등과 심볼릭 링크합니다 .

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

그런 다음 다음을 실행하십시오.

ffmpeg -f image2 -i /tmp/img%03d.jpg /tmp/a.mpg


답변

에서 는 FFmpeg의 문서 :

글로브 패턴 사용

ffmpeg는 bash 스타일 globbing도 지원합니다 (*는 임의의 수의 문자를 나타냄).

이미지가 순차적이지만 이전 예제에서와 같이 반드시 숫자 순서로되어 있지 않은 경우에 유용합니다.

ffmpeg -r 1 -pattern_type glob -i 'test_*.jpg' -c:v libx264 out.mp4

따라서 파일이 정렬되어 -pattern_type glob있으면 스위치를 사용하는 것이 좋습니다.


답변

내가 아는 한, 임의의 숫자로 시퀀스를 시작할 수 없습니다 (0 또는 1에서 시작 해야하는지 기억하지 못합니다). 또한 간격이있을 수 없습니다. 그렇다면 ffmpeg는 시퀀스가 ​​끝났다고 가정합니다. 더 이상 이미지 추가를 중지하십시오.

또한, 내 답변에 대한 의견에 명시된 바와 같이 색인 너비를 지정해야합니다. 처럼:

image % 03d.jpg

% 03d 인덱스 유형을 사용하는 경우 다음과 같이 파일 이름을 0으로 채워야합니다.

image001.jpg image002.jpg image003.jpg

기타


답변

나는 Francisco에 동의하지만 해결 방법으로 빠른 스크립트를 작성하여 ffmpeg에 필요한 시퀀스 번호로 파일에 대한 심볼릭 링크를 이동하거나 만들 수 있습니다. 그런 다음 스크립트는 ffmpeg를 호출 한 다음 링크를 제거하거나 파일을 원래 위치로 다시 이동할 수 있습니다.


답변

찾다

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