ÓÈÆäÔÚLinux²Ù×÷ϵͳ»·¾³ÖУ¬¹âÇý±à³Ì²»½öÊǶÔÓ²¼þ×ÊÔ´µÄÓÐЧÀûÓ㬸üÊÇ̽Ë÷ϵͳµ×²ã»úÖÆºÍÌáÉýϵͳÁé»îÐÔµÄÖØÒªÍ¾¾¶
±¾ÎĽ«ÉîÈë̽ÌÖLinuxϵĹâÇý±à³Ì£¬´Ó»ù´¡ÖªÊ¶µ½¸ß¼¶Ó¦Ó㬴øÄãÁìÂÔÕâÒ»ÁìÓòµÄ÷ÈÁ¦
Ò»¡¢Linux¹âÇý±à³Ì»ù´¡ 1.1 LinuxϵĹâÇýÉ豸 ÔÚLinuxϵͳÖУ¬¹âÇýÉ豸ͨ³£±»Ê¶±ðΪSCSI»òIDE½Ó¿ÚµÄÉ豸£¬²¢Í¨¹ýÉ豸Îļþ£¨Èç/dev/cdrom¡¢/dev/dvd»ò/dev/sr0£©½øÐзÃÎÊ
ÕâЩÉ豸Îļþ×ñÑUnix/LinuxµÄÒ»ÇнÔÎļþÔÔò£¬Ê¹µÃÓû§¿ÉÒÔͨ¹ý±ê×¼µÄÎļþ²Ù×÷½Ó¿Ú£¨Èçopen¡¢read¡¢writeµÈ£©Óë¹âÇý½øÐн»»¥
1.2 ¹âÇýÇý¶¯ÓëÎļþϵͳ LinuxÖ§³Ö¶àÖÖ¹âÇýÇý¶¯£¬ÈçISO9660£¨±ê×¼CD-ROMÎļþϵͳ£©¡¢UDF£¨Í³Ò»¹âÅ̸ñʽ£©ÒÔ¼°Joliet£¨×¨Îª³¤ÎļþÃûÉè¼ÆµÄCD-ROMÎļþϵͳ£©
ÕâЩÎļþϵͳ²»½öÖ§³Ö»ù±¾µÄ¶ÁÈ¡²Ù×÷£¬»¹ÄÜ´¦Àí¹âÅÌÉϵÄĿ¼½á¹¹ºÍÎļþÊôÐÔ£¬Îª±à³ÌÌṩÁ˷ḻµÄ½Ó¿Ú
1.3 »ù±¾ÃüÁîÓ빤¾ß ÔÚ½øÐйâÇý±à³Ì֮ǰ£¬ÊìϤһЩ»ù±¾µÄÃüÁîÐй¤¾ßºÍ¿âÊǷdz£ÖØÒªµÄ
ÀýÈ磬`mount`ºÍ`umount`ÃüÁîÓÃÓÚ¹ÒÔØºÍÐ¶ÔØ¹âÅÌÎļþϵͳ£»`dd`ÃüÁî¿ÉÒÔÓÃÓڵͼ¶±ðµÄÊý¾Ý¶Áд£»`lsblk`ºÍ`blkid`ÃüÁî¿ÉÒÔ°ïÖúʶ±ðºÍ¹ÜÀí¿éÉ豸£»¶ø`libcdio`ºÍ`libdvdread`µÈ¿âÔòÌṩÁ˸ü¸ß¼¶±ðµÄAPI£¬¼ò»¯Á˹âÅ̶ÁÈ¡¹ý³Ì
¶þ¡¢¹âÇý±à³ÌÈëÃÅ 2.1 ¹ÒÔØÓë¶ÁÈ¡¹âÅÌÄÚÈÝ ÔÚ±à³ÌÖУ¬·ÃÎʹâÇýµÄµÚÒ»²½Í¨³£ÊǹÒÔØ¹âÅ̵½Ä³¸öĿ¼
Õâ¿ÉÒÔͨ¹ýCÓïÑÔÖеÄϵͳµ÷ÓûòPythonÖеÄ`subprocess`Ä£¿éÖ´ÐÐ`mount`ÃüÁîʵÏÖ
¹ÒÔØ³É¹¦ºó£¬¼´¿ÉʹÓñê×¼µÄÎļþI/Oº¯Êý¶ÁÈ¡¹âÅÌÉϵÄÊý¾Ý
include ËäÈ»¼òµ¥Ö±½Ó£¬µ«ÔÚʵ¼ÊÓ¦ÓÃÖУ¬¸üÍÆ¼öʹÓÃϵͳÌṩµÄAPI½øÐиü¾«Ï¸µÄ¿ØÖÆ£¬±ÈÈç`mount()`ºÍ`umount()`ϵͳµ÷ÓÃ
2.2 ʹÓÃlibcdio¿â
`libcdio`ÊÇÒ»¸öÓÃÓÚ´¦ÀíÒôƵCD¡¢CD-ROMºÍDVD-ROMµÄ¿ªÔ´¿â£¬ËüÌṩÁ˷ḻµÄAPIÀ´¶ÁÈ¡¹âÅÌÐÅÏ¢¡¢¹ìµÀÊý¾ÝµÈ ÏÂÃæÊÇÒ»¸öʹÓÃ`libcdio`¶ÁÈ¡¹âÅÌÐÅÏ¢µÄ¼òµ¥Ê¾Àý£º
include `libcdio`¿âµÄʹÓôó´ó¼ò»¯Á˹âÅ̶ÁÈ¡µÄ¸´ÔÓÐÔ£¬Ê¹µÃ¿ª·¢Õß¿ÉÒÔרעÓÚÊý¾Ý´¦ÀíÂß¼
Èý¡¢¸ß¼¶Ó¦ÓÃÓë¼¼ÇÉ
3.1 ¹âÇý¿ØÖÆ£ºµ¯³öÓë¹Ø±Õ
³ýÁ˶ÁÈ¡Êý¾Ý£¬¿ØÖƹâÇýµÄÎïÀí¶¯×÷£¨È絯³öÍÐÅÌ¡¢¹Ø±ÕÍÐÅÌ£©Ò²ÊDZà³ÌÖеÄÒ»¸ö³£¼ûÐèÇó Õâͨ³£Í¨¹ýÏò¹âÇý·¢ËÍÌØ¶¨µÄSCSIÃüÁîÀ´ÊµÏÖ ÔÚLinuxÏ£¬¿ÉÒÔʹÓÃ`ioctl`ϵͳµ÷ÓÃÓëSCSIÃüÁ½øÐн»»¥
include ÐèҪעÒâµÄÊÇ£¬²¢·ÇËùÓйâÇý¶¼Ö§³ÖÕâЩÃüÁÇÒÓû§¿ÉÄÜÐèÒª¾ßÓÐ×ã¹»µÄȨÏÞ£¨ÈçrootȨÏÞ£©À´Ö´ÐÐÕâЩ²Ù×÷
3.2 ´¦Àí¶àýÌåÄÚÈÝ
¶ÔÓÚ°üº¬ÒôƵ»òÊÓÆµÄÚÈݵĹâÅÌ£¬LinuxÌṩÁ˷ḻµÄ¶àýÌå´¦Àí¹¤¾ßºÍ¿â£¬Èç`ffmpeg`¡¢`GStreamer`µÈ ÕâЩ¹¤¾ß¿ÉÒÔ½âÎö¹âÅÌÉϵĶàýÌåÁ÷£¬²¢×ª»»ÎªÊʺϲ¥·Å»ò½øÒ»²½´¦ÀíµÄ¸ñʽ ÀýÈ磬ʹÓÃ`ffmpeg`¿ÉÒÔ´ÓDVDÖÐÌáÈ¡ÊÓÆµºÍÒôƵ¹ìµÀ£º
ffmpeg -i /dev/cdrom -c copy output.mkv
ËäÈ»Õâ²»ÊÇÖ±½ÓµÄ±à³ÌʾÀý£¬µ«ËüչʾÁËÔÚLinux»·¾³Ï´¦Àí¶àýÌå¹âÅ̵ÄÇ¿´óÄÜÁ¦£¬Îª¿ª·¢ÕßÌṩÁ˹ãÀ«µÄÓ¦Óÿռä
3.3 °²È«ÐÔÓë´íÎó´¦Àí
ÔÚ½øÐйâÇý±à³Ìʱ£¬°²È«ÐÔÓë´íÎó´¦ÀíÊDz»¿ÉºöÊÓµÄÒ»»· È·±£³ÌÐòÄܹ»ÓÅÑŵش¦Àí¸÷ÖÖÒì³£Çé¿ö£¬ÈçÉ豸²»¿ÉÓᢶÁÈ¡´íÎó¡¢È¨ÏÞ²»×ãµÈ£¬ÊÇÌáÉý³ÌÐò½¡×³ÐԵĹؼü ʹÓÃÊʵ±µÄ´íÎóÂëºÍÈÕÖ¾¼Ç¼£¬¿ÉÒÔ°ïÖú¿ª·¢Õß¿ìËÙ¶¨Î»²¢½â¾öÎÊÌâ
ËÄ¡¢×ܽá
Linux¹âÇý±à³Ì²»½öÊǶÔÓ²¼þ²Ù×÷ÄÜÁ¦µÄÌåÏÖ£¬¸üÊÇÉîÈëÀí½âLinuxϵͳ»úÖÆµÄÖØÒªÍ¾¾¶ ´Ó»ù±¾µÄ¹ÒÔØÓë¶ÁÈ¡£¬µ½¸ß¼¶µÄ¹âÇý¿ØÖÆÓë¶àýÌå´¦Àí£¬LinuxÌṩÁ˷ḻµÄ¹¤¾ßºÍ¿â£¬Ê¹µÃ¿ª·¢ÕßÄܹ»Áé»îÓ¦¶Ô¸÷ÖÖÐèÇó ͨ¹ý²»¶ÏѧϰÓëʵ¼ù£¬Ä㽫Äܹ»ÕÆÎÕÕâÒ»ÁìÓò£¬¿ª·¢³ö¸ü¼Ó¸ßЧ¡¢Îȶ¨µÄÓ¦ÓóÌÐò£¬ÎªLinuxÉú̬ϵͳ¹±Ï××Ô¼ºµÄÁ¦Á¿