Cách tạo video màn hình bằng ffmpeg

Dành cho những ai chưa biết, screencast nó là bản ghi âm kỹ thuật số của đầu ra màn hình máy tính, đôi khi chứa tường thuật âm thanh.

En Linux, có một số công cụ để làm màn hình. Tuy nhiên, những người thích làm như vậy tiêu thụ tài nguyên tối thiểu họ không thể ngừng đọc bài báo này.


Sử dụng 2 công cụ (ffmpeg để chụp màn hình và xwininfo để lấy tọa độ và kích thước của cửa sổ được ghi lại), tôi đã quản lý để tạo video màn hình bằng cách sử dụng tài nguyên tối thiểu và thu được kết quả tối ưu.

Kịch bản để bắt đầu chiếu màn hình

#! / bin / bash

# Lấy tọa độ và kích thước của cửa sổ đã chọn
# Điều này không bao gồm trang trí cửa sổ.
  bỏ đặt xywh
  eval $ (xwininfo -frame |
    sed -n -e "s / ^ + X tuyệt đối phía trên bên trái: + ([0-9] +). * / x = 1 / p"
           -e "s / ^ + Y tuyệt đối phía trên bên trái: + ([0-9] +). * / y = 1 / p"
           -e "s / ^ + Chiều rộng: + ([0-9] +). * / w = 1 / p"
           -e "s / ^ + Chiều cao: + ([0-9] +). * / h = 1 / p")
$ w = $ w + $ w% 2 # rằng chiều rộng là bội số của 2, nếu không thì ffmpeg phàn nàn
WIN_XY = $ x "," $ y # định dạng XY tọa độ
WIN_GEO = $ w "x" $ h # kích thước cửa sổ định dạng
# thông báo-gửi sẽ hiển thị một thông báo cho biết thời điểm bắt đầu phát màn hình.
# chạy ffmpeg với các tham số phù hợp với cấu hình của bạn.
thông báo-gửi "Đang bắt đầu phát sóng màn hình ..." && ffmpeg -f alsa -i hw: 0 -f x11grab -r 25 -s $ WIN_GEO -i: 0.0 + $ WIN_XY -acodec libmp3lame -async 1 -vcodec libx264-cài đặt cực nhanh - crf 0 -threads 0 save.mp4

Bạn không cần phải hiểu đầy đủ mọi thứ mà script này làm. Chỉ cần làm theo các bình luận là đủ. Tuy nhiên, rất có thể bạn sẽ phải thay đổi một số thông số trong dòng mà ffmpeg được thực thi để điều chỉnh chúng phù hợp với cấu hình máy của bạn.

Kiến trúc âm thanh

1) Nếu bạn sử dụng OSS, hãy thay thế -f alsa -i hw: 0 bằng -f oss -i / dev / dsp

2) Nếu bạn chỉ sử dụng ALSA, bạn phải sử dụng các tham số có trong tập lệnh (-f alsa -i hw: 0). Để xác định số sau hw: bạn có thể chạy aplay -l và chọn số card âm thanh thích hợp.

3) Nếu bạn sử dụng Pulse Audio (Ubuntu và các dẫn xuất sử dụng điều này), hãy sử dụng các tham số -f alsa -ac 1 -i xung.

FPS

-r 25 cho biết fps (khung hình trên giây hoặc khung hình trên giây) mà bạn muốn ghi lại. 25 là một lựa chọn tốt.

Bộ giải mã âm thanh, video và đồng bộ hóa

-acodec libmp3lame là codec âm thanh. Tôi đã chọn để ghi lại nó trong mp3. Bạn có thể sử dụng bất kỳ khác.

-async 1 cho phép đồng bộ hóa âm thanh với video.

-vcodec libx264 -preset ultrafast -crf 0 -threads 0, cho ffmpeg biết rằng codec video sẽ sử dụng là x264 và cài đặt trước là cực nhanh (có nhanh, chậm, v.v.), nếu không, nó sẽ không ghi chính xác ở mức mong muốn khung hình / giây. Tham số -crf 0 cho biết mức độ nén (nén càng thấp thì độ nén càng giảm). Cuối cùng, các luồng 0 cho biết số lượng các luồng sẽ sử dụng, khi vượt qua 0 ffmpeg sẽ tự động tính toán. Cũng như cài đặt âm thanh, bạn có thể chọn các tùy chọn khác.

Tất cả những cài đặt này là những cài đặt mang lại cho tôi kết quả tốt nhất: tệp tương đối nhỏ, chất lượng video tốt, với âm thanh đồng bộ và không có độ trễ. Tuy nhiên, tôi khuyên bạn nên đi sâu vào tài liệu ffmpeg để khám phá những người khác.

Kịch bản để kết thúc chương trình truyền hình

#! / bin / bash
thông báo-gửi "Kết thúc màn hình ..." && killall ffmpeg
Để cả hai tập lệnh hoạt động, bạn phải cài đặt thông báo gửi. Tất cả các bản phân phối có nguồn gốc từ Ubuntu phải được cài đặt công cụ này. Trong Arch và các dẫn xuất: sudo pacman -S libnotify.

ffcast

Đang tìm kiếm thông tin để viết kịch bản, tôi phát hiện ra ai đó có ý tưởng rất giống tôi. Ffcast là một tập lệnh sử dụng các công cụ tương tự (ffmpeg và xwininfo). Tôi đề cập đến nó vì một số có thể thấy thuận tiện hơn khi sử dụng tập lệnh này.

Trong Arch và các dẫn xuất, tôi đã mở một thiết bị đầu cuối và chạy:

yaourt -S ffcast

Phần còn lại, bạn có thể tải xuống từ đây.

Để kết thúc…

Khi bạn đã tạo và lưu các tập lệnh được lưu trong thư mục HOME, bạn phải cấp cho nó quyền thực thi. Giả sử start_screencast và finish_screencast được gọi, hãy chạy các lệnh sau trong một terminal:

chmod + x start_screencast
chmox + x ter_screencast

Cuối cùng, nó chỉ còn lại là gán mỗi tập lệnh cho 2 phím tắt (shortcut) phù hợp với bạn. Bằng cách đó, các tập lệnh sẽ chạy khi bạn nhấn tổ hợp phím đã chọn.


Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: Miguel Ángel Gatón
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.

  1.   michael sp dijo

    Kể từ khi tôi biết đến Linux, tôi đã tự hỏi mình chính xác điều vừa được trình bày chi tiết trong phần bình luận này. nó sẽ là một dự án đầy tham vọng.

  2.   pmf dijo

    Hướng dẫn này có vẻ tốt đối với tôi, nhưng làm thế nào để bạn nói điều gì đó dễ dàng cho những người mới làm quen? Chà, cái tốt nhất mà tôi nghĩ là KAzam, nó dễ sử dụng và không tiêu tốn nhiều theo ý kiến ​​của tôi !!!! Chúc mừng

  3.   Hãy sử dụng Linux dijo

    Không phải tất cả. Ngoài ra, tôi thành thật tin rằng không có giao diện nào tốt cho sàng lọc (có mọi thứ tôi cần), hoạt động với các định dạng tôi muốn và tiêu tốn ít tài nguyên.

    Trong trường hợp của tôi, thiết bị đầu cuối là lựa chọn tốt nhất. Tôi không giả vờ rằng nó là cho tất cả mọi người, nhưng nó là tốt để chia sẻ những gì đang học, phải không?

    Chúc mừng! Paul.

  4.   Jorge Rocha dijo

    Sai là nếu chúng tôi muốn mở rộng HĐH theo GNU / linux, chúng tôi khuyên người dùng làm điều đó trong thiết bị đầu cuối, mọi người muốn một cái gì đó dễ dàng và hoạt động

    @ingjorgerocha

  5.   Whysoyjuan dijo

    Ở cấp độ máy chủ, tôi cũng chỉ sử dụng bảng điều khiển, không có môi trường đồ họa ... đó là cách thực tế nhất và tôi làm mọi thứ từ đó (tự động hóa sao lưu, chẳng hạn như bạn nói ...), nhưng, trên một máy mà bạn có một máy chủ ... bạn muốn thực hiện một đoạn video trên đó để làm gì? hehe..ffmpeg rất hợp lệ nhưng tôi nghĩ vấn đề giao diện điều khiển nên chuyển sang nền tùy thuộc vào bản phân phối nào.
    Vì chúng ta có rất nhiều bản phân phối như vậy trong thế giới Linux và bảng điều khiển được hoàn thiện đủ để hoạt động bình thường trong mọi tình huống (đúng hơn là không thể sai được ..), chúng ta nên bắt đầu cải thiện các ứng dụng cho công chúng, bắt đầu đánh bóng, mã và khía cạnh đồ họa ... đó là những gì được yêu cầu ngày nay.
    Chúng ta có các dự án Linux khá cổ và bị bỏ rơi, chúng ta đều biết rằng ... một ví dụ điển hình, đối với tôi, là tại sao không còn định dạng tệp thực thi cho phép bạn lấy một chương trình trên một ổ đĩa và chỉ cần nhấp đúp chuột và đơn giản cài đặt ngoài việc yêu cầu kho lưu trữ (và do đó mạng) .. không có APTonCD, điều này cũng đã lỗi thời .. chúng ta cần một tiêu chuẩn, một ".tux" hoặc một cái gì đó tương tự như ".exe" của Windows. Vấn đề là không gian? .. trong Windows, tệp thực thi Gimp chiếm 72mb và tệp tương tự cho Linux (.deb) chiếm 4,2mb ... tại sao lại như vậy? Chà, vì bản thân chương trình Gimp, trong Windows, nó được đi kèm với tất cả các thư viện để đảm bảo rằng chương trình hoạt động khi được cài đặt ... trong Linux, chúng ta có thể có một cái gì đó giống nhau, tệp thực thi sẽ chiếm nhiều hơn, chúng ta sẽ mất lợi thế của kích thước nhưng chúng tôi có được tính di động (và hơn thế nữa với những kỷ niệm lớn đến mức chúng tôi mang theo trong túi ngày nay ... có khác gì khi mang 4mb so với 72mb nếu hầu như tất cả chúng ta đều mang mặt dây chuyền 8gb?)
    Tất cả những thứ này phải được đánh bóng ... hệ thống ổn định, có hỗ trợ tuyệt vời và khả năng tương thích với trình điều khiển ... tại sao chúng tôi không cải thiện những gì đang có? ... nếu ai đó được khuyến khích, chúng tôi bắt đầu dự án thực thi hehe.!

  6.   ẩn náu dijo

    Uhm ... ừm, những người yêu thích giao diện điều khiển không yêu thích nó vì bạn thân mến, họ yêu thích nó vì với nó nhiều thứ có thể được tự động hóa, ví dụ như ở cấp độ máy chủ (mặc dù không phải vậy).

  7.   Whysoyjuan dijo

    Thành thật mà nói, bảng điều khiển rất hữu ích ... nhưng có những chương trình với một số GUI sử dụng ffmpeg và hấp dẫn hơn và mang tính xây dựng hơn cho những người dùng Linux mới có thể ... Tôi đề xuất RecordMyDescktop có trong kho của hầu hết tất cả các bản phân phối. Tôi biết có rất nhiều người yêu thích giao diện điều khiển, nhưng điều này phải được hoàn thiện càng nhiều càng tốt ... Linux phải tập trung vào máy tính để bàn và người dùng cuối có thể về cơ bản muốn điều đó, một giao diện đồ họa và nếu có thể, đẹp và thực tế ... có khó đến vậy không? rằng chúng ta không thể để mình bị dẫm lên ... Linux có tiềm năng to lớn và chúng ta phải tận dụng nó!
    Bất chấp mọi thứ, đó là một chương trình tuyệt vời!

  8.   Whysoyjuan dijo

    Sự thật là, vâng, thật tuyệt khi chia sẻ những gì đang học ... Đây không phải là lời chỉ trích theo nghĩa hạ giá của bài đăng, mà là lời chỉ trích về việc tại sao nhiều người không sử dụng Linux ... dù họ nói gì, giao diện điều khiển nên được giảm xuống mặt phẳng thứ hai để nhường chỗ cho các cơ sở đồ họa (điều này không có nghĩa là khả năng thực hiện mọi thứ bằng bàn điều khiển bị loại trừ, mà là bất cứ ai muốn sử dụng nó và bất kỳ ai không, tốt, không ..)
    Cuối cùng, thứ mà nó bán được, điều đáng chú ý là sự dễ dàng vận hành của một hệ điều hành ... nội bộ Linux là không thể ngăn cản, nhưng nếu chúng ta thêm vào đó là sự dễ sử dụng và giao diện trực quan ... chúng ta giành được người dùng và nó mang lại lợi ích cho sự phát triển của cộng đồng, các chương trình khác nhau, hỗ trợ từ các công ty trò chơi điện tử và do đó là phần cứng cụ thể (ví dụ như card đồ họa ...), tạo ra phần mềm chuyên dụng hiện chỉ tồn tại trên Windows / Mac ... Tôi không biết, Tôi nghĩ đây là kế hoạch 15M ... tất cả đều rất tốt nhưng bây giờ đã đến lúc thay đổi hướng đi một chút ... và tôi nói một chút!

    Chà, dự án thực thi tiêu chuẩn trong Linux vẫn còn, nếu ai đó đọc nó và muốn chúng ta bắt đầu cộng tác, đây là email của tôi, tôi không giấu giếm đâu hehe (whysoyjuan@gmail.com)

    Xin chào và tôi hy vọng sẽ thấy nhiều bình luận hơn ở đây ... dù là chỉ trích hay khen ngợi, thực tế là chúng ta phải lên tiếng.

  9.   Hãy sử dụng Linux dijo

    Tốt! Đóng góp tốt.
    Ôm! Paul.

  10.   Gerardo dijo

    Chương trình này bao gồm những gì… hãy cẩn thận, tôi không hiểu lắm về điều này!

    1.    hãy sử dụng linux dijo

      Nói chung, nó được sử dụng để chuyển đổi video. Trong trường hợp này, chúng tôi trình bày cách sử dụng nó để ghi lại màn hình nền của bạn và tạo video hướng dẫn chẳng hạn.
      Ôm! Paul.

  11.   tarribalis dijo

    Cảm ơn bạn. Trong độ phân giải, ví dụ: 1280X800, X phải được viết hoa để lệnh ffmpeg hoạt động.