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.