YouTube 용 오디오 및 스틸 이미지로 비디오 만들기


23

다음 명령을 실행 중입니다.

ffmpeg -i audio.mp3 -ar 44100 -f image2 -i logo.jpg -r 15 -b 1800 -s 640x480 foo.mov

녹음 된 오디오 및 이미지가있는 비디오를 성공적으로 출력합니다.

.mov, .avi, .flv, .mp4와 같은 형식에 관계없이 YouTube에 업로드하려고하면 처리하지 못합니다.

YouTube에서 허용하는 형식을 생성하는 위의 설정에서 누락 된 설정이 있습니까? ffmpeg 설명서를 살펴 보았지만 머리 위로 들어갔습니다.

나는 30 초 mp3와 함께 2 초 비디오를 넣어 실험을했다. YouTube에 업로드했을 때 결과 비디오 길이는 2 초에 불과했습니다. 따라서 YouTube는 길이 만 비디오 트랙을보고있을 수 있으며, 사진의 길이가 길거나 길기 때문일 수 있습니다.

답변:


13

다음은 효과가 있습니다.

ffmpeg -i audio.mp3 -f image2 -loop 1 -i logo.jpg 
-r 15 -s 640x480 \
-c:v libx264 -crf 18 -tune stillimage -preset medium \
-shortest foo.mov

특히, loop옵션은 이미지를 프레임으로 복제합니다. 그런 다음 shortest파일이 커지거나 커지지 않도록 하는 옵션이 필요합니다 (이 방법으로 파일을 가장 짧은 스트림 길이 (여기서는 오디오 파일)로 자릅니다).

r옵션은 프레임 속도를 변경하고 crf 18품질을 설정합니다 (비디오 품질을 낮추려면 여기에서 더 높은 값을 사용하십시오). 자세한 내용은 여기를 참조하십시오 : FFmpeg : 최고의 비디오 및 오디오 조작 도구


2
나를 위해 작동하지 않습니다. 1 프레임 영화를받습니다.
Pavel Vlasov

나는 지금 나를 위해 일한다.
molnarg

4

다른 포럼에서 나에게 맞는 코드 조각 :

ffmpeg -loop 1 -r ntsc -i image.jpg -i song.mp3 -c:a copy -c:v libx264 -preset fast -threads 0 -shortest output.mkv 

2

나는 Pavel의 코드를 가져 와서 나에게도 도움이되었고 불필요한 옵션을 다듬어 단축했다.

ffmpeg -loop 1 -shortest -i <audio file> -i <image file> <output video file>

이것은 이미지 및 오디오 파일을 입력으로 사용하고 비디오 파일을 출력으로 생성하는 일반적인 형식입니다.

즉, 비디오 스트림은 무한 반복되는 단일 사진으로 만들어지기 때문에로 낮은 프레임 속도 (즉, 1 초에 나타나는 이미지 수)를 설정할 수 -r있습니다. 모든 출력 컨테이너가 낮은 프레임 속도를 허용하는 것은 아닙니다. 하나는 avi이므로 다음과 같이 할 수 있습니다.

ffmpeg -loop 1 -shortest -r 0.1 -i <audio file> -i <image file> output.avi

이렇게하면 기본값 25 대신 프레임 속도가 0.1 (예 : 10 초마다 하나의 이미지) 인 비디오 파일이 만들어집니다. 이는 파일 크기에는 영향을 주지만 비디오 품질에는 영향을 미치지 않습니다. 결국을 사용하여 더 나은 오디오 품질을 얻도록 오디오 비트 전송률을 설정할 수 있습니다 -ab. 이것이 실제로 YouTube에 이러한 종류의 비디오를 만드는 데 사용하는 명령입니다.

ffmpeg -loop 1 -shortest -r 0.1 -i <audio file> -i <image file> -ab 128k output.avi

감사. 나는 실행 ffmpeg -loop 1 -shortest -r 0.1 -i audio.mp3 -i image.jpg output.avi했지만 '옵션 루프를 찾을 수 없습니다.' 어떤 아이디어?
대령 패닉

@col 여전히 관심이 있다면 : 오디오가 아니라 이미지 입력 ​​전에 루프 옵션이 필요합니다.
slhck

이것은 나를 위해 일한 것입니다 :ffmpeg -i <audio file> -loop 1 -i <image file> -shortest <output video file>
Karolinger

2

avconv로 :

avconv -i input.mp3 -loop 1 -f image2 -i logo.png -r 30 -s 640x480 -ab 128k -ar 44100 -ac 1 -ss 00:00:00.000 -t 01:02:03.123 foo.ogv

수퍼 유저에 오신 것을 환영합니다. 답변 해 주셔서 감사합니다. 제안하는 내용과 도움이되는 이유에 대한 자세한 내용
브래드 패튼

1
응답은 ffmpeg 때문에 사용되지 않습니다
ZiTAL

2
ffmpeg 프로젝트가 진행 중이 아닙니다. 더 이상 사용되지 않는 메시지로 이어지는 분쟁이있었습니다. 참조 stackoverflow.com/questions/9477115/...
브래드 패튼

2
-shortest수동으로 시간을 선언하는 대신 출력 옵션을 사용하십시오 ( 가능한 경우 ffmpeg대신 사용 avconv하십시오).
llogan

2
누구나 관심을 가질 수 있도록 bash 스크립트를 작성
Dallaylaen

0

나는 많은 실험 후에 작동하도록했습니다 : https://www.youtube.com/watch?v=qjlDT819Q3s

  1. https://trac.ffmpeg.org/wiki/Create%20a%20video%20slideshow%20 에서 % 20images에 따라 이미지를 비디오로 변환 :

    ffmpeg -framerate 1/20 -i png/img-%03d.png -c:v libx264 -vf "fps=25,format=yuv420p" png.mp4

    여기에서는 몇 가지 이미지를 사용하여 20 대마다 변경합니다.

  2. https://trac.ffmpeg.org/wiki/Concatenate 에 따라 오디오 지속 시간에 걸쳐 위의 비디오 사본을 충분히 연결 하십시오 . ffmpeg -i wav.wav -i png.mp4 youtube.mp4올바른 행동을 기대 하는 것과 같은 다른 솔루션 은 결국 YouTube에 의해 거부되었습니다 (VLC와 같은 플레이어는 혼란스럽고 올바르게 찾을 수 없습니다). 내 생각에 사본에서 시간 위치를 조정해야 ffmpeg하지만 연결되지 않은 경우에는 그렇지 않습니다.

    ffmpeg -f concat -i pngs.txt -c copy pngs.mp4

    ( pngs.txt필요한만큼의 사본을 포함 하도록 파일 을 직접 만든 경우 : 사본 = 오디오 길이 / 비디오 길이)

  3. https://www.virag.si/2015/06/encoding-videos-for-youtube-with-ffmpeg/ 에 따라 2에서 얻은 비디오와 오디오를 혼합하십시오 .

    ffmpeg -i pngs.mp4 -i wav.wav -shortest -codec:v libx264 -crf 21 -bf 2 -flags +cgop -pix_fmt yuv420p -codec:a aac -strict -2 -b:a 384k -r:a 48000 -movflags faststart youtube.mp4

이제 파일 youtube.mp4은 YT에 의해 수락되어야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.