Eu (JGirot) não sou o autor original deste software ou as seguintes informações sobre ele.
O seguinte foi copiado em http://bblank.thinkmo.de/blog/archive/2010/08/29/new-software-python-dvdvideo em 13 de setembro de 2016 para que o código possa ser melhor compreendido nesse contexto. Além disso, foi copiado aqui para posteridade, caso a fonte original seja removida ou indisponível.
Comece o post original do blog:
Python-Dvdvideo é uma biblioteca para ler imagens em DVD-Video. Inclui uma ferramenta para despejar imagens de DVD-video criptografadas. É implementado no Python 3.
Depois de muito tempo, decidi escrever novamente. Decidi começar com o software que escrevi para o meu próprio uso que poderia ser útil para outras pessoas. Começarei com o Python-DvdVideo, um leitor de DVD-Video escrito no Python 3 e a ferramenta de referência DVD-Video-Backup-Image, um dumper genérico de dvd-video. Vamos ver, se este blog verá mais postagens no futuro.
Intenção
Comecei a escrever este software, porque a libdvdread geralmente não conseguia decifrar meus DVDs de vídeo recém -adquiridos. Libdvdread espera uma estrutura bastante válida do sistema de arquivos e outros metadados no disco. Ele resgatará com força várias condições de erro. Por isso, muitas vezes acabava de remendar libdvdread para tornar o DVDBackup capaz de ler os novos discos.
Geralmente, existem duas maneiras de criar backups desses DVDs, como arquivos ou imagens completas. Dumping -os como arquivos tem grandes problemas se houver certos defeitos no sistema de arquivos, como se algum espaço fosse referenciado em vários títulos. Eu tenho um disco que produz 25gib de saída durante esse despejo. Portanto, a maneira menos problemática de fazer isso é despejar a imagem completa. É assim que eu usei na ferramenta que construí sobre isso.
Peças
O software é dividido em várias partes. Primeiro, um pequeno leitor UDF. Além disso, vem um leitor de vídeo em DVD. Faz uso do wrapper libdvdcss. Tudo isso é usado para implementar uma pequena ferramenta para despejar imagens inteiras. Vou descrever essas partes aqui.
Leitor UDF
O leitor UDF implementa um conjunto mínimo de recursos. Implementei apenas as coisas que encontrei conforme necessário e usei nos DVDs disponíveis. Este leitor permite ler o UDF de baixo nível, usado como base de todos os DVDs de vídeo.
DVD Video Reader
O leitor de vídeo em DVD usa o leitor UDF para obter as informações necessárias do disco. Novamente, este leitor é pequeno e silencioso. Ele confia apenas no UDF para o início dos títulos e espera que qualquer outra coisa esteja listada nos arquivos de informações. Isso permite ler mesmo discos com sistemas de arquivos quebrados, que são realmente comuns.
Wrapper libdvdcss
O invólucro libdvdcss é implementado usando o ctypes. A biblioteca Ctypes permite fácil acesso às funções define em objeto compartilhado. A biblioteca permite a chamada das funções e mapeia os argumentos e retorna valores aos tipos de dados do Python. Este invólucro me permite ler também DVDs criptografados.
Dumper de imagem
Esta ferramenta permite despejar um DVD de vídeo criptografado em um arquivo. Ele tenta detectar partes criptografadas (arquivos de vídeo/VOB) e não criptografadas (arquivos de informações, de outra forma usados) do disco. Dessa forma, é capaz de despejar qualquer coisa, desde que possa ler o sistema de arquivos e os arquivos de informações. No entanto, alguns discos contêm áreas sobrepostas, que não podem ser tão facilmente deguidas.
A ferramenta inclui um pequeno resolvedor de conflitos que lida com peças sobrepostas. Ele usa um conjunto de regras para permitir que alguns tipos coexistem e alguns sejam modificados. Nas regras, Relabels as coisas incluídas em arquivos de informação, mas também um título VOB como sempre não criptografado. Com esse resolvedor, a maioria dos problemas pode ser tratada e obtemos um resultado jogável.
Licença e distribuição
Este pacote é licenciado GPL 3 ou posterior. É para o novo distribuído via Alioth (git: //git.debian.org/users/waldi/python-dvdvideo.git)
Conclusão
Essa ferramenta me permite despejar todos os DVDs de vídeo em que coloquei minhas mãos na última vez. Isso me permite assistir aos vídeos no meu caderno que não possuem leitor de disco óptico por conta própria. Talvez alguém também precise de uma ferramenta.