Tạo video với âm thanh và hình ảnh tĩnh cho YouTube


23

Tôi đang chạy lệnh sau:

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

Mà xuất thành công một video với âm thanh được ghi của tôi và một hình ảnh trên đó.

Khi tôi thử và tải nó lên YouTube, nó không xử lý được, bất kể các định dạng tôi thử: .mov, .avi, .flv, .mp4

Có một số cài đặt tôi bị thiếu ở trên sẽ tạo định dạng mà Youtube sẽ chấp nhận không? Tôi đã thử xem qua tài liệu ffmpeg nhưng tôi ở trên đầu.

Tôi đã làm một thí nghiệm bằng cách đặt video 2 giây với mp3 30 giây. Khi tôi tải lên youtube, video kết quả chỉ dài 2 giây. Vì vậy, có thể YouTube chỉ nhìn vào đoạn video và độ dài của hình ảnh chỉ là một khung hình dài hoặc bất cứ điều gì, có thể điều đó làm hỏng nó.

Câu trả lời:


13

Đây là những gì đã làm việc:

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

Cụ thể, looptùy chọn, sẽ nhân đôi hình ảnh dưới dạng khung. Sau đó, nó cũng sẽ cần shortesttùy chọn để giữ cho tệp không tăng và phát triển (theo cách này, nó cắt ngắn nó theo chiều dài của luồng ngắn nhất - ở đây, tệp âm thanh).

Các rtùy chọn thay đổi tỷ lệ khung hình, và crf 18đặt chất lượng (sử dụng một giá trị cao hơn vào đây để chất lượng video thấp hơn). Xem tại đây để biết thêm chi tiết: FFmpeg: Công cụ thao tác âm thanh và video tuyệt đỉnh


2
Không làm việc cho tôi. Tôi nhận được một bộ phim một khung hình.
Pavel Vlasov

Tôi làm việc cho tôi bây giờ.
molnarg

4

Một đoạn mã phù hợp với tôi, từ một diễn đàn khác:

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

Tôi đã lấy mã của Pavel, nó cũng có tác dụng với tôi và rút ngắn nó bằng cách cắt bớt các tùy chọn không cần thiết:

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

đây là một hình thức chung hoạt động với bất kỳ tệp hình ảnh và âm thanh nào làm đầu vào và tạo ra một tệp video làm đầu ra.

Điều đó nói rằng, vì luồng video của bạn sẽ được tạo từ một hình ảnh lặp đi lặp lại vô thời hạn, bạn có thể đặt tốc độ khung hình thấp (đó là số lượng hình ảnh xuất hiện trong một giây) với -r. Lưu ý rằng không phải tất cả các container đầu ra đều cho phép tốc độ khung hình thấp. Một trong số đó là avi, vì vậy bạn có thể làm:

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

điều này sẽ tạo một tệp video có tốc độ khung hình là 0,1 (tức là một hình ảnh mỗi 10 giây) thay vì mặc định là 25. Điều này sẽ ảnh hưởng đến kích thước tệp nhưng không ảnh hưởng đến chất lượng video. Cuối cùng, bạn có thể đặt tốc độ bit âm thanh để có chất lượng âm thanh tốt hơn -ab. Đây là lệnh tôi thực sự sử dụng để tạo loại video này cho youtube:

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

Cảm ơn. Tôi đã chạy ffmpeg -loop 1 -shortest -r 0.1 -i audio.mp3 -i image.jpg output.avinhưng không tìm thấy 'Vòng lặp tùy chọn.' Có ý kiến ​​gì không?
Đại tá Panic

@col Nếu bạn vẫn quan tâm: bạn cần tùy chọn vòng lặp trước khi nhập hình ảnh, không phải trước âm thanh.
slhck

đây là những gì làm việc cho tôi:ffmpeg -i <audio file> -loop 1 -i <image file> -shortest <output video file>
Karolinger

2

với 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

Chào mừng bạn đến với SuperUser và cảm ơn câu trả lời của bạn. Một số chi tiết hơn về những gì bạn đang đề xuất và tại sao sẽ hữu ích.
Brad Patton

1
phản hồi là vì ffmpeg không được chấp nhận
ZiTAL

2
Không có dự án ffmpeg đang diễn ra. Có một tranh chấp dẫn đến thông điệp không được chấp nhận. Xem stackoverflow.com/questions/9477115/ Mạnh
Brad Patton

2
Sử dụng các -shortesttùy chọn đầu ra thay vì thời gian khai báo thủ công (cũng vậy, sử dụng ffmpegthay vì avconvnếu có thể).
llogan

2
Tạo một kịch bản bash trong trường hợp bất cứ ai quan tâm
Dallaylaen

0

Tôi đã làm việc này sau nhiều thử nghiệm: https://www.youtube.com/watch?v=qjlDT819Q3s

  1. Chuyển đổi hình ảnh thành video theo https://trac.ffmpeg.org/wiki/Create%20a%20video%20slIDIA%20from%20images :

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

    Ở đây tôi sử dụng một vài hình ảnh và làm cho chúng thay đổi sau mỗi 20 giây.

  2. Ghép đủ các bản sao của video trên để kéo dài thời lượng âm thanh của bạn theo https://trac.ffmpeg.org/wiki/Concatenate . Các giải pháp khác, như mong đợi ffmpeg -i wav.wav -i png.mp4 youtube.mp4làm điều đúng đắn, cuối cùng đã bị YouTube từ chối (đồng thời, những người chơi như VLC bị nhầm lẫn và không thể tìm kiếm đúng cách). Tôi đoán là vị trí thời gian cần phải được điều chỉnh trong các bản sao, điều ffmpegnày không làm, trừ khi chúng được nối:

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

    (trong đó tệp pngs.txtđược tạo bằng tay để chứa bao nhiêu bản sao cần thiết: bản sao = độ dài âm thanh / độ dài video)

  3. Trộn âm thanh của bạn với video thu được thành 2 theo https://www.virag.si/2015/06/encoding-ideo-for-youtube-with-ffmpeg/ :

    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

Bây giờ các tập tin youtube.mp4nên được chấp nhận bởi YT.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.