วันจันทร์ที่ 29 สิงหาคม พ.ศ. 2554

วิธีแยกภาพวิดีโอและเสียงออกจากกัน ด้วยโปรแกรม SUPER

วิธีแยกภาพวิดีโอและเสียงออกจากกัน ด้วยโปรแกรม SUPER

          ผมเคยแนะนำวิธีการใช้โปรแกรม SUPER แปลงไฟล์วิดีโอ คลิก เมื่อประมาณสองปีก่อน (เวลาผ่านมานานเหมือนกัน)  ปัจจุบันตัวโปรแกรมพัฒนาออกเวอร์ชั่นใหม่ๆ รองรับไฟล์วิดีโอแทบทุกชนิด และเพิ่มความสามารถหลายอย่าง ซึ่งผมจะแนะนำในคราวต่อๆไป วันนี้แนะนำวิธีการใช้โปรแกรม SUPER แยกไฟล์วิดีโอและไฟล์เสียงออกจากกัน  เช่น คุณมีไฟล์ MV อยู่เพลงหนึ่งต้องการเก็บแค่ไฟล์เสียง ไม่เอาภาพวิดีโอ ก็ใช้วิธีการนี้เพื่อดึงเอาไฟล์เสียงออกมาได้ครับ หรือนำเอาไปตัดต่ออย่างอื่นตามสะดวก

ก่อนอื่นดาวน์โหลดโปรแกรม SUPER เข้ามาติดตั้งก่อนครับ ตามลิงก์ด้านล่างนี้(ฟรีแวร์)
http://www.mediafire.com/?ui1hnskcngwq7ks
http://www.videohelp.com/tools/SUPER

     จากนั้นก็มาดูขั้นตอนการแยกไฟล์ภาพและเสียงออกจากกัน โดยตัวอย่างนี้ผมจะแยกเอาภาพและเสียงออกจากไฟล์วิดีโอในแผ่น VCD (ไฟล์ .DAT) วิธีการมีดังนี้

1. เปิดโปรแกรม SUPER ขึ้นมา คลิกที่ตัวเลือกด้านล่าง(ดูรูป) และคลิกดร็อปดาวน์ลิสเลือก DeMux Extract Streams

2. ลากไฟล์วิดีโอที่ต้องการจะแยกภาพและเสียงออกจาก มาวางบนหน้าต่างโปรแกรม SUPER

3. คลิกปุ่ม DeMux (Active Files)

4. โปรแกรมจะใช้เวลาครู่หนึ่งในการแยกไฟล์เสียงและไฟล์ภาพออกจากกัน ไฟล์ที่แยกออกมาจะอยู่ในโฟลเดอร์เดียวกับไฟล์ต้นฉบับดังรูปด้านล่างนี้



###จบแล้วครับ###
ลอกเขามา  http://pssix.blogspot.com/2010/03/super.html

แปลงไฟล์ VDO DVD จากคอมฯไปเล่นบนมือถือ ด้วยโปรแกรม XMedia Recode

แปลงไฟล์วิดีโอ, DVD จากคอมฯไปเล่นบนมือถือ, MP4, iPod ฯลฯ ด้วย โปรแกรม XMedia Recode

     ปัจจุบันมีเครื่องเล่นจำนวนมากที่สามารถเล่นไฟล์วิดีโอได้ ทั้งมือถือ, เครื่องเล่นMP3/MP4, iPod ฯลฯ  หากคุณต้องการจะแปลงไฟล์วิดีโอหรือไฟล์ DVD ภาพยนตร์ ไปใช้บนเครื่องเล่นเหล่านี้ก็ต้องหาโปรแกรมมาแปลงไฟล์บนคอมพิวเตอร์ แน่นอนว่าโดยส่วนใหญ่แล้วโปรแกรมแปลงไฟล์วิดีโอทั่วไป จะมีตัวเลือกให้สำหรับแปลงไฟล์ลงเครื่องเล่นเหล่านี้ไม่มากนักหรือไม่มีเลย

     เหตุนี้เอง ผมจึงขอแนะนำโปรแกรมเพื่อใช้ในการแปลงไฟล์วิดีโอ, DVD ภาพยนตร์ จากคอมพิวเตอร์เพื่อนำไปเล่นบนเครื่องเล่นสารพัดชนิด ด้วยโปรแกรม XMedia Recode (ฟรีแวร์) ซึ่งเป็นโปรแกรมที่ทำมาเพื่อการแปลงไฟล์วิดีโอจากคอมฯ ไปยังเครื่องแทบทุกชนิดในโลกนี้เลยทีเดียว ตัวโปรแกรม XMedia Recode ดาวน์โหลดได้ตามลิงก์ด้านล่างนี้ครับ

ดาวน์โหลด Xmedia Recode

วิธีการใช้งานโปรแกรม XMedia Recode มีขั้นตอนดังนี้

1. เปิดโปรแกรม XMedia Recode คลิกเลือกไฟล์ที่ต้องการจะแปลง ไฟล์วิดีโอธรรมดาเลือก Movie ส่วนไฟล์ DVD ภาพยนตร์เลือก Open DVD โปรแกรมจะให้คุณเลือกไดรฟ์ที่ใส่แผ่น DVD ภาพยนตร์ แล้วนำไฟล์เข้ามาในโปรแกรมโดยอัตโนมัติ

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

3. คลิกปุ่ม Browse เพื่อกำหนดโฟลเดอร์ที่จะบันทึกไฟล์หลังแปลงเสร็จ


4. ในส่วนของ DVD ภาพยนตร์ถ้าต้องการเลือกเสียงพากย์ คลิกแท็บ Audio Track1 เลือกเสียงพากย์ที่คุณต้องแปลงลงไป


5. ในส่วนของ DVD ภาพยนตร์ถ้าต้องการเลือกซับไตเติล คลิกแท็บ Subtitle และเลือกซับที่ต้องการแปลงฝังในไฟล์วิดีโอที่ตัวเลือก Stream:

6. คลิกปุ่ม Add Job


7. คลิกปุ่ม Encode โปรแกรมจะเริ่มแปลงไฟล์ให้ทันที




8. หน้าต่างระหว่างแปลงไฟล์ เลือกแบบ High  และถ้าหากต้องการให้โปรแกรมปิดคอมหลังแปลงเสร็จ ก็คลิกกา ถูก ที่ตัวเลือก Shut down computer when finished


###จบแล้วครับ###
ลอกเขามา http://pssix.blogspot.com/2010/05/dvd-mp4-ipod-xmedia-recode.html

วิธีรวมไฟล์ภาพวิดีโอและเสียงเป็นไฟล์เดียว ด้วยโปรแกรม SUPER

วิธีรวมไฟล์ภาพวิดีโอและเสียงเป็นไฟล์เดียว ด้วยโปรแกรม SUPER


4. โปรแกรมจะแสดงหน้าต่าง Rendered file optimizer ขึ้นมา คลิกเลือกนามสกุลไฟล์ที่คุณต้องการจะสร้างขึ้นมาเมื่อรวมไฟล์ภาพและเสียงเสร็จ ถ้าเอาแบบปัญหาน้อยที่สุดก็เลือกแบบ AVI หรือ MKV จากนั้นคลิกปุ่ม OK โปรแกรมจะทำการรวมไฟล์ภาพวิดีโอและเสียงเข้าด้วยให้เราทันที


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


###จบแล้วครับ###
ลอกเขามาครับ  ## http://pssix.blogspot.com/2010/03/super_13.html

ดึงข้อมูลจากเว็บในส่วนที่เราต้องการ

ดึงข้อมูลจากเว็บในส่วนที่เราต้องการ

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

     เช่นเดียวกับการฝึกเขียนโปรแกรม เมื่อคุณเข้าใจวิธีการทำงานของคำสั่งพื้นฐาน รู้จัก If Then Else, While, For, Do, Select, Switch  แต่ไม่สามารถเพาะสร้างแนวคิดในเชิงตรรกะที่ซับซ้อน ความก้าวหน้าในการเรียนรู้ก็จะลดต่ำลงเรื่อยๆ (เป็นเรื่องแปลกแต่ก็เป็นเรื่องจริง) วิธีแก้ปัญหาดังกล่าว ทำได้ง่ายคือ การฝึกสร้างโปรแกรมอะไรขึ้นมาก็ได้สักโปรแกรมหนึ่ง โดยอาศัยพื้ันฐานความรู้ที่ศึกษามา การเขียนโปรแกรมก็ถือว่าเป็นทักษะอย่างหนึ่ง ยิ่งทำยิ่งคล่อง เกิดความชำนาญจนเชี่ยวชาญ รู้แล้วไม่ทำก็รู้อยู่แค่นั้น แถมปล่อยทิ้งไว้นานๆ ก็จะลืมไปหมดสิ้น

     ผมจะยกตัวอย่างการสร้างโปรแกรมธรรมดาคือ โปรแกรมดึงข้อมูลจากเว็บในส่วนที่เราต้องการ มาเป็นตัวอย่าง โดยในตัวอย่างนี้ผมจะใช้เว็บ http://th.wikipedia.org โดยดึงเอาข้อความในตาราง “รายชื่อคำในภาษาไทยที่มักเขียนผิด” ออกมาบันทึกเป็นไฟล์ข้อความธรรมดา

     เพื่อให้เข้าใจก่อนเริ่มทำ ในบทความนี้ผมจะไม่พูดถึงเรื่องพื้นฐานทั่วไป เช่น if คืออะไร while คืออะไร เพราะเคยอธิบายมาแล้ว คำสั่งอื่นก็จะไม่อธิบายจนหมด หากคุณสงสัยคำสั่งไหนก็คัดลอกคำสั่งไปวางไว้ในโปรแกรม SciTE Script Editor แล้วกดปุ่ม F1 เพื่อดูคำอธิบายและตัวอย่างการใช้คำสั่ง ที่ผ่านมาในบทความ AutoIt ผมมักจะอธิบายแทบทุกบรรทัดคำสั่ง การทำแบบนี้ด้วยเจตนาดีต้องการให้ผู้อ่านเข้าใจง่ายๆ แต่มันกลับส่งผลร้ายออกมาอย่างชัดเจน เพราะการอธิบายหมดทุกอย่างก็ไม่เหลืออะไรให้คิดต่อ ไม่เหลืออะไรให้สงสัย บางครั้งผู้อ่านอาจหลงผิดคิดว่าเข้าใจหมด ทั้งที่ไม่ได้เข้าใจอะไรเลย รอแค่การเอาป้อนให้อย่างเดียว หรือพอจะคิดทำอะไรที่แตกต่างไปจากตัวอย่างก็เกิดอาการใบ้กิน ทำไม่ได้  บางคนอาจเกิดความรู้สึกว่าอ่านบทความทำไมมันง่าย แต่พอลองทำจริงๆ มันยากไปไม่เป็นไม่รู้จะเริ่มตรงไหน

เปิดเว็บสำรวจก่อนทำ
     เมื่อจะเริ่มเขียนโปรแกรมที่เกี่ยวข้องกับเว็บหรืออะไรอื่น ก็ต้องทำความเข้าใจในสิ่งที่เราจะเขียนเสียก่อน ลองเปิดเว็บ http://th.wikipedia.org ขึ้นมาดู ข้อความที่เราจะดึงออกมาคือคอลัมน์ คำที่เขียนถูก และ มักเขียนผิดเป็น

     พอเลื่อนลงมาอีกหน่อยก็พบว่าคำเรียงตามตัวอักษร และมีการสร้างตารางใหม่ตามอักษรแต่ละตัวโดยใช้แท็ก Table (ภาษา HTML ในการเขียนเว็บ)จุดประสงค์ในการเขียนสคริปต์ของผมคือ ต้องการแค่ดึงเอาข้อความเขียนถูกและมักเขียนผิดมาเรียงต่อกันเท่านั้น โดยไม่เอาตารางมาด้วย การที่ตารางในเว็บแยกตามตัวอักษรจะทำให้มีข้อความ คำที่เขียนถูก มักเขียนผิดเป็น ปรากฏขึ้นมาเวลาใช้คำสั่งดึงข้อมูลออกมาด้วย  ปัญหาต่างๆ เหล่านี้สามารถแก้ไขได้ด้วยการเขียนสคริปต์ตามตัวอย่างในหัวข้อถัดไป


เริ่มเขียนสคริปต์ AutoIt ดึงข้อมูลจากเว็บ
    เริ่มแรกก็เขียนสคริปต์เปิดหน้าเว็บ ด้วยความที่ URL ค่อนข้างยาวผมจะใช้ตัว  & _ (Line Continuation) ในการเชื่อม URL ที่แยกไปแต่ละบรรทัด

#include <IE.au3>
$oIE = _IECreate ("http://th.wikipedia.org/wiki/"
& _
"%E0%B8%A3%E0%B8%B2%E0%B8%A2%E0%B8%" & _
"8A%E0%B8%B7%E0%B9%88%E0%B8%AD" & _
"%E0%B8%84%E0%B8%B3%E0%B9%83%E0%B8%" & _
"99%E0%B8%A0%E0%B8%B2%E0%B8%A9%E0" & _
"%B8%B2%E0%B9%84%E0%B8%97%E0%B8%A2%" & _
"E0%B8%97%E0%B8%B5%E0%B9%88%E0%B8%A1%E0%B8" & _
"%B1%E0%B8%81%E0%B9%80%E0%B8%82%E0%B8%B5%" & _
"E0%B8%A2%E0%B8%99%E0%B8%9C%E0%B8%B4%E0%B8%94")

ตอนนี้ก็ได้สคริปต์เปิดหน้าเว็บมาแล้ว จากนั้นก็เขียนสคริปต์ต่อเพื่อตรวจดูว่าในเว็บมีตารางจำนวนกี่ตารางกันแน่ สรุปแล้วในหน้าเว็บมีตาราง 41 อัน (เริ่มต้นที่ 0)

#include <IE.au3>
$oIE = _IECreate ("http://th.wikipedia.org/wiki/" & _
"%E0%B8%A3%E0%B8%B2%E0%B8%A2%E0%B8%" & _
"8A%E0%B8%B7%E0%B9%88%E0%B8%AD" & _
"%E0%B8%84%E0%B8%B3%E0%B9%83%E0%B8%" & _
"99%E0%B8%A0%E0%B8%B2%E0%B8%A9%E0" & _
"%B8%B2%E0%B9%84%E0%B8%97%E0%B8%A2%" & _
"E0%B8%97%E0%B8%B5%E0%B9%88%E0%B8%A1%E0%B8" & _
"%B1%E0%B8%81%E0%B9%80%E0%B8%82%E0%B8%B5%" & _
"E0%B8%A2%E0%B8%99%E0%B8%9C%E0%B8%B4%E0%B8%94")

  $oTable = _IETableGetCollection ($oIE)
  $iNumTables = @extended
MsgBox(0, "Table Info", "There are " & $iNumTables & " tables on the page")


     ลองใช้คำสั่งดึงเอาตารางแต่ละอันมาดู และเนื่องจากคำสั่ง _IETableGetCollection  จะดึงเอาข้อมูลไปเก็บไว้ในอาเรย์อัตโนมัติ จึงต้องเพิ่มคำสั่ง #include <Array.au3> เข้ามาด้วย เพื่อใช้คำสั่ง  _ArrayDisplay ในการแสดงข้อมูลในอาเรย์ จากนั้นก็ไล่ดูทีละตารางว่ามีข้อมูลอะไรอยู่


#include <IE.au3>
#include <Array.au3>
$oIE = _IECreate ("http://th.wikipedia.org/wiki/" & _
"%E0%B8%A3%E0%B8%B2%E0%B8%A2%E0%B8%" & _
"8A%E0%B8%B7%E0%B9%88%E0%B8%AD" & _
"%E0%B8%84%E0%B8%B3%E0%B9%83%E0%B8%" & _
"99%E0%B8%A0%E0%B8%B2%E0%B8%A9%E0" & _
"%B8%B2%E0%B9%84%E0%B8%97%E0%B8%A2%" & _
"E0%B8%97%E0%B8%B5%E0%B9%88%E0%B8%A1%E0%B8" & _
"%B1%E0%B8%81%E0%B9%80%E0%B8%82%E0%B8%B5%" & _
"E0%B8%A2%E0%B8%99%E0%B8%9C%E0%B8%B4%E0%B8%94")

  $oTable = _IETableGetCollection ($oIE,1)
    $aTable = _IETableWriteToArray ($oTable, True)
    _ArrayDisplay(  $aTable)


   ไล่ดูแล้วปรากฏว่าตารางแรกไม่ต้องดึงออกมา และตารางสุดท้ายก็ไม่จำเป็น สรุปแล้วเราจะดึงเอาข้อมูลจากตาราง 1 ถึง 39 เท่านั้น ทดลองเขียนคำสั่งดึงเอาตาราง 1 ถึง 39 ออกมาได้ดังนี้

#include <IE.au3>
#include <Array.au3>
$oIE = _IECreate("http://th.wikipedia.org/wiki/" & _
        "%E0%B8%A3%E0%B8%B2%E0%B8%A2%E0%B8%" & _
        "8A%E0%B8%B7%E0%B9%88%E0%B8%AD" & _
        "%E0%B8%84%E0%B8%B3%E0%B9%83%E0%B8%" & _
        "99%E0%B8%A0%E0%B8%B2%E0%B8%A9%E0" & _
        "%B8%B2%E0%B9%84%E0%B8%97%E0%B8%A2%" & _
        "E0%B8%97%E0%B8%B5%E0%B9%88%E0%B8%A1%E0%B8" & _
        "%B1%E0%B8%81%E0%B9%80%E0%B8%82%E0%B8%B5%" & _
        "E0%B8%A2%E0%B8%99%E0%B8%9C%E0%B8%B4%E0%B8%94")

For $i = 1 To 39
    $oTable = _IETableGetCollection($oIE, $i)
    $aTable = _IETableWriteToArray($oTable, True)
    _ArrayDisplay($aTable)
Next


     ปัญหาที่พบคือในการดึงแต่ละตารางออกมาแสดงนั้นจะมีหัวตาราง และคอลัมน์ที่สามเป็นส่วนกินที่เราไม่ต้องการดังรูป วิธีแก้ไขแบบง่ายๆ ก็คือ ใช้คำสั่ง _ArrayDelete ลบข้อมูลในแถวแรกทิ้งไปเลย



#include <IE.au3>
#include <Array.au3>
$oIE = _IECreate("http://th.wikipedia.org/wiki/" & _
        "%E0%B8%A3%E0%B8%B2%E0%B8%A2%E0%B8%" & _
        "8A%E0%B8%B7%E0%B9%88%E0%B8%AD" & _
        "%E0%B8%84%E0%B8%B3%E0%B9%83%E0%B8%" & _
        "99%E0%B8%A0%E0%B8%B2%E0%B8%A9%E0" & _
        "%B8%B2%E0%B9%84%E0%B8%97%E0%B8%A2%" & _
        "E0%B8%97%E0%B8%B5%E0%B9%88%E0%B8%A1%E0%B8" & _
        "%B1%E0%B8%81%E0%B9%80%E0%B8%82%E0%B8%B5%" & _
        "E0%B8%A2%E0%B8%99%E0%B8%9C%E0%B8%B4%E0%B8%94")

For $i = 1 To 39
    $oTable = _IETableGetCollection($oIE, $i)
    $aTable = _IETableWriteToArray($oTable, True)
    _ArrayDelete($aTable, 0)
    _ArrayDisplay($aTable)
Next


     ปัญหาถัดมาคือคอลัมน์ที่ 3 ซึ่งเป็นคอลัมน์ที่แสดง หมายเหตุ วิธีการแก้ไขปัญหาตรงนี้ก็ง่ายๆ เลยคือ สร้างตัวแปรแบบอาเรย์ที่เก็บค่าได้แค่ 2 คอลัมน์ โดยใช้คำสั่ง Dim $tb[1][2] เพื่อนำเอาข้อมูลคอลัมน์แรกและคอลัมน์ที่สองใส่ไปเท่านั้น ปัญหาสุดท้ายก็คือเราจะเอาตารางทั้งหมดมารวมกันเป็นตารางเดียวได้อย่างไร วิธีแก้ไขปัญหาก็อาศัยตัวแปรแบบอาเรย์ที่เราสร้างขึ้นมานั่นเอง โดยเอาค่าตารางที่ได้แต่ละอันจับมาใส่ในตัวแปรแบบอาเรย์นั้นครับ เพื่อให้เข้าใจยิ่งขึ้นต้องเขียนโค้ดแยกออกมาต่างหาก จะได้ดังนี้

For $i = 0 To UBound($aTable) - 1
        ReDim $tb[UBound($tb) + 1][2]
        $tb[UBound($tb, 1) - 1][0] = $aTable[$i][0]
        $tb[UBound($tb, 1) - 1][1] = $aTable[$i][1]
    Next


     ผมจะใช้คำสั่ง for ในการวนลูป แต่จำนวนการวนแต่ละลูปจะไม่เท่ากันเพราะจะอ้างอิงขนาดข้อมูลในตารางจึงต้องใช้คำสั่ง UBound มานับข้อมูลในตาราง แต่จะติดปัญหานิดหนึ่งคือมันจะข้อมูลเป็นจำนวนไม่ใช่แถวที่อ้างอิงในอาเรย์ดังนั้นต้องใส่ –1 ต่อลงไป เพราะแถวข้อมูลในอาเรย์จะเริ่มต้นที่แถว 0 นั่นเอง

เสร็จแล้วก็เปลี่ยนขนาดของอาเรย์เดิมโดยใช้คำสั่ง ReDim คือ
    ReDim $tb[UBound($tb) + 1][2]

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

        $tb[UBound($tb, 1) - 1][0] = $aTable[$i][0]
        $tb[UBound($tb, 1) - 1][1] = $aTable[$i][1] 


     จะเป็นการดึงเอาข้อมูลในตัวอาเรย์เดิมมาจับใส่ในในอาเรย์ที่เพิ่งปรับขนาด และจะเกิดปัญหาอีกอย่างหนึ่งขึ้นมาอีกคือ ในการใส่คำสั่ง For ซ้อนเข้าไปใน For เดิม การวนลูปตารางในตัวอักษรถัดไป จะทำให้เกิดการล้างข้อมูลเดิมทิ้ง ดังนั้นจึงจำเป็นต้องเขียนแยกออกเป็นฟังก์ชัน โดยขนเอาข้อมูลอาเรย์ในลูป For ที่อยู่ในคำสั่งแรกออกไปใส่ วิธีประกาศฟังก์ชันตามปกติข้อมูลจะถูกล้างเหมือนเดิม เราจะใช้เทคนิคอยู่อย่างหนึ่งก็คือ ใช้คำสั่ง ByRef ควบคุมตัวแปร $tb เพื่อให้มันเก็บข้อมูลเดิมเอาไว้เสมอเมื่อมีการเพิ่มข้อมูลใหม่เข้ามา วิธีเขียนส่งตัวแปรเข้าไปในฟังก์ชันก็เขียนดังนี้

tbsum($tb, $aTable) ส่วนหัวฟังก์ชันก็จะได้ดังนี้ (ชื่อตัวแปรไม่จำเป็นต้องเขียนเหมือนตัวแปรที่ส่งเข้าไป แต่เพื่อให้เข้าใจง่ายผมจะเขียนชื่อเหมือนเดิม)

Func tbsum(ByRef $tb,$aTable)

เมื่อนำมาแก้ไขก็จะได้ดังนี้ (ลองเอาไปรันดู)

#include <IE.au3>
#include <Array.au3>
$oIE = _IECreate("http://th.wikipedia.org/wiki/" & _
        "%E0%B8%A3%E0%B8%B2%E0%B8%A2%E0%B8%" & _
        "8A%E0%B8%B7%E0%B9%88%E0%B8%AD" & _
        "%E0%B8%84%E0%B8%B3%E0%B9%83%E0%B8%" & _
        "99%E0%B8%A0%E0%B8%B2%E0%B8%A9%E0" & _
        "%B8%B2%E0%B9%84%E0%B8%97%E0%B8%A2%" & _
        "E0%B8%97%E0%B8%B5%E0%B9%88%E0%B8%A1%E0%B8" & _
        "%B1%E0%B8%81%E0%B9%80%E0%B8%82%E0%B8%B5%" & _
        "E0%B8%A2%E0%B8%99%E0%B8%9C%E0%B8%B4%E0%B8%94")

Dim $tb[1][2]
For $i = 1 To 39
    $oTable = _IETableGetCollection($oIE, $i)
    $aTable = _IETableWriteToArray($oTable, True)
    _ArrayDelete($aTable, 0)
    tbsum($tb, $aTable)
Next

    _ArrayDelete($aTable, 0)
_ArrayDisplay($tb)
Func tbsum(ByRef $tb,$aTable)
    For $i = 0 To UBound($aTable) - 1
        ReDim $tb[UBound($tb) + 1][2]
        $tb[UBound($tb, 1) - 1][0] = $aTable[$i][0]
        $tb[UBound($tb, 1) - 1][1] = $aTable[$i][1]
    Next
EndFunc


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

 $file = FileOpen("test.txt", 2)


For $i = 0 To UBound($tb) - 1
FileWriteLine($file, "ลำดับที่:"&$i+1&$tb[$i][1]&" คำที่เขียนถูกคือ "&$tb[$i][0] & @CRLF)
Next


FileClose($file)
Run("notepad.exe test.txt")

สคริปต์โปรแกรมเมื่อทำเสร็จสิ้นแล้วก็จะได้ดังตัวอย่างนี้ด้านล่างนี้ครับ



#include <IE.au3>
#include <Array.au3>


$oIE = _IECreate("http://th.wikipedia.org/wiki/" & _
        "%E0%B8%A3%E0%B8%B2%E0%B8%A2%E0%B8%" & _
        "8A%E0%B8%B7%E0%B9%88%E0%B8%AD" & _
        "%E0%B8%84%E0%B8%B3%E0%B9%83%E0%B8%" & _
        "99%E0%B8%A0%E0%B8%B2%E0%B8%A9%E0" & _
        "%B8%B2%E0%B9%84%E0%B8%97%E0%B8%A2%" & _
        "E0%B8%97%E0%B8%B5%E0%B9%88%E0%B8%A1%E0%B8" & _
        "%B1%E0%B8%81%E0%B9%80%E0%B8%82%E0%B8%B5%" & _
        "E0%B8%A2%E0%B8%99%E0%B8%9C%E0%B8%B4%E0%B8%94")

Dim $tb[1][2]
For $i = 1 To 39
    $oTable = _IETableGetCollection($oIE, $i)
    $aTable = _IETableWriteToArray($oTable, True)
    _ArrayDelete($aTable, 0)
    tbsum($tb, $aTable)
Next
_ArrayDelete($tb, 0)

$file = FileOpen("test.txt", 2)
For $i = 0 To UBound($tb) - 1
FileWriteLine($file, "ลำดับที่:"&$i+1&$tb[$i][1]&" คำที่เขียนถูกคือ  "&$tb[$i][0] & @CRLF)
Next
FileClose($file)
Run("notepad.exe test.txt")

Func tbsum(ByRef $tb, $aTable)
    For $i = 0 To UBound($aTable) - 1
        ReDim $tb[UBound($tb) + 1][2]
        $tb[UBound($tb, 1) - 1][0] = $aTable[$i][0]
        $tb[UBound($tb, 1) - 1][1] = $aTable[$i][1]
    Next
EndFunc


##จบแล้วครับ##
ลอกเขามา ## http://pssix.blogspot.com/2011/01/workshop-autoit-1.html

ดึงซับไตเติลออกจาก DVD ได้ง่ายๆ ด้วย VSRip

ดึงซับไตเติลออกจาก DVD ได้ง่ายๆ ด้วย VSRip



2. คลิกปุ่ม Save To… เพื่อกำหนดตำแหน่งสำหรับเก็บไฟล์ซับไตเติลที่ดึงออกมา เสร็จแล้วคลิกปุ่ม Next ด้านล่าง



3. หน้า Extraction settings จะปรากฏขึ้นมาดังรูปด้านล่างนี้ คลิกเลือกซับที่คุณต้องการดึงออกมาในคอลัมน์ที่สอง เสร็จแล้วคลิกปุ่ม Next (อย่าคลิกที่ตัวเลือกอื่นเพราะจะเป็นการเลือกดึงเฉพาะบางตอนของภาพยนตร์)


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



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

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



###จบแล้วครับ###
ลอดเขามา :: http://pssix.blogspot.com/2011/05/dvd-vsrip.html

แปลง DVD พร้อมซับไตเติลและเสียงพากย์เร็วสุดๆ ด้วย MakeMKV

แปลง DVD พร้อมซับไตเติลและเสียงพากย์เร็วสุดๆ ด้วย MakeMKV

     หากคุณมีแผ่น DVD หรือไฟล์ DVD ภาพยนตร์อยู่ในเครื่องแล้วต้องการจะแปลงเก็บเอาไว้เป็นไฟล์ MKV เพียงไฟล์เดียว โดยที่จะเก็บทั้งซับไตเติลและเสียงพากย์ภาษาต่างๆ เอาไว้ครบ ผมขอแนะนำให้ใช้โปรแกรม MakeMKV เพราะโปรแกรมนี้จะช่วยให้คุณเก็บไฟล์ภาพยนตร์ DVD โดยไม่สูญเสียความละเอียดลงแม้แต่น้อย เนื่องจากตัวโปรแกรมจะดึงเอาแทร็กต่างๆ ใน DVD ภาพยนตร์ออกมาโดยตรง แล้วประกอบรวมกันใส่ในไฟล์ MKV ซึ่งขั้นตอนต่างๆ จะไม่ส่งผลกระทบต่อคุณภาพของไฟล์ และข้อดีอีกอย่างหนึ่งก็คือ การแปลงเป็นไฟล์ DVD เป็น MKV ของโปรแกรมนี้จะใช้เวลาที่รวดเร็วมากประมาณ 5 นาทีต่อเรื่อง ตัวโปรแกรมดาวน์โหลดได้ตามลิงก์ด้านล่างนี้

http://www.makemkv.com/download/

วิธีใช้งาน MakeMKV

1. เปิดโปรแกรม MakeMKV ขึ้นมาแล้วคลิกไปที่ไดร์ฟหรือโฟลเดอร์ที่เก็บไฟล์ DVD (ในกรณีที่เลือกแบบเก็บไฟล์ DVD เลือกไปที่ไฟล์ VIDEO_TS.IFO)

2. คลิกปุ่ม Open DVD

3. โปรแกรมจะทำการตรวจสอบข้อมูลไฟล์ DVD แล้วแสดงไตเติลออกมาดังภาพด้านล่างนี้ คลิกเลือกไตเติลที่ต้องการแปลงเป็น MKV (ถ้าแผ่นมีหลายๆ ไตเติล ให้ดูตรงขนาดด้านท้าย ไฟล์ภาพยตร์หลักจะมีขนาดใหญ่สุด)

4. เลือกโฟลเดอร์ที่บันทึกไฟล์ MKV

5. คลิกปุ่ม Make MKV โปรแกรมจะเริ่มการแปลงให้ทันที



หน้าต่างแสดงสถานะการแปลงไฟล์ใช้เวลาเพียง 3 นาทีกว่าๆ ก็ใกล้เสร็จแล้ว



     ตัวอย่างภาพยนตร์หลังแปลงเสร็จเป็นไฟล์ MKV สามารถนำมาเล่น โดยเลือกซับไตเติล (กด Ctrl + L ในโปรแกรม KMPlayer) และเสียงพากย์ได้อย่างไม่มีปัญหา


###จบแล้วครับ###

วันจันทร์ที่ 22 สิงหาคม พ.ศ. 2554

108 ปัญหา เครื่องคอมพิวเตอร์

108 ปัญหา เครื่องคอมพิวเตอร์ ที่พบกันบ่อย ๆและแนวทางการแก้ไขเบื้องต้น
รวบรวมปัญหาต่าง ๆ ที่พบได้บ่อย ๆ กับการใช้งานเครื่องคอมพิวเตอร์โดยได้พยายามรวบรวมปัญหาที่พบเห็นกันบ่อย ๆ และนำมาสรุปให้เป็นแนวทางสำหรับการแก้ไขปัญหาเบื้องต้น หวังว่าจะมีประโยชน์กับคนอื่น ๆ ได้บ้าง
ปัญหาของ Windows
  • หลังจาก Setup Windows ใหม่แล้วเกิดการค้าง ไม่ยอมทำการ Setup ต่อไป
    เกิดขึ้นได้จากหลายสาเหตุ แต่สิ่งหนึ่งที่พบบ่อย ๆ คือการตั้งค่าVirus Warning ใน bios ไว้ทำให้เครื่องไม่สามารถ เขียนข้อมูลทับลงบนส่วนของ boot record ของฮาร์ดดิสก์ได้ ให้ลองแก้ใน bios ตั้งให้เป็น Disable ไว้ก่อนและหลังจากทำการ Setup Windows เสร็จแล้วค่อยตั้งเป็น Enable ใหม่
  • หลังจาก Setup Windows จะขึ้นข้อความ Windows Protection Error
    ที่พบบ่อย ๆ มากคือปัญหาของ RAM อาจจะเป็นเฉพาะช่วงที่ทำการ Setup Windows เท่านั้น (โดยที่ปกติก่อน Setup Windows จะใช้งานได้ ไม่เป็นอะไร)ให้ทดลองหา RAM มาเปลี่ยนใหม่ดู หรือหากเป็น SDRAM ให้ทดลองตั้งค่าใน bios ค่าของCAS จากที่ตั้งเป็น 2 ลองตั้งเป็น 3 ดู อาจจะช่วยแก้ปัญหาได้บ้าง
  • ใช้ AMD K6II-350 ขึ้นไปลง Windows95 แล้วเกิด Error แต่ลง Windows98 ได้
    จะเกิดจากการใช้ CPU ของ AMD ที่มีความเร็วตั้งแต่ 350MHz ขึ้นไปกับWindows95 วิธีแก้ไขคือไป Download Patch สำหรับแก้ปัญหานี้ที่AMDK6UPD.EXE มาแก้ไขโดยสั่งรันไฟล์นี้แล้วบูทเครื่องใหม่ก่อนอ่านรายละเอียดที่นี่
ปัญหาของ ฮาร์ดแวร์
  • RAM หายไปไหนเนี่ย ใส่เข้าไป 32 M. ทำไม Windows บอกว่ามี 28 M. เอง
    อาการของ RAM หายไปดื้อ ๆ จะเกิดกับการใช้เมนบอร์ดรุ่นที่มี VGA on board นะครับ ที่จริงก็ไม่ได้หายไปไหนหรอก เพียงแต่ส่วนหนึ่งของ RAM จะถูกนำไปใช้กับ VGA ครับและขนาดที่จะโดนนำไปใช้ก็อาจจะเป็น 2M, 4M หรือ 8M ก็ได้ขึ้นอยู่กับการตั้งในBIOS ครับ

  • ใช้เครื่องได้สักพัก มักจะแฮงค์ พอปิดเครื่องสักครู่แล้วเปิดใหม่ก็ใช้งานต่อได้อีกสักพักแล้วก็แฮงค์อีก
    อาจจะเกิดจากความร้อนสูงเกินไปอย่างแรกให้ตรวจสอบพัดลมต่าง ๆ ว่าทำงานปกติดีหรือเปล่า หากเครื่องทำ Over Clock อยู่ด้วยก็ทดลองลดความเร็วลงมา ใช้แบบงานปกติดูก่อนว่ายังเป็นปัญหาอยู่อีกหรือเปล่าถ้าใน bios มีระบบดูความร้อนของ CPU หรือ Main Board อยู่ด้วยให้สังเกตค่าของอุณหภูมิ ว่าสูงเกินไปหรือเปล่าทั้งนี้อาจจะทำการเพิ่มการติดตั้งหรือเปลี่ยนพัดลมของ CPU ช่วยด้วยก็ดี
  • มีข้อความ BIOS ROM CHECK SUM ERROR ตอนเปิดเครื่อง
    อาการนี้ส่วนใหญ่เกิดจากถ่านของ BIOS หมดหรือเกิดการหลวมครับให้ลองขยับถ่านให้แน่น ๆ ดูก่อน ถ้าไม่หายก็ต้องลองเปลี่ยนถ่านบนเมนบอร์ดดู(ก่อนเปลี่ยนถ้ามี Meter วัดไฟดูก่อนก็ดี) หลังจากเปลี่ยนแล้วให้ทำการ Clear BIOS Jumper ก่อนด้วย จะเป็น Jumper ใกล้ ๆ กับ IC BIOS นั่นแหละ ทำการ Jump ค้างไว้สัก5 วินาทีแล้วก็ Jump กลับที่เดิมก่อน หลังจากนั้นต้องเข้าไปตั้งค่าต่าง ๆ ของ BIOS ใหม่ด้วย
  • ลืม Password ของ BIOS จะทำยังไงดี
    ให้ทำการถอดถ่านของ BIOS ออกสักครู่ แล้วใส่กลับเข้าไปใหม่ ทำการ Clear Jumper BIOS ก่อนด้วยหรือลองดูวิธีการ Clear/Reset Password ของ BIOS
  • ซื้อฮาร์ดดิสก์มาขนาดใหญ่ ๆ แต่หลังจากทำการ Format แล้วเครื่องมองเห็นแค่2G
    อย่างแรกให้ดูก่อนเลยว่า ใช้ระบบ FAT16 หรือ FAT32 ถ้าหากเป็น FAT16 จะมองเห็นได้สูงสุดแค่ 2G ต่อ 1 Partition เท่านั้น ต้องใช้แบบ FAT32 ครับวิธีการคือใช้ FDISK ของแผ่น Startup Disk WIN98 มาทำ FDISK (ถ้าเป็น FDISK จาก DOS หรือ WIN95 จะเป็นแบบ FAT16)
  • ไม่สามารถใช้งาน ฮาร์ดดิสก์ได้มากกว่า 8G. สำหรับเมนบอร์ดรุ่นเก่า
    เกิดจากที่ BIOS ไม่สามารถรู้จักกับ ฮาร์ดดิสก์ที่มีขนาดใหญ่ ๆ ได้จะเป็นกับเมนบอร์ดรุ่นเก่า ๆ ที่เคยพบมาอีกแบบคือ Windows มองเห็นเกิน 8G แต่ไม่สามารถใช้งานได้ จะบอกว่าฮาร์ดดิสก์ของเราเต็ม วิธีแก้ไขอย่างแรกคือให้ลองทำการ Update BIOS เป็น Version ใหม่ดูก่อน (ถ้าหาได้) หรือไม่ก็หา Download โปรแกรมสำหรับจัดการพื้นที่ฮาร์ดดิสก์ จากเวปไซต์ของผู้ผลิตฮาร์ดดิสก์ยี่ห้อนั้น ๆหรืออาจจะใช้วิธีการแบ่ง Partition ให้มีขนาดใหญ่ไม่เกิน 8G ต่อ 1 Partition ก็อาจจะช่วยได้

ปัญหาของ ซอฟต์แวร์
  • หลังจากลงโปรแกรมป้องกันไวรัส McAfee 4.0.3 แล้วไม่สามารถบูทเข้า Windows ได้
    เท่าที่พบจะเกิดกับบางเครื่องเท่านั้น ปัญหาเกิดจากหลังจากที่เราติดตั้งMcAfee ลงไปแล้ว เครื่องจะทำการ Scan ข้อมูลในฮาร์ดดิสก์โดยใส่เป็น Batch File ไว้ในไฟล์ autoexec.bat ซึ่งบางครั้งจะเป็นปัญหาทำให้ค้าง ไม่ยอมเข้า Windows ต่อไปวิธีแก้ไขคือ ให้เปิดเครื่องเข้าใน MS-DOS Mode โดยกดปุ่ม F8 ค้างไว้ขณะเปิดเครื่องจะเข้ามาที่เมนู Microsoft Windows 98 Startup Menu เลือกข้อ 6. sefe mode command prompt only แล้วใช้คำสั่ง "edit autoexec.bat" เพื่อแก้ไขไฟล์โดยให้ลบบรรทัดที่มีคำสั่ง scan.exe ออกครับ ทำการ save file แล้วทดลองบูทเครื่องใหม่อีกครั้ง
  • พิมพ์หน้า Web Page ออกเครื่องพิมพ์แบบ Ink Jet เป็นภาษาไทยไม่ได้จะมีแต่ภาษาอังกฤษ
    ส่วนใหญ่ ปัญหานี้จะเกิดกับการใช้เครื่องพิมพ์แบบอิงค์เจ็ท รุ่นใหม่ ๆ วิธีแก้ไขคือ ให้ลองหา Download Driver รุ่นใหม่ ๆของเครื่องพิมพ์จาก Web Site ของเครื่องพิมพ์นั้น ๆเพราะบางครั้งอาจจะมีการแก้ไขปัญหานี้แล้ว หรือไม่ก็ใช้วิธีเข้าไปตั้งค่า Regional Settings ที่ Control Panel เป็น English(USA) ก่อนเมื่อพิมพ์เสร็จแล้วก็เปลี่ยนกลับมาเป็น Thai เหมือนเดิม การตั้งค่าก็ทำโดยกดที่Start เมนู>> Settings >> Control Panel เลือกที่ Regional Settings เปลี่ยนเป็น English(USA)
  • สั่ง Defrag Hard Disk แล้วไม่ยอมเสร็จ จะกลับมาเริ่มต้นใหม่วนแบบนี้อยู่เรื่อย ๆสาเหตุเกิดจากมีโปรแกรมบางตัวทำงานอยู่ในเวลานั้นด้วยและสั่งเขียนข้อมูลลงบนฮาร์ดดิสก์เช่น Screen Saver, Winamp หรือพวก Anti Virus บางตัวให้ทำการปิดโปรแกรมเหล่านี้ให้หมดก่อน หรืออาจจะใช้วิธีเข้า Windows ใน Self Mode (กด F8 ตอนเปิดเครื่องแล้วเลือก Self Mode)

วันจันทร์ที่ 15 สิงหาคม พ.ศ. 2554

นาทีสึนามิถล่มเกาะญี่ปุ่น

รวมภาพระทึก! นาทีสึนามิถล่มเกาะญี่ปุ่น

สำนักข่าวต่างประเทศได้เผยแพร่ภาพนาทีที่คลื่นยักษ์สึนามิขนาดความสูง 6 เมตร พัดถล่มชายฝั่งทางตะวันออกเฉียงเหนือของประเทศญี่ปุ่น ซึ่งเป็นผลพวงมาจากเหตุแผ่นดินไหวขนาด 8.9 ริคเตอร์ที่เกิดขึ้นบริเวณนอกชายฝั่งทะเลห่างจากกรุงโตเกียวไปราว 380 กิโลเมตร เบื้องต้นมีรายงานยอดผู้เสียชีวิตทะลุ 300 ราย และบาดเจ็บอีกเป็นจำนวนมาก

รวบรวมภาพโดย Martza Leo

คลิกชมภาพต่อไป

คลิกชมภาพต่อไป

คลิกชมภาพต่อไป

คลิกชมภาพต่อไป

คลิกชมภาพต่อไป

คลิกชมภาพต่อไป

คลิกชมภาพต่อไป

คลิกชมภาพต่อไป

คลิกชมภาพต่อไป

คลิกชมภาพต่อไป

คลิกชมภาพต่อไป

คลิกชมภาพต่อไป

คลิกชมภาพต่อไป

คลิกชมภาพต่อไป

คลิกชมภาพต่อไป

คลิกชมภาพต่อไป

คลิกชมภาพต่อไป

คลิกชมภาพต่อไป

คลิกชมภาพต่อไป

คลิกชมภาพต่อไป

คลิกชมภาพต่อไป

คลิกชมภาพต่อไป


คลิกชมภาพต่อไป

คลิกชมภาพต่อไป

คลิกชมภาพต่อไป

คลิกชมภาพต่อไป

คลิกชมภาพต่อไป

คลิกชมภาพต่อไป

คลิกชมภาพต่อไป

คลิกชมภาพต่อไป

คลิกชมภาพต่อไป

คลิกชมภาพต่อไป

คลิกชมภาพต่อไป

คลิกชมภาพต่อไป

คลิกชมภาพต่อไป

คลิกชมภาพต่อไป

คลิกชมภาพต่อไป