Tham gia âm thanh và hình ảnh -> Xuất dưới dạng video bằng FFmpeg


8

Tôi có 1 hình ảnh (jpg) và 1 tệp âm thanh (MP3) và tôi muốn xuất tệp này dưới dạng tệp video (ví dụ AVI).

Có ai biết cách sử dụng FFMPEG để tham gia hai không? Tôi muốn hiển thị hình ảnh trong suốt thời gian của âm thanh.

Có ai có ý kiến ​​gì không?


Bạn đang sử dụng Os nào
subanki

Câu trả lời:


6

Nếu bạn đang ở trong Windows, bạn cũng có thể làm điều đó trong nhà sản xuất Windows Movie ... nếu bạn cần hướng dẫn, vui lòng để lại nhận xét

Đối với FFmpeg, hãy sử dụng cái này

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 là số lượng khung hình cần được lặp để có hình ảnh liên tục cho toàn bộ tệp audio.mp3

    Ví dụ: Trong 8 phút và 3 giây ((8m x 60s + 3s) x 30fps = 14490 vf)

Tài nguyên từ đây


Xin chào Subanki - cảm ơn bình luận của bạn !! Tôi không hiểu điều này mặc dù .. Tôi cần xuất một tệp video từ âm thanh và hình ảnh. Làm thế nào để làm điều này?
dùng41559

@nayrsllew Tôi vừa phát hiện ra rằng mã không hoạt động, xin lỗi .. Vâng, điều cơ bản là chuyển đổi nó thành video bằng cách sử dụng ffmpeg -f image2 -i image% d.jpg video.mpg sau đó tham gia video và âm thanh
subanki

đã cập nhật câu trả lời của tôi, thật khó khăn nhưng tìm kiếm google 1 giờ của tôi đã tìm thấy nó, tôi rất vui :)
subanki

Câu trả lời là chính xác, tại sao xuống -vote :(
subanki

Hi Cant làm, bạn có thể giúp tôi ở đây. Video kết quả là quá lớn. Tôi cần video cùng kích thước của tệp mp3. Tập tin hình ảnh của tôi là rất nhỏ. Ngoài ra tôi cần tải Video này lên Youtube.
Parminder

7

Có một cách đơn giản hơn nhiều so với những cách được đề xuất ở đây, đó là không yêu cầu tính toán số lượng khung hoặc nhập độ dài của các tệp riêng lẻ (đặc biệt tốt hơn để xử lý hàng loạt). Với phiên bản gần đây của ffmpeg, bạn có thể sử dụng -shortesttùy chọn dừng mã hóa khi luồng ngắn nhất kết thúc - trong trường hợp này là input.mp3 (vì hình ảnh sẽ lặp lại mãi mãi, nó có độ dài vô hạn):

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

Điều này sử dụng 2 khung hình mỗi giây cho hình ảnh / video, điều này sẽ ổn, nhưng bạn có thể đặt nó thành 25 tiêu chuẩn hơn nếu bạn muốn.



5

subanki gần như đã có nó đúng. Dòng lệnh làm việc như sau;

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

ghi đè tập tin đầu ra mà không cần nhắc

-loop 1

Tùy chọn '-loop_input' không được sử dụng -loop 1. Xem tài liệu ffmpeg .

-Tôi

tập tin đầu vào

-r

Số khung hình mỗi giây
cũng có thể được biểu thị là: -r 30000/1001 cho khung hình / giây là 29,97nnn

-b: v

tốc độ bit video; số càng cao, chất lượng càng tốt và kích thước tệp càng lớn.

-vframes

Như đã giải thích ở trên; lấy tổng thời gian của tệp âm thanh của bạn tính bằng giây (ví dụ 00:02:41 (2 phút 41 giây) bằng 161 tổng số giây (2 x 60) + 41). Sau đó nhân tổng số giây với Số khung hình mỗi giây mà bạn đã chỉ định với -r (ví dụ: 161 x 30 = 4830).

-vframes có thể được thay thế bằng -t 161 (bản ghi thời lượng -t hoặc mã hóa thời lượng trong thời gian có thể có giây của âm thanh / video)

-acodec

Sử dụng codec âm thanh chính xác cho loại tệp bạn đang tạo. Đối với .mp4 phải là định dạng AAC. Codec libvo_aacenc là codec mã hóa chính xác cho hệ thống Windows 7 của tôi.

-ab

tốc độ âm thanh

kết quả.mp4

Đây là tên của tệp đầu ra. Nó có thể là bất kỳ tên tập tin hợp pháp cho hệ thống của bạn. Tiện ích mở rộng sẽ giúp ffmpeg xác định codec video phù hợp nếu bạn không chỉ định sử dụng -vcodec.


1

Tập lệnh bash / cygwin đơn giản mà AUTOMAGICALLY sẽ mã hóa tất cả các tệp của phần mở rộng $ AUDIO trong thư mục thành tệp video mp4 10FPS trong thư mục có nhúng thư mục hình ảnh,

hữu ích cho tải lên 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

Tải xuống VirtualDub , sau đó làm điều này:

  1. Mở hình ảnh như bạn sẽ mở một tập tin video bình thường.

  2. Tính thời lượng của âm thanh tính bằng giây và làm tròn nó đến toàn bộ giây gần nhất (ví dụ: 78,34 giây trở thành 79 giây). Giá trị này được gọi là x từ bây giờ.

  3. Chuyển đến "video> tốc độ khung hình" chọn "thay đổi thành tốc độ khung hình (khung hình / giây)" và nhập "1 / x" làm giá trị. Ngoài ra, nếu bạn muốn có tốc độ khung hình bình thường trong tệp kết quả như 25 khung hình / giây, chọn "Chuyển đổi thành khung hình / giây" và nhập tốc độ khung hình mong muốn trong đó.

  4. Chọn "video> nén" và chọn hương vị yêu thích của bạn. Có thể là bạn cần điều chỉnh kích thước của hình ảnh bằng bộ lọc thay đổi kích thước.

  5. Chuyển đến "âm thanh> âm thanh từ tệp khác" và chọn âm thanh của bạn ở đó. Nếu cần chọn nén cho âm thanh.

  6. Lưu các tập tin.

Nguồn: stephanV


Cảm ơn StephanV .. Tôi cần sử dụng FFMpeg nhưng đây là một gợi ý hay .. cảm ơn
user41559
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.