วิธีสร้าง screencast โดยใช้ ffmpeg

สำหรับผู้ที่ไม่รู้ก screencast เป็นการบันทึกเอาต์พุตหน้าจอคอมพิวเตอร์แบบดิจิทัลบางครั้งมีเสียงบรรยาย

En ลินุกซ์มีหลายอย่าง เครื่องมือ ทำ การแคสต์หน้าจอ. อย่างไรก็ตามผู้ที่ชอบที่จะทำเช่นนั้น ใช้ทรัพยากรน้อยที่สุด พวกเขาหยุดอ่านบทความนี้ไม่ได้


ใช้เครื่องมือ 2 อย่าง (ffmpeg เพื่อจับภาพหน้าจอและ xwininfo เพื่อรับพิกัดและขนาดของหน้าต่างที่จะบันทึก) ฉันจัดการสร้าง screencast โดยใช้ทรัพยากรน้อยที่สุดและได้ผลลัพธ์ที่ดีที่สุด

สคริปต์เพื่อเริ่ม screencast

#! / bin / ทุบตี

# รับพิกัดและขนาดของหน้าต่างที่เลือก
# ไม่รวมการตกแต่งหน้าต่าง
  ยกเลิกการตั้งค่า xywh
  eval $ (xwininfo -frame |
    sed -n -e "s / ^ + ค่าสัมบูรณ์ซ้ายบน X: + ([0-9] +). * / x = 1 / p"
           -e "s / ^ + ค่าสัมบูรณ์ซ้ายบน Y: + ([0-9] +). * / y = 1 / p"
           -e "s / ^ + กว้าง: + ([0-9] +). * / w = 1 / p"
           -e "s / ^ + ความสูง: + ([0-9] +). * / h = 1 / p")
$ w = $ w + $ w% 2 # ที่ความกว้างเป็นผลคูณของ 2 มิฉะนั้น ffmpeg จะบ่น
WIN_XY = $ x "," รูปแบบพิกัด XY $ y #
WIN_GEO = $ w "x" $ h # ขนาดหน้าต่างรูปแบบ
# การแจ้ง - ส่งจะแสดงข้อความที่ระบุการเริ่มต้นของ screencast
# รัน ffmpeg ด้วยพารามิเตอร์ที่เหมาะกับการกำหนดค่าของคุณ
แจ้ง - ส่ง "กำลังเริ่ม screencast ... " && ffmpeg -f alsa -i hw: 0 -f x11grab -r 25 -s $ WIN_GEO -i: 0.0 + $ WIN_XY -acodec libmp3lame -async 1 -vcodec libx264 -preset ultrafast - crf 0 -threads 0 save.mp4

คุณไม่จำเป็นต้องเข้าใจทุกอย่างที่สคริปต์นี้ทำ แค่ทำตามความคิดเห็นก็เพียงพอแล้ว อย่างไรก็ตามเป็นไปได้มากที่คุณจะต้องเปลี่ยนพารามิเตอร์บางตัวในบรรทัดที่เรียกใช้ ffmpeg เพื่อปรับให้เข้ากับการกำหนดค่าเครื่องของคุณ

สถาปัตยกรรมเสียง

1) หากคุณใช้ OSS ให้แทนที่ -f alsa -i hw: 0 ด้วย -f oss -i / dev / dsp

2) หากคุณใช้เฉพาะ ALSA คุณต้องใช้พารามิเตอร์ที่มาในสคริปต์ (-f alsa -i hw: 0) ในการกำหนดหมายเลขหลัง hw: คุณสามารถเรียกใช้ aplay -l และเลือกหมายเลขการ์ดเสียงที่เหมาะสม

3) หากคุณใช้ Pulse Audio (Ubuntu และอนุพันธ์ใช้สิ่งนี้) ให้ใช้พารามิเตอร์ -f alsa -ac 1 -i pulse

FPS

-r 25 ระบุ fps (เฟรมต่อวินาทีหรือเฟรมต่อวินาที) ที่คุณต้องการบันทึก 25 เป็นตัวเลือกที่ดี

ตัวแปลงสัญญาณเสียงวิดีโอและการซิงค์

-acodec libmp3lame คือตัวแปลงสัญญาณเสียง ฉันเลือกที่จะบันทึกเป็น mp3 คุณสามารถใช้อื่น ๆ

-async 1 ช่วยให้การซิงโครไนซ์เสียงกับวิดีโอ

-vcodec libx264 -preset ultrafast -crf 0 -threads 0 บอก ffmpeg ว่าตัวแปลงสัญญาณวิดีโอที่จะใช้คือ x264 และค่าที่ตั้งไว้ล่วงหน้านั้นเร็วมาก (มีเร็วช้า ฯลฯ ) มิฉะนั้นจะบันทึกไม่ถูกต้องตามจำนวนที่ต้องการ fps พารามิเตอร์ -crf 0 ระบุระดับการบีบอัด (การบีบอัดยิ่งต่ำการบีบอัดก็จะยิ่งต่ำลง) สุดท้ายเธรด 0 ระบุจำนวนเธรดที่จะใช้เมื่อผ่าน 0 ffmpeg จะคำนวณโดยอัตโนมัติ เช่นเดียวกับการตั้งค่าเสียงคุณสามารถเลือกตัวเลือกอื่น ๆ

การตั้งค่าทั้งหมดนี้เป็นสิ่งที่ให้ผลลัพธ์ที่ดีที่สุดแก่ฉัน: ไฟล์ค่อนข้างเล็กคุณภาพวิดีโอที่ดีพร้อมเสียงที่ซิงโครไนซ์และไม่มีความล่าช้า อย่างไรก็ตามฉันขอแนะนำให้คุณดำน้ำในเอกสาร ffmpeg เพื่อค้นหาคนอื่น ๆ

สคริปต์เพื่อสิ้นสุด screencast

#! / bin / ทุบตี
แจ้ง - ส่ง "กำลังสิ้นสุด screencast ... " && killall ffmpeg
เพื่อให้สคริปต์ทั้งสองทำงานได้คุณต้องติดตั้งการแจ้ง - ส่ง การแจกแจงที่ได้รับจาก Ubuntu ทั้งหมดควรมาพร้อมกับเครื่องมือนี้ที่ติดตั้ง ใน Arch และอนุพันธ์: sudo pacman -S libnotify

ffcast

เมื่อมองหาข้อมูลเพื่อเขียนสคริปต์ฉันพบว่ามีคนที่มีความคิดคล้ายกับของฉันมาก Ffcast เป็นสคริปต์ที่ใช้เครื่องมือเดียวกัน (ffmpeg และ xwininfo) ฉันพูดถึงมันเพราะบางคนอาจพบว่าการใช้สคริปต์นี้สะดวกกว่า

ใน Arch และอนุพันธ์ฉันเปิดเทอร์มินัลและวิ่ง:

yaourt -S ffcast

ส่วนที่เหลือคุณสามารถดาวน์โหลดได้จาก ที่นี่.

เพื่อจบ ...

เมื่อคุณสร้างและบันทึกสคริปต์ที่บันทึกไว้ในโฟลเดอร์ HOME ของคุณแล้วคุณต้องให้สิทธิ์ในการดำเนินการ สมมติว่า start_screencast และ finish_screencast ถูกเรียกรันคำสั่งต่อไปนี้ในเทอร์มินัล:

chmod + x start_screencast
chmox + x terminate_screencast

ในที่สุดก็ยังคงกำหนดให้แต่ละสคริปต์เป็น 2 ทางลัด (ทางลัด) ที่คุณสะดวก ด้วยวิธีนี้สคริปต์จะทำงานเมื่อคุณกดคีย์ผสมที่เลือก


แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. ผู้รับผิดชอบข้อมูล: Miguel ÁngelGatón
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา

  1.   ไมเคิล Sp dijo

    ตั้งแต่ฉันได้รู้จักกับ Linux ฉันก็ถามตัวเองเหมือนกันกับรายละเอียดในความคิดเห็นนี้ มันจะเป็นโครงการที่ทะเยอทะยาน

  2.   pmf dijo

    บทช่วยสอนดูเหมือนจะดีสำหรับฉัน แต่คุณจะพูดอะไรที่ง่ายสำหรับผู้ใช้มือใหม่ได้อย่างไรสิ่งที่ดีที่สุดสำหรับฉันคือ KAzam มันใช้งานง่ายและไม่กินแรงมากในความคิดของฉัน !!!! ไชโย

  3.   มาใช้ Linux กันเถอะ dijo

    ไม่ทั้งหมด. นอกจากนี้ฉันเชื่อโดยสุจริตว่าไม่มีอินเทอร์เฟซที่ดีสำหรับการแคสต์หน้าจอ (ซึ่งมีทุกอย่างที่ฉันต้องการ) ซึ่งใช้งานได้กับรูปแบบที่ฉันต้องการและใช้ทรัพยากรเพียงเล็กน้อย

    ในกรณีของฉันเทอร์มินัลเป็นตัวเลือกที่ดีที่สุด ฉันไม่ได้แสร้งทำเป็นว่าสำหรับทุกคน แต่เป็นการดีที่จะแบ่งปันสิ่งที่เรียนรู้ใช่ไหม?

    ไชโย! พอล.

  4.   จอร์จ โรชา dijo

    เป็นเรื่องผิดที่หากเราต้องการขยาย OS ภายใต้ GNU / linux เราขอแนะนำให้ผู้ใช้ทำสิ่งนั้นในเทอร์มินัลที่ผู้คนต้องการสิ่งที่ง่ายและใช้งานได้

    จ่าฝูง

  5.   Whysoyjuan dijo

    ในระดับเซิร์ฟเวอร์ฉันยังใช้คอนโซลเท่านั้นไม่มีสภาพแวดล้อมแบบกราฟิก ... มันเป็นประโยชน์ที่สุดและฉันทำทุกอย่างจากที่นั่น (สำรองข้อมูลอัตโนมัติเช่นที่คุณพูด ... ) แต่บนเครื่องที่คุณมีเป็น เซิร์ฟเวอร์ ... คุณต้องการทำ screencast เพื่ออะไรฮิฮิ .. Ffmpeg ใช้ได้มาก แต่ฉันคิดว่าปัญหาคอนโซลควรไปที่พื้นหลังขึ้นอยู่กับการกระจายแบบใด
    เนื่องจากเรามี distros ที่หลากหลายในโลกของ Linux และคอนโซลก็สมบูรณ์แบบพอที่จะทำงานได้อย่างถูกต้องในทุกสถานการณ์ (มันแทบจะผิดพลาด แต่ .. ) เราควรเริ่มปรับปรุงแอพสำหรับสาธารณะเริ่มขัดโค้ด และด้านกราฟิก ... ซึ่งเป็นสิ่งที่เรียกร้องในปัจจุบัน
    เรามีโครงการลินุกซ์ที่ค่อนข้างล้าสมัยและถูกทิ้งร้างเราทุกคนรู้ดีว่า ... ตัวอย่างที่ดีสำหรับฉันคือสาเหตุที่ไม่มีรูปแบบไฟล์ปฏิบัติการอีกต่อไปที่ให้คุณใช้โปรแกรมบนเพนไดรฟ์และเพียงแค่ดับเบิลคลิกและง่าย ๆ การติดตั้งนอกเหนือจากที่ต้องใช้ที่เก็บ (และดังนั้นเครือข่าย) .. ไม่มี APTonCD สิ่งนี้ก็ล้าสมัยเช่นกัน .. เราต้องการมาตรฐาน ".tux" หรือสิ่งที่คล้ายกับ ".exe" ของ Windows มันเป็นเรื่องของพื้นที่หรือไม่? .. ใน Windows ไฟล์ปฏิบัติการ Gimp ใช้พื้นที่ 72mb และอันเดียวกันสำหรับ Linux (.deb) ใช้ 4,2mb ... ทำไมถึงเป็นเช่นนี้? เนื่องจากโปรแกรม Gimp เองใน Windows จึงมาพร้อมกับไลบรารีทั้งหมดเพื่อให้แน่ใจว่าโปรแกรมทำงานได้เมื่อติดตั้ง ... ใน Linux เราอาจมีบางอย่างที่เหมือนกันไฟล์ปฏิบัติการจะครอบครองมากขึ้นเราจะเสียประโยชน์จาก ขนาด แต่เราพกพาได้มากขึ้น (และมากขึ้นด้วยความทรงจำที่มีขนาดใหญ่จนทุกวันนี้ในกระเป๋าของเรา ... มันทำให้ 4mb มากกว่า 72mb ต่างกันอย่างไรถ้าพวกเราเกือบทุกคนพก Pendrives 8GB)
    สิ่งเหล่านี้ต้องได้รับการขัดเกลา ... ระบบมีความเสถียรมีการสนับสนุนที่ดีและความเข้ากันได้ของไดรเวอร์ ... ทำไมเราไม่ปรับปรุงสิ่งที่มี ... ถ้ามีคนได้รับการสนับสนุนเราก็เริ่มโครงการปฏิบัติการได้ฮิฮิ!

  6.   ฮิดาเบะ dijo

    อืม ... คนที่รักคอนโซลไม่ได้รักเพราะเพื่อนรักพวกเขารักมันเพราะหลายสิ่งหลายอย่างสามารถทำให้เป็นอัตโนมัติได้เช่นในระดับเซิร์ฟเวอร์ (แม้ว่าจะไม่ใช่กรณีนี้ก็ตาม)

  7.   Whysoyjuan dijo

    สุจริตคอนโซลมีประโยชน์มาก ... แต่มีโปรแกรมที่มี GUI บางตัวที่ใช้ ffmpeg และน่าสนใจและสร้างสรรค์กว่าสำหรับผู้ใช้ Linux รายใหม่ที่เป็นไปได้ ... ขอแนะนำ RecordMyDescktop ซึ่งอยู่ในที่เก็บของ distros เกือบทั้งหมดที่ฉันรู้จัก มีหลายคนที่รักคอนโซล แต่สิ่งนี้จะต้องทำให้เสร็จสิ้นให้มากที่สุด ... ลินุกซ์จะต้องมุ่งเน้นไปที่เดสก์ท็อปและผู้ใช้ปลายทางที่เป็นไปได้ที่ต้องการโดยพื้นฐานอินเทอร์เฟซแบบกราฟิกและหากเป็นไปได้ที่สวยงามและใช้งานได้จริง .. มันยากขนาดนั้นเลยเหรอที่เราจะปล่อยให้ตัวเองถูกเหยียบไม่ได้ ... ลินุกซ์มีศักยภาพมหาศาลและเราต้องบีบมัน!
    ทั้งๆที่ทุกอย่างมันเป็นโปรแกรมที่ยอดเยี่ยม! โพสต์ที่ดี ^^

  8.   Whysoyjuan dijo

    ความจริงก็คือใช่มันเป็นการดีที่จะแบ่งปันสิ่งที่เราเรียนรู้ ... นี่ไม่ใช่คำวิจารณ์ในแง่ของการลดคุณค่าของโพสต์ แต่เป็นการวิจารณ์ว่าทำไมคนจำนวนมากไม่ใช้ Linux ... ไม่ว่าพวกเขาจะพูดอะไร คอนโซลควรลดลงเป็นระนาบที่สองเพื่อให้ทางไปยังสิ่งอำนวยความสะดวกแบบกราฟิก (นี่ไม่ได้หมายความว่าความเป็นไปได้ในการทำสิ่งต่าง ๆ โดยคอนโซลจะถูกตัดออกไป แต่ใครก็ตามที่ต้องการใช้มันและใครก็ตามที่ไม่ดีไม่ ... )
    ในตอนท้ายของวันสิ่งที่ขายสิ่งที่โดดเด่นคือความง่ายในการใช้งาน OS ... ภายใน Linux นั้นผ่านพ้นไม่ได้ แต่ถ้าเราเพิ่มความสะดวกในการใช้งานและอินเทอร์เฟซที่ใช้งานง่าย ... การพัฒนาชุมชนโปรแกรมต่าง ๆ การสนับสนุนจาก บริษัท วิดีโอเกมและฮาร์ดแวร์เฉพาะ (เช่นกราฟิกการ์ด .. ) การสร้างซอฟต์แวร์เฉพาะที่มีอยู่ใน Windows / Mac เท่านั้น ... ฉันไม่รู้ฉันคิดว่านี่ อยู่ในแผน 15M ... ทุกอย่างดีมาก แต่ตอนนี้ถึงเวลาเปลี่ยนหลักสูตรนิดหน่อย ... และฉันพูดนิดหน่อย!

    โครงการปฏิบัติการมาตรฐานใน Linux ยังคงมีอยู่ถ้ามีคนอ่านและต้องการให้เราเริ่มทำงานร่วมกันนี่คืออีเมลของฉันฉันไม่ได้ซ่อนฮิฮิ (whysoyjuan@gmail.com)

    สวัสดีและฉันหวังว่าจะได้เห็นความคิดเห็นเพิ่มเติมที่นี่ ... ไม่ว่าจะเป็นคำวิจารณ์หรือคำชมความจริงก็คือเราต้องคุยกัน Xao

  9.   มาใช้ Linux กันเถอะ dijo

    ดี! ผลงานที่ดี
    กอด! พอล.

  10.   Gerardo dijo

    โปรแกรมนี้ประกอบด้วยอะไรบ้าง ... ระวังฉันไม่ค่อยมีความรู้เรื่องนี้!

    1.    มาใช้ linux กันเถอะ dijo

      โดยทั่วไปจะใช้ในการแปลงวิดีโอ ในกรณีนี้เราจะสาธิตวิธีใช้เพื่อบันทึกเดสก์ท็อปของคุณและสร้างวิดีโอแนะนำตัวอย่างเช่น
      กอด! พอล.

  11.   ทาร์ริบาลิส dijo

    ขอขอบคุณ. ในความละเอียดเช่น 1280X800 X ต้องเป็นตัวพิมพ์ใหญ่เพื่อให้คำสั่ง ffmpeg ทำงานได้