ป้ายกำกับ

วันจันทร์ที่ 4 กรกฎาคม พ.ศ. 2554

การใช้ VLC เป็น Screen Recorder

หลายๆคนคงจะเคยได้ยินชื่อ โปรแกรม Camtasia กันมาบ้างแล้ว มันก็คือโปรแกรมที่จะช่วยให้เราสามารถบันทึกการเปลี่ยนแปลงต่างๆบนจอภาพของ เราเก็บไว้เป็นวีดีโอไฟล์ได้ หรือที่เรียกว่า Screen Recording ซึ่งโปรแกรม Camtasia นี้ ส่วนใหญ่ที่ผมเห็นมีใช้กัน ก็ใช้กันอย่างผิดกฏหมาย ผมเองก็อยากจะใช้เหมือนกันนะ แต่เมื่อนึกถึงความจำเป็น แลกกับที่จะต้องละเมิดลิขสิทธิ์ ผมก็ได้ข้อสรุปว่า ยังไม่จำเป็น เมื่อถึงเวลาที่จะต้องทำ presentation ผมก็ทำแบบ Capture Screen มาแทน ซึ่งก็ใช้ได้ในระดับหนึ่ง

แต่เมื่อไม่นานมานี้ ผมมีความต้องการที่จะบันทึกการสอนของผมเป็นวีดีโอ จึงเริ่มเสาะหาเครื่องมืออื่นๆที่ไม่จำเป็นต้องทำผิดกฏหมาย แล้วผมก็พบว่า โปรแกรม VLC ที่ผมมีอยู่ประจำเครื่อง ใช้ดูหนัง ฟังเพลงอยู่เป็นประจำนั้น สามารถบันทึกวีดีโอของ Screen ได้ด้วย!!!

ข้อดีของการใช้โปรแกรม VLC คือ
  1. เป็น Open Source สามารถดาวโหลดมาใช้งานได้ฟรี
  2. ใช้งานได้ทั้งบน Windows, Mac และ Linux (บนมือถือ Android ก็มี แต่น่าจะเป็น Player อย่างเดียว, หรือเปล่า?)
  3. ใช้เป็นได้ทั้ง Player และ Recorder
  4. สามารถบันทึกวีดีโอไฟล์ได้หลายแบบ
  5. มี Codec รองรับการเข้ารหัสหลายแบบ
  6. ฯลฯ

สำหรับการบันทึกวีดีโอของ Screen แบบง่ายที่สุดคือ
  1. เลือกเมนู Media/Streaming หรือกด Ctrl+S จะเปิดหน้าต่างของ Media
  2. เลือก Capture Device/Capture Mode เป็น Desktop
  3. กำหนด Frame rate ว่าจะให้บันทึกกี่ Frame ต่อวินาที
  4. กดปุ่ม Stream จะเข้าสู่หน้าถัดไป
  5. กดปุ่ม Next เข้าสู่หน้ากำหนดปลายทาง (New destination) ให้เลือกเป็น File แล้วกด Add
  6. เพิ่มชื่อไฟล์เสร็จแล้วให้กด Next จะเข้าสู่หน้าให้เลือกวิธีการเข้ารหัส เมื่อเลือกเสร็จแล้วก็กด Next
  7. เข้าสู่หน้าสุดท้ายที่จะให้กำหนด Option ซึ่งไม่จำเป็นต้องตั้งค่าอะไร
  8. กดปุ่ม Stream จะเสร็จสิ้นการตั้งค่า และเริ่มการบันทึกวีดีโอ
  9. เมื่อบันทึกเสร็จ ก็กดปุ่ม Stop เป็นอันเสร็จสิ้นการบันทึกวีดีโอ
สำหรับวิธีง่ายที่สุดนี้ จะบันทึกเฉพาะภาพของ Screen เท่านั้น จะไม่มีเสียง หากต้องการให้มีการบันทึกเสียงด้วย จะต้องเลือก Capture Mode ในข้อ 2 เป็น DirectShow (สำหรับบน Windows) หรือ Video for Linux/Video for Linux 2 (สำหรับ Linux)

สำหรับการใช้ DirectShow นั้น ปกติแล้ว เราจะพบว่า Video Device มีให้เลือกเพียง Default กับ None ซึ่งไม่ว่าจะเลือกอะไร ก็จะไม่สามารถบันทึกภาพจาก Screen ได้ เราจะต้องติดตั้งโปรแกรมที่ทำงานเป็น Video Device ที่ Capture ภาพจาก Screen มาให้ DirectShow ได้ ซึ่งเท่าที่หาข้อมูลมา พบว่ามีคนแนะนำ VH Screen Capture ซึ่งใช้งานได้ แต่จะมีโลโก้ของบริษัทแปะไว้ในภาพตลอด สุดท้ายแล้ว ที่ใช้งานได้และไม่มีโลโก้ติดอยู่ก็คือ UScreenCapture

ถ้า ติดตั้ง UScreenCapture เสร็จเรียบร้อยแล้ว ตอนที่เราเลือก Video Device จะต้องมีชื่อ UScreenCapture ปรากฏให้เลือกได้ จากนั้นก็กำหนดค่าต่างๆตามที่เราต้องการ

การทำ Automatic Sync ข้อมูลบน Ubuntu

เดี๋ยวนี้อะไรๆก็ Sync ข้อมูลกันหมด เช่น Android เมื่อเราตั้งค่าอะไรไว้ในเครื่องแท็บเบล็ต หรือโทรศัพท์มือถือของเรา จะมีการ Sync ข้อมูลที่เราตั้งไว้ไปที่ Google หลายๆโปรแกรมก็ใช้หลักการเดียวกันนี้ เอาข้อมูลของเราไปเก็บไว้ เรียกว่าให้ความสะดวกแก่เรา แต่ในทางกลับกัน ก็ดึงเอาความเป็นส่วนตัวของเราไปเก็บไว้เป็นตัวประกันด้วย

วัน นี้ผมก็เลยอยากเสนอ การ Sync ข้อมูลของเราไปเก็บไว้ในที่ของเราเอง เช่น ผมมีเครื่อง Notebook และ Desktop ใช้งานกันอยู่ประจำ และจะต้องมีการ copy ข้อมูลกันอยู่ตลอด ปกติผมก็ใช้โปรแกรมช่วย copy อย่าง FileZilla ซึ่งเป็นโปรแกรม Open Source มีใช้งานได้ทั้งบน Linux และ Windows ก็สะดวกดีครับ หรืออีกโปรแกรมหนึ่งที่ผู้ใช้ Linux นิยมกันมาก นั่นก็คือ rsync หรือ Grsync (เป็น Gnome GUI) น่าใช้ไม่แพ้กัน โปรแกรม rsync นี้ เหมาะกับการ Sync ข้อมูลเป็นประจำมากกว่า คือ เราสามารถระบุ folder ที่ต้องการ Sync ระหว่างต้นทางกับปลายทาง แล้วทุกอย่าง rsync จะจัดการให้ ดังนั้น rsync จึงเหมาะกับการทำ backup ประจำนั่นเอง

แต่ เมื่อไม่นานมานี้ ผมมีความต้องการให้เครื่องของผม Sync ข้อมูลกันอัตโนมัติิ ผมก็เลยต้องพึ่งพาความสามารถของ cron หรือ crontab ซึ่งเป็นโปรแกรมที่จะคอยเรียกโปรแกรมมาทำงานตามคำสั่งที่เราตั้งไว้ ตามเวลาที่กำหนด เมื่อเอาคำสั่ง rsync ไปใส่ไว้ใน crontab ตรงๆ ปรากฏว่า ไม่ได้ผลครับ เช็คไป เช็คมา ปรากฏว่า เมื่อเรา remote Sync ไปยังอีกเครื่องหนึ่ง จะมีการถาม username/password แต่ cron เรียก rsync ให้ทำงานอยู่เบื้องหลัง เราก็เลยป้อน username/password ไม่ได้ หรือถ้าได้ เราก็คงไม่มารอป้อน username/password ทุกครั้งเป็นแน่ ไม่อย่างนั้น จะเรียกว่า อัตโนมัติได้ไงล่ะ

ผมก็เลยเดือดร้อน ต้องหาวิธีที่จะให้ rsync ทำงานได้โดยไม่ต้องป้อน username/password ซึ่งก็มีคนแนะนำไว้ใน internet วิธีแรกคือ การเรียก rsync ในโหมด daemon ซึ่งจะต้องมีการ เซ็ตค่าหลายๆอย่าง รวมทั้งการเก็บ password ไว้ในไฟล์ๆหนึ่ง ซึ่งเราจะต้องป้องกันไฟล์นี้ให้ดีๆ ไม่อย่างนั้น อาจจะเป็นช่องโหว่ให้คนอื่นมาเห็น password ของเราได้ แต่ทำไปทำมา สุดท้าย ก็ไม่สำเร็จครับ อาจจะเป็นเพราะ จะต้องเปิด port 873 ไว้เป็น default port ของ rsync daemon หรือการเซ็ตต่า /etc/rsync.conf ไม่ถูกก็แล้วแต่ สรุปว่า ไม่สำเร็จ และไม่น่าจะเป็นทางออกที่ดี เพราะมันค่อนข้างซับซ้อน

อีก วิธีหนึ่งคือการใช้ความสามารถของ ssh ซึ่งเป็น default shell ของ rsync ที่ใช้ในการติดต่อกับ remote อยู่แล้ว โดยเราจะต้องสร้าง key ไว้ใน folder .ssh ของเรา ด้วยโปรแกรม ssh-keygen ดังนี้

ssh-keygen -b 1024 -t rsa -f .ssh/id_rsa

หมายเหตุ ไม่ต้องกำหนด passphrase คือให้กด Enter ผ่านไปเลย

จาก นั้นให้ copy public key ซึ่งก็คือไฟล์ id_rsa.pub ไปไว้ที่ folder .ssh ของเครื่อง remote แต่ให้ตั้งชื่อเป็น authorize_keys เช่น

scp .ssh/id_rsa.pub somchai@x.y.z:~/.ssh/authorized_keys

เมื่อ copy เรียบร้อยแล้ว อาจจะทดลองสั่ง rsync ดู จะพบว่า โปรแกรมสามารถ Sync ได้ทันที โดยไม่ต้องป้อน username/password เช่น

rsync -r -t -p -o -g -v --progress --delete -c -l -z somchai@x.y.z:~/eBooks/ /home/somchai/eBooks/

เมื่อ ทุกอย่างเรียบร้อยดี ไม่มีปัญหา ก็สามารถเอาคำสั่งนี้ไปตั้งเวลาใน cron ได้ โดยสั่ง crontab -e จะปรากฏไฟล์ให้แก้ไข ซึ่งสามารถกำหนด นาที, ชั่วโมง, วันที่, เดือน, วันในสัปดาห์, คำสั่ง ดังนี้

# m h dom mon dow command
0 0 * * * rsync -r -t -p -o -g -v --progress --delete -c -l -z /home/somchai/eBooks/ somchai@x.y.z:~/eBooks/

ตัวอย่างข้างบนนี้ เป็นการตั้งให้ Sync ข้อมูลใน folder eBooks ทุกวัน เวลาเที่ยงคืน

การแปลงภาพไปเป็น SVG ไฟล์ด้วย Open Source Software

การแปลงไฟล์ภาพไปเป็น SVG ที่จะแนะนำนี้ ใช้โปรแกรม 2 ตัวคือ GIMP และ Inkscape

ไฟล์ ภาพที่จะแปลงไปเป็น SVG ควรเป็นภาพขาวดำ เพื่อที่จะสามารถหาเส้นขอบของสิ่งที่ต้องการแปลงไปเป็นเวกเตอร์ได้ง่าย แต่ถ้าไม่ใช่ขาวดำก็ไม่เป็นไร
  1. เริ่มต้นจากการใช้โปรแกรม GIMP เปิดภาพมา
  2. แล้ว ใช้ Select เพื่อเลือกสิ่งที่ต้องการเก็บข้อมูลเวกเตอร์ ในที่นี้เรียกว่า Path โดยปกติก็เลือกจากสี (เมนู Select/By Color, Shift+O)
  3. เมื่อ เลือกสิ่งที่ต้องการแล้ว ก็แปลงไปเป็น Path โดยเลือกเมนู Select/To Path ผลลัพธ์ที่ได้ จะไปปรากฏอยู่ในหน้าต่าง Layers, Channels, Paths ... (เมนู Windows/Layers, Channels, Paths, ...)
  4. ถ้ามองไม่เห็นว่ามันไปอยู่ตรงไหน ก็กดที่ Tab ที่ 3 ที่เป็นรูป จุดและเส้น ดังรูป
  5. เมื่อได้ Path มาแล้ว ก็คลิกเมาส์ปุ่มขวาที่ Path ที่ต้องการ จะมี Popup เมนูขึ้นมา เลือกเมนู Export Path บันทึกไฟล์ไว้
  6. เมื่อ ได้ไฟล์แล้ว ใช้ Inkscape Import ไฟล์เข้าไป เพื่อรวมกับภาพอื่นๆ แต่ก่อนที่จะไปตบแต่งอย่างอื่น ควรจะเลือกเมนู Object/Fill and Stroke... เพื่อระบายสีเข้าไปใน Path เพราะ Path ที่ได้มานั้นเป็นเพียงเส้นขอบของวัตถุที่เราเก็บค่ามา
สุดท้ายก็บันทึกไฟล์ จะเป็น SVG หรือไฟล์แบบอื่นๆก็ได้ ตามที่ Inkscape สามารถทำได้