จับภาพหน้าจอ - บรรทัดคำสั่ง?


12

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


เหตุผลใดที่จำเป็นต้องมีเครื่องมือ CLI คุณได้ภาพหน้าจอฟรีด้วย QuickTime
igorw

ฉันต้องการเรียกมันในเชลล์สคริปต์และทำแบบอัตโนมัติ

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

คำตอบ:


9

Mac OS X นำเสนอความสามารถในการจับภาพหน้าจอแบบคงที่จากบรรทัดคำสั่งโดยใช้ยูทิลิตีที่เรียกว่าไม่น่าscreencaptureเชื่อ man screencaptureคุณสามารถค้นหาข้อมูลเพิ่มเติมได้โดยการทำงาน

เช่น. screencapture ~/Desktop/picture.png


สำหรับการบันทึกการเคลื่อนไหวและเสียงของคอมพิวเตอร์คุณสามารถทำได้ผ่าน AppleScript โดยใช้ QuickTime Player X หากคุณใช้ Mac OS X 10.6 หรือใหม่กว่า (อย่างไรก็ตามไม่ใช่ "เงียบ" และจะทำงานเมื่อมีคนลงชื่อเข้าใช้เท่านั้น)

(การบันทึกหน้าจอเป็นเวลา 5 วินาทีเป็นเพียงจุดเริ่มต้นที่เป็นไปได้)

tell application "QuickTime Player"
    --activate
    new screen recording
    start document 1
    delay 5
    stop document 1
    save document 1 in file "/tmp/test.mov"
    quit
end tell

screencapture อนุญาตให้ทำภาพนิ่งเท่านั้นไม่มีวิดีโอหรือการบันทึกเสียง
MacLemon

@MacLemon: เพิ่มคำอธิบายบางอย่าง
Chealion

2
FYI เพียงอ้างอิงโพสต์บล็อกที่ได้รับการปรับปรุงเป็น Quicktime Applescript ด้านบน: netjunki.org/blog/…
David

1
บล็อก @David ที่กล่าวถึงยังคงมีอยู่ในแคชของ Google และบันทึกย่อ: "ดูเหมือนว่าเมื่อคุณพยายามโทรออกและบันทึกใน 10.7 Quicktime เพียงแค่ไม่สนใจการโทรหรืออะไรทำนองนั้นสคริปต์จะหยุดอยู่ที่นั่นตลอดกาลและหมดเวลา" นี่เป็นเรื่องจริงสำหรับฉันใน 10.8 …
ptim

2

ฉันกำลังใช้ SOX และ VLC สำหรับการจับภาพ crontab สำหรับกำหนดเวลา XLD เพื่อสร้าง m4a และ MP4Box สำหรับการทำมัลติเพล็กซ์ มันค่อนข้างยืดหยุ่น แต่ต้องการความรู้เกี่ยวกับการเขียนสคริปต์ Bash (อาจเป็นสคริปต์ Apple) ฉันพบแรงบันดาลใจของฉันในสคริปต์ mkmp4 ของ Diego Massanti

กระบวนการหลักที่จะเปิดตัว:

rec -q -c $C -r 48000 -b 16 $AFILE trim 0 $HH:$MM:00 &

VLC -I dummy screen:// --screen-fps=25 --quiet --sout "#transcode{vcodec=h264,vb=3072}:standard{access=file,mux=mp4,dst=$FILE}" --run-time $TIME vlc://quit

การบันทึกตารางเวลา:

crontab -l
0       8       *       *       1-5     ~/capture.sh 3 0 recording-name 1

คุณสามารถเข้าใจว่าสคริปต์กำลังทำอะไร: บันทึกการถ่ายภาพ 3 ชั่วโมงเสียงโมโนทุกวันทำการเวลา 8AM


ฉันไม่พบหรือรวบรวม SOX ที่เปิดใช้งานสำหรับสตรีมเสียง MPEG ดังนั้นการใช้ FLAC เพื่อประหยัดพื้นที่ ฉันใช้ XLD เพื่อแปลงเป็น AAC-HE 16kbps ซึ่งเพียงพอสำหรับเสียง

ขั้นตอนถัดไป: เสียงและวิดีโอแบบหลายจุดเพื่อสร้าง mp4 หากคุณไม่สนใจที่จะใช้ GUI ดังนั้น MPEG StreamClip (หรือ QuickTime) ก็ให้บริการเช่นกัน

MP4Box -add $1.m4a -sbr -add $1.m4v -fps $2.0 -inter 500 $1.mp4

ฉันใช้สิ่งนี้ทุกวันเพื่อสร้างไฟล์เก็บถาวรของ GoToWebinar แต่เมื่อ FFmpeg รุ่นถัดไปรองรับตัวแปลงสัญญาณ G2M4 ฉันจะไม่รบกวนอีกต่อไป ใช่มี OSAscript เพื่อเปิดการสัมมนาผ่านเว็บซึ่งต้องกำจัด com.apple.quarantine flag เพื่อปิดการเตือน (คุณแน่ใจหรือไม่ว่าคุณต้องการเปิดมัน)

ลิงค์:

http://blog.massanti.com/2008/09/26/mkmp4-automated-h264-aacplus-encoder-script-mac-linux/


สิ่งนี้อาจเกี่ยวข้องกับ VLC ก็มีนิด ๆ หน่อย ๆ เกี่ยวกับวิธีใช้ในโพสต์บล็อกนี้: netjunki.org/blog/…
David

1

คุณสามารถใช้ซอฟต์แวร์ ffmpeg ที่จะติดตั้งบนเครื่อง Mac ทำตามคำแนะนำที่นี่ จากนั้นใช้คำสั่ง:

$ffmpeg -f alsa -ac 2 -i hw:0,0 -f x11grab -r 30 -s $(xwininfo -root | grep 'geometry' | awk '{print $2;}') -i :0.0 -acodec pcm_s16le -vcodec libx264 -vpre lossless_ultrafast -threads 0 -y output.mkv

1
ฉันสงสัยว่าจะทำงานกับ OSX, alsa และ x11grab มีแนวโน้มที่จะมีเฉพาะใน linux builds ของ ffmpeg เท่านั้น
Adam MW

0

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

การบันทึกเสียงเป็นการบันทึกสำหรับอุปกรณ์เสียงไมโครโฟน มันไม่ได้เป็นสแน๊ปช็อตจริงๆและคุณควรจัดการระยะเวลาในการบันทึกที่ควรทำ

นอกจากนี้ยังมีเครื่องมือที่ทำวิดีโอบนเดสก์ท็อปของคุณ


0

การทิ้งเนื้อหาของอุปกรณ์ framebuffer Linux ไปยังไฟล์อาจเป็นสิ่งที่คล้ายกับสิ่งที่คุณกำลังมองหา ด้านล่างนี้ฉันได้อ้างถึงส่วนที่เกี่ยวข้องของLinux 2.2 Framebuffer Device Programming Tutorialลองดู คุณจะต้องกำหนดค่าระบบของคุณเพื่อเปิดใช้งานอุปกรณ์ framebuffer (ตรวจสอบว่าคุณมี / dev / fb0 ในระบบของคุณ) ฉันไม่มีใน Ubuntu 9.04 ของฉัน

เมื่อคุณมีโหมดข้อความความละเอียดสูงแล้วคุณสามารถเริ่มการทดสอบ คุณจะมีอุปกรณ์ / dev / fb0 ที่คุณสามารถดูได้เหมือนไฟล์ทั่วไป ในการถ่ายภาพหน้าจอสิ่งที่คุณต้องทำคือ

cat / dev / fb0> ~ / sshot

และคุณจะมีไฟล์ขนาดใหญ่พร้อมเนื้อหาในหน่วยความจำของการ์ดกราฟิกของคุณ ตอนนี้ถ้าคุณล้างหน้าจอและพิมพ์

cat ~ / sshot> / dev / fb0

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


0

คุณสามารถใช้การนำเข้าจาก ImageMagick แต่เป็น Linux เท่านั้น จากนั้นคุณสามารถไปที่เทอร์มินัลแล้วเรียกใช้งาน:

import screenshot.png

0

ฉันกำลังเรียกใช้ Snow Leopard บน macbook รุ่นเก่าและเนื่องจากฉันพยายามเรียนรู้ Objective C ฉันใช้เวลาสร้างเครื่องมือที่สามารถจับภาพหน้าต่างที่เฉพาะเจาะจงได้

https://github.com/vorgos/QuickGrab

มันเป็นเครื่องมือบรรทัดคำสั่งที่จะจับหน้าต่างที่ใช้งานมากที่สุดบนสุดหรือหน้าต่างใด ๆ ที่คุณระบุ

หวังว่าจะช่วย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.