2012-02-15 55 views
20

Tôi có 2 video: HEADSHOT.MOV và SCREEN.MOV. Cả hai đều là các tệp lớn và tôi đang tìm kiếm cả hai thu nhỏ (kích thước, tốc độ bit, v.v.) và đặt hai cạnh này trong cùng một khung hình, rất rộng. Kết quả cuối cùng sẽ là khi bạn chơi output_video.mp4, bạn sẽ có một khung hình rất rộng với cả hai video đồng bộ và chơi ở cùng tốc độ.FFMPEG 2 Video được chuyển mã và cạnh nhau trong 1 khung hình?

Dưới đây là phiên bản syntatically không chính xác về những gì tôi đang cố gắng để làm:

ffmpeg -i HEADSHOT.MOV -t 00:02:00 -acodec libfaac -ab 64k -vcodec libx264 -r 30 -pass 1 -s 374x210 -vf "movie=SCREEN.MOV [small]; [in][small] -an -r 30 -pass 1 -s 374x210 overlay=10:10 -t 00:02:00 [out]" -threads 0 output_movie.mp4 

Trong ví dụ trên, tôi cũng đã cố gắng để thiết lập một thời gian bộ phim thử nghiệm trong 2 phút đó nêu câu hỏi khác, là gì cách tốt nhất để xử lý 2 phim có độ dài khác nhau (nếu chúng gần)?

Các nguồn tài nguyên Tôi đã tìm thấy hữu ích cho đến nay là:

Multiple video sources combined into one

http://ffmpeg.org/ffmpeg.html#overlay-1

Bất kỳ sự giúp đỡ/lời khuyên được đánh giá rất nhiều. Tôi gặp sự cố với cú pháp FFMPEG! Cảm ơn bạn!

Trả lời

29

Kết quả có thể đạt được với sự kết hợp của quy mô, pad và các bộ lọc lớp phủ như sau:

ffmpeg.exe -i LeftInput.mp4 -vf "[in] scale=iw/2:ih/2, pad=2*iw:ih [left]; 
    movie=RightInput.mp4, scale=iw/3:ih/3, fade=out:300:30:alpha=1 [right]; 
    [left][right] overlay=main_w/2:0 [out]" -b:v 768k Output.mp4 

Đây là video đầu tiên được thu nhỏ bằng một nửa, và đệm kích thước ban đầu. Video thứ hai bị thu hẹp hai phần ba và được chồng lên nửa bên phải (vùng đệm) của video đầu tiên.

Video ngắn hơn có thể bị mờ đi; nếu không, khung cuối cùng sẽ được hiển thị cho đến khi kết thúc video được kết hợp.

Tốc độ bit kết quả có thể được đặt với tùy chọn -b:v. Ngoài ra, kích thước và vị trí video có thể được chỉ định bằng pixel cho bộ lọc pad, tỷ lệ và lớp phủ.

+0

Cảm ơn bạn Dmitry, điều này thật tuyệt. Bạn có bất kỳ đề xuất nào để tìm kiếm cả hai video vào một mã thời gian chung không? Tôi biết rằng đối với [left] tôi có thể sử dụng -ss nhưng bộ lọc duy nhất tôi có thể tìm cho [right] là seek_point nhưng đây chỉ là một số giây, không phải là tham chiếu tới mã thời gian. Có thể sử dụng một cái gì đó như setpts = [điểm mã thời gian cụ thể] không? Bất kỳ lời khuyên nào khác để đồng bộ hóa cả hai? – dcoffey3296

+6

Để chuyển các tham số đầu vào ngoài bộ lọc phim cho phép, hãy sử dụng -filter_complex thay thế. Nó linh hoạt hơn -vf. Ví dụ, cùng một đầu ra có thể đạt được với lệnh sau: 'ffmpeg.exe -i LeftInput.mp4 -i RightInput.mp4 -filter_complex" [0: v] scale = iw/2: ih/2, pad = 2 * iw: ih [left]; [1: v] scale = iw/3: ih/3, fade = out: 300: 30: alpha = 1 [phải]; [trái] [phải] overlay = main_w/2: 0 [ra ] "-b: v 768k Output.mp4' –

+5

Và có thể đồng bộ hóa thời gian bằng cách nào đó nếu một bộ phim bắt đầu vài giây sau đó không? –

Các vấn đề liên quan