ฉัน (jgirot) ไม่ใช่ผู้เขียนดั้งเดิมของซอฟต์แวร์นี้หรือข้อมูลต่อไปนี้เกี่ยวกับเรื่องนี้
ต่อไปนี้ถูกคัดลอกจาก http://bblank.thinkmo.de/blog/archive/2010/08/29/new-software-python-dvdvideo เมื่อวันที่ 13 กันยายน 2016 เพื่อให้รหัสอาจเข้าใจได้ดีขึ้นในบริบทนั้น นอกจากนี้ยังมีการคัดลอกที่นี่สำหรับลูกหลานในกรณีที่แหล่งต้นฉบับถูกลบออกหรือไม่พร้อมใช้งาน
เริ่มโพสต์บล็อกต้นฉบับ:
Python-DVDVideo เป็นไลบรารีสำหรับอ่านภาพ DVD-Video มันมีเครื่องมือในการทิ้งภาพ DVD-Video ที่เข้ารหัส มันถูกนำไปใช้ใน Python 3
หลังจากผ่านไปนานฉันตัดสินใจที่จะเขียนอีกครั้ง ฉันตัดสินใจที่จะเริ่มต้นด้วยซอฟต์แวร์ที่ฉันเขียนเพื่อการใช้งานของตัวเองซึ่งอาจเป็นประโยชน์สำหรับคนอื่น ฉันจะเริ่มต้นด้วย Python-Dvdvideo เครื่องอ่านดีวีดีวิดีโอที่เขียนใน Python 3 และเครื่องมืออ้างอิง DVD-Video-Backup-Image, DVD-Video Dumper ทั่วไป มาดูกันถ้าบล็อกนี้จะเห็นการโพสต์เพิ่มเติมในอนาคต
เจตนา
ฉันเริ่มเขียนซอฟต์แวร์นี้เพราะ libdvdread มักจะไม่สามารถถอดรหัสวิดีโอดีวีดีวิดีโอที่ซื้อใหม่ของฉันได้ libdvdread คาดว่าโครงสร้างที่ค่อนข้างถูกต้องของระบบไฟล์และข้อมูลเมตาอื่น ๆ บนดิสก์ มันจะประกันตัวอย่างแข็งขันในเงื่อนไขข้อผิดพลาดหลายประการ ดังนั้นฉันมักจะสิ้นสุดการแก้ไข libdvdread เพื่อให้ DVDbackup สามารถอ่านดิสก์ใหม่ได้
โดยปกติจะมีสองวิธีในการสร้างการสำรองข้อมูลของดีวีดีดังกล่าวเป็นไฟล์หรือรูปภาพที่สมบูรณ์ การทิ้งไฟล์เหล่านั้นเป็นปัญหาใหญ่หากมีข้อบกพร่องบางอย่างในระบบไฟล์เช่นพื้นที่บางส่วนมีการอ้างอิงในชุดชื่อหลายชุด ฉันมีดิสก์ที่ผลิตเอาท์พุท 25GIB ในระหว่างการถ่ายโอนข้อมูล ดังนั้นวิธีที่มีปัญหาน้อยกว่าในการทำเช่นนั้นคือการทิ้งภาพที่สมบูรณ์ นั่นคือวิธีที่ฉันใช้ในเครื่องมือที่ฉันสร้างขึ้นด้านบนของสิ่งนี้
ชิ้นส่วน
ซอฟต์แวร์ถูกเบี่ยงเบนไปหลายส่วน ก่อนอื่นผู้อ่าน UDF ขนาดเล็ก ยิ่งไปกว่านั้นเครื่องอ่านวิดีโอ DVD มันใช้ประโยชน์จาก wrapper libdvdcss ทั้งหมดนี้ใช้เพื่อใช้เครื่องมือขนาดเล็กในการทิ้งภาพทั้งหมด ฉันจะอธิบายส่วนนี้ที่นี่
เครื่องอ่าน UDF
เครื่องอ่าน UDF ใช้ชุดคุณสมบัติน้อยที่สุด ฉันใช้เฉพาะสิ่งที่ฉันพบตามความจำเป็นและใช้ในดีวีดีที่มีอยู่ ผู้อ่านนี้อนุญาตให้อ่าน UDF ระดับต่ำได้ซึ่งใช้เป็นฐานของดีวีดีวิดีโอทั้งหมด
เครื่องอ่านวิดีโอ DVD
เครื่องอ่านวิดีโอ DVD ใช้เครื่องอ่าน UDF เพื่อรับข้อมูลที่จำเป็นจากดิสก์ อีกครั้งผู้อ่านคนนี้เงียบสงบ มันเชื่อถือได้เฉพาะ UDF สำหรับการเริ่มต้นของชุดชื่อเรื่องและคาดว่าสิ่งอื่นใดที่อยู่ในไฟล์ข้อมูล สิ่งนี้ช่วยให้สามารถอ่านแผ่นดิสก์ที่มีระบบไฟล์ที่เสียซึ่งเป็นเรื่องธรรมดาจริงๆ
wrapper libdvdcss
wrapper libdvdcss ถูกนำมาใช้โดยใช้ ctypes ไลบรารี CTYPES ช่วยให้สามารถเข้าถึงฟังก์ชั่นได้ง่ายกำหนดในวัตถุที่ใช้ร่วมกัน ไลบรารีอนุญาตให้เรียกใช้ฟังก์ชั่นและแผนที่อาร์กิวเมนต์และส่งคืนค่าไปยังประเภทข้อมูล Python เสื้อคลุมนี้ช่วยให้ฉันอ่านดีวีดีที่เข้ารหัสด้วย
Dumper Image
เครื่องมือนี้อนุญาตให้ทิ้งดีวีดีวิดีโอที่เข้ารหัสลงในไฟล์ มันพยายามตรวจจับการเข้ารหัส (ไฟล์วิดีโอ/VOB) และส่วนที่ไม่ได้เข้ารหัส (ไฟล์ข้อมูลมิฉะนั้นใช้พื้นที่ว่าง) ส่วนหนึ่งของดิสก์ ด้วยวิธีนี้มันสามารถทิ้งสิ่งใดได้ตราบใดที่สามารถอ่านไฟล์ระบบและไฟล์ข้อมูลได้ อย่างไรก็ตามแผ่นดิสก์บางตัวมีพื้นที่ที่ทับซ้อนกันซึ่งไม่สามารถทำได้ง่าย
เครื่องมือนี้มีตัวแก้ไขความขัดแย้งเล็กน้อยที่จัดการกับชิ้นส่วนที่ทับซ้อนกัน มันใช้ชุดของกฎเพื่อให้บางประเภทอยู่ร่วมกันและบางส่วนจะได้รับการแก้ไข บนกฎที่เกี่ยวข้องกับสิ่งต่าง ๆ ที่รวมอยู่ในไฟล์ข้อมูล แต่ยังเป็นชื่อ VOB ที่ไม่ได้เข้ารหัสเสมอ ด้วยตัวแก้ไขนี้ปัญหาส่วนใหญ่สามารถจัดการได้และเราได้รับผลลัพธ์ที่สามารถเล่นได้
ใบอนุญาตและการกระจาย
แพ็คเกจนี้ได้รับใบอนุญาต GPL 3 หรือใหม่กว่า มันมีไว้สำหรับการกระจายใหม่ผ่าน Alioth (git: //git.debian.org/users/waldi/python-dvdvideo.git)
บทสรุป
เครื่องมือนี้ช่วยให้ฉันทิ้งดีวีดีวิดีโอทั้งหมดที่ฉันได้รับในครั้งสุดท้าย มันช่วยให้ฉันสามารถดูวิดีโอในสมุดบันทึกของฉันที่ไม่มีเครื่องอ่านดิสก์ออพติคอลด้วยตัวเอง บางทีบางคนอาจต้องการเครื่องมือเช่นนี้ด้วย