2015-09-30 15 views
7

Tôi muốn sử dụng ffmpeg để ghi lại máy tính để bàn của mình cũng như máy ảnh của tôi làm lớp phủ trên đầu màn hình.ffmpeg ghi hình màn hình với lớp phủ máy ảnh trên OSX

Vì vậy, về cơ bản, tôi sẽ có hai nguồn đầu vào cần được ghi

$ ffmpeg -f avfoundation -list_devices true -i '' 
[AVFoundation input device @ 0x7fded1c223e0] AVFoundation video devices: 
[AVFoundation input device @ 0x7fded1c223e0] [0] FaceTime HD Camera 
[AVFoundation input device @ 0x7fded1c223e0] [1] Capture screen 0 
[AVFoundation input device @ 0x7fded1c223e0] AVFoundation audio devices: 
[AVFoundation input device @ 0x7fded1c223e0] [0] Built-in Microphone 

Từ trên, tôi cần [0] FaceTime HD camera như một lớp phủ và [1] Chụp màn hình 0 là video chính .

Điều này có thể thực hiện được không?

UPDATE (2015/10/06):

tôi thấy lệnh sau từ ffscreencast:

ffmpeg \ 
-f avfoundation -i "1" \ 
-f avfoundation -r 30 -video_size 640x480 -i "0" \ 
-c:v libx264 -crf 0 -preset ultrafast \ 
-filter_complex 'overlay=main_w-overlay_w-10:main_h-overlay_h-10' "out.mkv" 

Thật không may là đầu ra có tốc độ khung hình khá chậm (i7 Macbook Pro 2014)

Output #0, matroska, to 'out.mkv': 
    Metadata: 
encoder   : Lavf56.40.101 
Stream #0:0: Video: h264 (libx264) (H264/0x34363248), yuv420p, 3840x2400, q=-1--1, 1000k fps, 1k tbn, 1000k tbc (default) 
Metadata: 
    encoder   : Lavc56.60.100 libx264 
Stream mapping: 
    Stream #0:0 (rawvideo) -> overlay:main 
    Stream #1:0 (rawvideo) -> overlay:overlay 
    overlay -> Stream #0:0 (libx264) 

frame= 756 fps=9.1 q=-1.0 Lsize= 193660kB time=00:01:21.86 bitrate=19378.5kbits/s 
Press [q] to stop, [?] for help 

Bất kỳ ai có ý tưởng về cách có tốc độ khung hình cao hơn? Máy ảnh của tôi chỉ có thể ghi ở 30 khung hình mỗi giây, nhưng đầu ra dường như chỉ có khoảng 9 khung hình. Tại sao sự khác biệt?

+0

ffmpeg không có bộ lọc lớp phủ, vì vậy tôi đoán là vậy. – rogerdpack

+0

Có, tôi chỉ tìm thấy nó, nhưng có vẻ vẫn còn chậm. – lockdoc

+0

Hi lockdoc, phiên bản OS X bạn đang sử dụng. Tôi đang sử dụng 10.10.5 và lệnh "ffmpeg -f avfoundation -list_devices true -i ''" chỉ hiển thị 1 thiết bị đầu vào (Camera). – TuanAnh207

Trả lời

9

Đối với tôi việc này, phiên bản 2.8 ffmpeg:

ffmpeg -thread_queue_size 50 \ 
-f avfoundation -framerate 30 -i "1" \ 
-thread_queue_size 50 -f avfoundation -framerate 30 -video_size 640x480 -i "0" \ 
-c:v libx264 -crf 18 -preset ultrafast \ 
-filter_complex 'overlay=main_w-overlay_w-10:main_h-overlay_h-10' -r 30 ~/Desktop/out.mkv 

LƯU Ý: tôi đọc trong tài liệu đi tùy chọn '-r' là dành cho đầu ra, do đó bạn có nó trên sai chỗ ở của bạn chỉ huy. Giá trị '-crf' bạn đưa ra có vẻ phóng đại, nếu tài liệu nói rằng giá trị 18 là video không mất dữ liệu trực quan. Bạn cũng có thể cần phải chơi với giá trị '-tread_queue_size' cho hệ thống cụ thể của bạn.

+0

Cảm ơn, điều này hữu ích. – baltasvejas

+0

Điều này làm việc tốt. Cảm ơn Felipe. – muammar

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