FFmpeg를 사용하여 오디오 및 이미지 결합-> 비디오로 출력


8

1 이미지 (jpg)와 1 오디오 파일 (MP3)이 있고 이것을 비디오 파일 (예 : AVI)로 출력하고 싶습니다.

누구든지 FFMPEG를 사용하여 두 사람을 합치는 방법을 알고 있습니까? 오디오가 지속되는 동안 이미지를 보여주고 싶습니다.

어떤 아이디어가 있습니까?


어떤 운영 체제를 사용하고
있습니까?

답변:


6

Windows에있는 경우 Windows Movie Maker에서도 할 수 있습니다 ... 지침이 필요한 경우 의견을 남겨주세요

FFmpeg의 경우 이것을 사용하십시오

ffmpeg -loop_input -vframes 14490 -i imagine.jpg -i audio.mp3 -y -r 30 
    -b 2500k -acodec ac3 -ab 384k -vcodec mpeg4 result.mp4
  • vframes 14490은 전체 audio.mp3 파일에 대해 연속적인 이미지를 얻기 위해 반복해야하는 프레임 수입니다.

    예 : 8 분 3 초 동안 ((8m x 60s + 3s) x 30fps = 14490 vf)

여기 에서 자원


안녕하세요 Subanki-귀하의 의견에 감사드립니다 !! 나는 이것을 이해하지 못한다. 오디오와 이미지로부터 비디오 파일을 출력 할 필요가있다. 어떻게 그렇게합니까?
41559

@nayrsllew 방금 코드가 작동하지 않는다는 것을 알았습니다. 죄송합니다. ffmpeg -f image2 -i image % d.jpg video.mpg를 사용하여 비디오로 변환 한 다음 비디오 및 오디오에 참여하십시오
subanki

내 답변을 업데이트, 그것은
힘들었지

대답은 정확합니다. 왜 다운 투표를했는지 :(
subanki

캔트 안녕하세요, 도와주세요. 결과 비디오가 너무 큽니다. 비디오와 동일한 크기의 mp3 파일이 필요합니다. 이미지 파일이 매우 작습니다. 또한이 비디오를 Youtube에 업로드해야합니다.
마인더

7

여기에 제안 된 것보다 훨씬 간단한 방법이 있습니다. 프레임 수를 계산하거나 개별 파일의 길이를 입력 할 필요가 없습니다 (특히 배치 처리에 더 좋습니다). 최신 버전의 ffmpeg를 사용하면 -shortest가장 짧은 스트림이 끝날 때 인코딩을 중지 하는 옵션을 사용할 수 있습니다. 이 경우 input.mp3 (이미지가 영원히 반복되므로 길이가 무한하므로) :

ffmpeg -i input.mp3 -f image2 -loop 1 -r 2 -i input.jpg \
-shortest -c:a copy -c:v libx264 -crf 23 -preset veryfast output.mp4

이것은 이미지 / 비디오에 초당 2 프레임을 사용하지만 괜찮을 것이지만 원하는 경우 더 표준 25로 설정할 수 있습니다.



5

수반 키는 거의 옳았습니다. 작동하는 명령 행은 다음과 같습니다.

ffmpeg -y -loop 1 -i image.jpg -i audio.mp3 -r 30 -b:v 2500k -vframes 14490 -acodec libvo_aacenc -ab 160k result.mp4
-와이

프롬프트없이 출력 파일 덮어 쓰기

루프 1

'-loop_input'옵션은 -loop 1을 사용하지 않습니다. ffmpeg 문서를 참조하십시오. . 입니다. .

-나는

입력 파일

-아르 자형

초당 프레임
수는 다음과 같이 표현 될 수 있습니다. -r 30000/1001, fps 29.97nnn

-b : v

비디오 비트 레이트; 숫자가 높을수록 품질이 좋아지고 파일 크기가 커집니다.

-vframe

위에서 설명한대로; 오디오 파일의 총 시간을 초 단위로 취하십시오 (예 : 00:02:41 (2 분 41 초)는 총 161 초 (2 x 60) + 41)와 같습니다. 그런 다음 -r로 지정한 초당 프레임 수 (예 : 161 x 30 = 4830)에 총 초 수를 곱하십시오.

-vframe은 -t 161로 대체 할 수 있습니다 (-t 지속 시간 기록 또는 오디오 / 비디오의 "지속 시간"초 코드 변환)

-acodec

작성중인 파일 유형에 맞는 올바른 오디오 코덱을 사용하십시오. .mp4의 경우 AAC 형식이어야합니다. 코덱 libvo_aacenc는 내 Windows 7 시스템에 올바른 인코딩 코덱이었습니다.

-ab

오디오 비트 레이트

결과 .mp4

이것은 출력 파일의 이름입니다. 시스템의 모든 유효한 파일 이름이 될 수 있습니다. 확장명은 -vcodec를 사용하여 지정하지 않은 경우 적절한 비디오 코덱을 결정하는 데 도움이됩니다.


1

디렉토리에있는 $ AUDIO 확장자의 모든 파일을 folder.jpg 이미지가 포함 된 디렉토리에있는 10FPS mp4 비디오 파일로 자동으로 인코딩하는 간단한 bash / cygwin 스크립트,

YouTube 업로드에 유용합니다.)

AUDIO=m4a; 
$'\n'; for a in `ls -1 *.$AUDIO `; do ffmpeg -i $a &2> $a.info ; done;
cat '' > do.sh
IFS=$'\n'; 
for a in `ls -1 *.$AUDIO`; do D=`grep Duration $a.info | cut -d',' -f1 | cut -d' ' -f4 | cut -d'.' -f1 | head -n1 `; S=$(( $( echo $D | cut -d':' -f2 ) * 60 + 1 + ` echo $D | cut -d':' -f3  ` )) ; echo ffmpeg -loop_input -vframes $(( $S * 10 )) -i folder.jpg -i \"$a\" -y  -r 10 -b 2500k -ab 384k -vcodec mpeg4 \"$a.mp4\" >> do.sh;  done;
split -l5 do.sh
xa* &

0

VirtualDub를 다운로드 한 후 다음을 수행하십시오.

  1. 일반 비디오 파일을 여는 것처럼 이미지를 엽니 다.

  2. 오디오 지속 시간을 초 단위로 계산하고 가장 가까운 초 단위로 올림합니다 (예 : 78.34 초가 79 초가 됨). 이 값을 지금부터 x라고합니다.

  3. "비디오> 프레임 속도"로 이동하여 "프레임 속도 (fps)로 변경"을 선택하고 값으로 "1 / x"를 입력하십시오. 또한 25fps와 같은 결과 파일에 일반 프레임 속도를 유지하려면 "fps로 변환"을 선택하고 원하는 프레임 속도를 입력하십시오.

  4. "비디오> 압축"을 선택하고 좋아하는 맛을 선택하십시오. 크기 조정 필터를 사용하여 이미지의 크기를 조정해야 할 수도 있습니다.

  5. "오디오> 다른 파일의 오디오"로 이동하여 오디오를 선택하십시오. 필요한 경우 오디오 압축을 선택하십시오.

  6. 파일을 저장하십시오.

출처 : stephanV


.. 감사 감사합니다 StephanV은 .. 내가는 FFmpeg를 사용할 필요가 있지만, 이것은 좋은 제안입니다
user41559
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.