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.