openjutsu
영상에서 원클릭으로 인물 교체, ComfyUI·MiniMax H3 기반 오픈소스 로컬 힉스필드 겐주츠 대안, FLUX.3 Klein 재조명 지원
DVDRescue는 미완성 DVD, 미니DVD, DVD‑VR, AVCHD 영상을 MP4로 복구해 저장합니다 Windows 무료
DVDRescue recupera i video da un DVD non finalizzato, dai miniDVD delle videocamere, dai DVD-VR e dalle riprese AVCHD e li salva in MP4. Gratis per Windows.
미디어C# · ShellGitHub @Giuseppe-sciarra온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
Recupera i video da DVD non finalizzati, miniDVD delle videocamere, DVD-VR e riprese AVCHD e li salva in MP4. Programma gratuito per Windows.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Recupera i video dai dischi che il computer non riesce ad aprire — i dischetti da 8 cm delle videocamere rimasti non finalizzati, i DVD-VR dei registratori, le riprese AVCHD, i Blu-ray registrati, le registrazioni interrotte a metà — e li consegna in MP4, pronti da guardare.
Download, guida e domande frequenti: tastieredigitali.tech/casi-studio/dvdrescue
Niente VOB, niente IFO, niente authoring: si mette il disco, si preme un tasto, escono i video.
| Supporto | Formato | Come li trova |
|---|---|---|
| DVD-Video | VIDEO_TS con IFO | legge le IFO: titoli e capitoli veri |
| DVD-VR | DVD_RTAV/VR_MOVIE.VRO | VR_MANGR.IFO, con ripiego sull'analisi del flusso |
| DVD non finalizzato / +VR | VOB senza strutture | analisi diretta dei settori |
| Blu-ray video | BDMV | playlist .mpls e clip .m2ts |
| Blu-ray registrato | BDAV | playlist .rpls/.vpls |
| AVCHD (videocamere) | AVCHD/BDMV, anche sotto PRIVATE | playlist, o direttamente i file .MTS |
| Disco illeggibile | nessuna struttura | ricerca dei flussi MPEG nei settori |
Apre anche le immagini già riversate con altri programmi: ISO, BIN/CUE, NRG, MDS/MDF, CCD/IMG, CDI, DAA e i dump grezzi.
Se estrai un DVD con la sola ricerca dei flussi, l'orologio interno del video (SCR) riparte a ogni cella e a ogni capitolo: il risultato sono decine di frammenti da un filmato unico. DVDRescue legge invece le strutture che il disco dichiara — le IFO sui DVD, le playlist sui Blu-ray — che dicono esattamente dove comincia e dove finisce ogni registrazione.
Poi lascia scegliere come dividere:
Su un lettore ottico il tempo se ne va in due modi: leggendo byte che non servono, e aspettando risposte su settori che non ci sono. Un lettore a cui si chiede un settore non scritto ritenta per conto suo prima di rispondere, quindi ogni richiesta a vuoto costa secondi.
DVDRescue evita entrambe le cose:
Misurato sul materiale di prova, contando le richieste al supporto (che è ciò che costa tempo su un lettore ottico, non i byte):
| Caso | Letto | Richieste al lettore |
|---|---|---|
| DVD con strutture di navigazione | 0,2 MB su 23 MB | 2 (erano 26) |
| Disco breve senza filesystem | 21 MB su 21 MB, di seguito | 26 |
| Disco da 300 MB quasi vuoto | 93 MB su 300 MB | 98 |
Il registro riporta i tempi di ogni fase e il numero di letture, così se qualcosa rallenta si vede subito dove.
Sui dischi messi male l'impegno cresce da solo, in tre gradini (vedi più avanti). La spunta Parti subito col recupero insistente salta direttamente all'ultimo: serve solo se si sa già com'è messo il disco, altrimenti conviene lasciar fare al programma.
Non copia prima tutto il disco su un'immagine: i byte vanno dal lettore direttamente a ffmpeg mentre il disco gira, senza file intermedi. Il disco viene letto una volta sola, e se chiedi sia l'MP4 ricodificato sia quello senza ricodifica escono entrambi da quella stessa lettura.
La copia integrale del disco resta disponibile come opzione, per quando il supporto è messo male e conviene salvarlo prima di lavorarci sopra.
Un disco "non finalizzato" contiene i dati ma non la tabella dei contenuti: il filesystem viene scritto solo alla chiusura del disco, quindi Windows non trova niente da montare. DVDRescue lavora sotto quel livello:
READ DISC INFORMATION, READ TRACK INFORMATION,
READ DVD STRUCTURE) per sapere fin dove il disco è stato scritto davvero; se il lettore non
risponde o mente, cerca il limite reale con una ricerca binaria sui settori.DVDRescue.exe (chiede i permessi di
amministratore: servono per parlare col lettore a livello di settore).IFO — titolo 2, playlist 00003.mpls,
scansione diretta…). Spunta quelli che vuoi.Formati di uscita
| Opzione | Risultato |
|---|---|
| MP4 H.264 + AAC | ricodifica con libx264: si apre su telefoni, TV, web |
| MP4 senza ricodifica | video copiato tale e quale, audio in AAC: immediato, qualità intatta |
| Flusso grezzo | .mpg (DVD) o .m2ts (Blu-ray/AVCHD) così come sta sul disco |
I file prendono il nome dal prefisso scelto, senza suffissi: ripresa.mp4. Se si chiedono
entrambe le uscite MP4 serve per forza un secondo nome, e solo in quel caso compare
ripresa_originale.mp4 per la copia senza ricodifica. Estraendo di nuovo nella stessa cartella
il file precedente non viene sovrascritto: il nuovo diventa ripresa_2.mp4.
Il deinterlacciamento è attivo di default: le videocamere registrano interlacciato e senza quel passaggio si vedono i pettini sui movimenti.
La durata mostrata accanto a ogni video è misurata, non dichiarata: l'orologio interno dello stream riparte a ogni registrazione, quindi sottrarre il primo valore dall'ultimo darebbe la durata della sola ultima ripresa — mezz'ora può risultare di cinque secondi. DVDRescue misura invece il ritmo pezzo per pezzo lungo tutto il tratto, così regge sia i reset dell'orologio sia il fatto che una ripresa ferma occupa molti meno byte di una piena di movimento. Sul materiale di prova la stima cade entro il 2% del valore reale.
Una nota sul flusso grezzo unito: mettendo in fila registrazioni diverse l'orologio MPEG riparte
da capo, quindi il .mpg può dichiarare una durata più corta del vero. I dati ci sono tutti —
l'MP4 convertito riporta la durata giusta.
DVDRescue gira come amministratore, e Windows tiene separate le connessioni di rete delle due
sessioni: le lettere mappate dall'utente (Z: verso \\server\condivisione) non esistono
per un processo elevato, quindi non compaiono nella finestra di scelta della cartella. Non è un
limite del programma, è come funziona l'elevazione dei privilegi.
All'avvio DVDRescue legge le mappature salvate nel profilo dell'utente e le rifà nella propria sessione, usando le credenziali già memorizzate in Windows: nella maggior parte dei casi le unità ricompaiono da sole e il registro elenca quali.
Il pulsante Rete ▾ accanto alla cartella di destinazione apre tre possibilità:
\\server\condivisione\video) e si inseriscono utente e password nella finestra di Windows.
Il percorso per esteso funziona sempre, anche senza lettera assegnata.EnableLinkedConnections di Windows, che
collega le unità della sessione normale e di quella amministratore. È una modifica al sistema:
vale per tutti i programmi e per tutti gli utenti del computer, ha effetto dal riavvio
successivo, e si annulla dallo stesso menu (il valore viene rimosso, non azzerato, quindi il
sistema torna esattamente com'era). Comoda su un computer personale; su una postazione condivisa
conviene lasciar perdere e usare il percorso per esteso.Due avvertenze pratiche. Il ripristino automatico funziona solo con le mappature persistenti: se la lettera è stata assegnata senza spuntare Riconnetti all'accesso, Windows non la salva nel profilo e non c'è niente da ripristinare — in quel caso si rimappa spuntando l'opzione, oppure si usa il percorso per esteso. E il percorso per esteso si può incollare anche dentro la finestra di scelta della cartella, nella casella "Cartella:" in basso: non serve che la lettera compaia nell'albero.
Una lettera di rete scritta a mano (Y:\riprese) viene tradotta da sola nel percorso per esteso
quando non è raggiungibile: il programma prova Y:\riprese, poi \\server\condivisione\riprese,
e solo se fallisce anche quello chiede le credenziali. La casella si aggiorna con il percorso che
ha funzionato, così la volta dopo parte già giusta.
È il numero che si guarda per capire se il recupero ha funzionato, quindi vale la pena spiegare come viene fuori — ci sono tre trappole e ci sono cascato in tutte e tre.
Sottrarre il primo orologio dall'ultimo non funziona. L'orologio dello stream MPEG riparte da capo a ogni registrazione: su un DVD di famiglia con venti riprese quella differenza misura solo l'ultima, e mezz'ora di video diventa cinque secondi.
Un ritmo unico applicato a tutto nemmeno. I byte al secondo cambiano parecchio: una ripresa ferma su un muro occupa pochissimo, una piena di movimento molto di più. Il ritmo va misurato pezzo per pezzo.
Un tratto non è tutto video. In modalità file unico si prende l'intera area fra il primo e l'ultimo settore video: se in mezzo ci sono megabyte vuoti — un DVD-RW con registrazioni cancellate — contarli al ritmo del video gonfiava la durata di nove volte.
Come funziona adesso: sedici assaggi da un megabyte sparsi sul tratto; di ognuno si conta quanti settori sono video e si misura il ritmo dal primo all'ultimo pack dentro quella stessa lettura. Un assaggio da un megabyte letto di seguito costa meno di otto letture sparse, e in cambio dà sia il ritmo sia la densità, contati esattamente. I tratti sotto gli 8 MB si leggono tutti: è esatto e costa niente. E se la densità complessiva scende sotto la metà, la lettura rapida si tira indietro da sola e passa alla ricerca vera, perché su un disco pieno di buchi la sua assunzione non regge.
Misurato sul materiale di prova, contro la verità nota:
| Caso | Durata reale | File unico | File separati |
|---|---|---|---|
| 10 riprese da 20 s in fila (orologio che riparte 9 volte) | 03:20 | 03:23 | 03:24 |
| 2 riprese da 20 s in 300 MB quasi vuoti | 40 s | 40,9 s (scorciatoia rifiutata) | 40,9 s |
| 2 registrazioni attaccate, 20 s + 7 s | 28 s | 24,8 s | 28,6 s |
Sul caso che conta — riprese continue, il DVD di videocamera — l'errore è sotto il 2%.
Su un disco senza filesystem — il caso dei miniDVD non finalizzati — trovare i confini fra una registrazione e l'altra richiede di passare in rassegna tutta l'area scritta: più di un gigabyte alla velocità del lettore, cioè qualche minuto.
Ma se la divisione scelta è Tutto in un unico file, quei confini non servono a niente: il programma prende l'intera area scritta, individua il primo e l'ultimo settore video con due letture e ne misura la durata. Qualche secondo invece di qualche minuto. I settori inutili vengono scartati durante l'estrazione, quindi il risultato è lo stesso.
Se poi servono le registrazioni separate, basta scegliere la divisione e premere di nuovo Leggi disco: il programma lo segnala nel registro.
Cartella di destinazione, cartella della copia disco, modalità di divisione, formati di uscita, qualità, preset, prefisso dei nomi, velocità di lettura e lettore usato l'ultima volta vengono salvati alla chiusura e rimessi al prossimo avvio. Un percorso di rete incollato a mano viene conservato come qualsiasi altro.
Il file è %APPDATA%\DVDRescue\impostazioni.json: niente registro e niente installazione, per
spostare la configurazione su un altro computer basta copiarlo. Se si rovina o si cancella, il
programma riparte dai valori predefiniti senza lamentarsi.
Una videocamera non scrive il DVD-R tutto d'un fiato: ogni sessione diventa una traccia, e fra una traccia e l'altra restano zone mai scritte. Su un disco così il settore 0 non risponde affatto — il filesystem ci sarebbe finito solo alla chiusura del disco, che non è mai avvenuta.
Questo rompeva il programma in due modi, e il secondo costava caro.
Il primo: si controllava il settore 0 per decidere se il disco fosse leggibile. Non lo era, e il programma se ne andava dicendo "disco vuoto o illeggibile" con mezzo gigabyte di riprese intatte due settori più in là.
Il secondo: il lettore dichiara esattamente dove ha scritto, e quell'informazione veniva stampata nel registro e poi buttata via. La scansione partiva da zero e attraversava le zone mai scritte un pezzo alla volta, ritentando su ognuna. Su un disco vero — tracce a 528, 34336 e 34816, ultimo settore scritto 248543 — sono 66 MB di nulla macinati a forza di comandi destinati a fallire: venti minuti di attesa per non recuperare niente.
Adesso i tratti dichiarati dal lettore guidano tutto: la calibrazione li usa come banco di prova, la verifica del limite cerca un appiglio fra gli inizi delle tracce invece di fissarsi sul settore 0, e la scansione passa in rassegna solo quelli, saltando il resto senza nemmeno chiederlo. Nel collaudo con un disco finto fatto così — due riprese separate da 37 MB mai scritti, settore 0 morto — il vuoto costa zero comandi in più, e le spunte "scansione approfondita" e "recupero insistente" non cambiano il tempo: 658 comandi contro 660.
Prima o poi capita il disco che non si legge e basta. Lì contano due cose, e nessuna delle due è recuperare l'ultimo byte.
Sapere che sta lavorando. L'avanzamento dell'estrazione segue la testina, non il convertitore:
mostra dove sta sul disco, quanto ne è uscito di buono, quanti settori si sono persi e a che
velocità sta andando. Se il lettore è in difficoltà lo dice invece di mostrare 0 MB fermo —
prima contava i byte consegnati a ffmpeg, che su un disco messo male restano a zero per minuti
proprio mentre il lettore lavora di più.
Che finisca. Il recupero insistente spende sei comandi per ogni settore che non risponde, e il lettore ci mette decimi di secondo a rifiutarne ognuno: un solo megabyte distrutto sono sette minuti, mezzo gigabyte sono ore. C'è quindi un tetto al tempo complessivo speso a ritentare — tre minuti — dopo il quale si prosegue in lettura veloce e lo si scrive nel registro. Ai dischi solo graffiati non toglie niente, perché lì i settori muti sono pochi e sparsi e il bilancio non si esaurisce mai; serve a non spendere ore su un disco che non ha più niente da dare.
Nel collaudo, su un finto disco con un quarto della superficie morta: 6,9 s contro 14,9 s, tutti i settori buoni recuperati lo stesso, quelli rotti scartati invece di finire nel file come spazzatura.
Aspettare il lettore. È il difetto più subdolo di tutti, e il più facile da non vedere. Su un disco rovinato il lettore fa correzione d'errore per conto suo, e una lettura che riesce può metterci dieci o venti secondi. Con un'attesa massima fissa, quella lettura viene interrotta a un passo dal risultato, contata come errore e rifatta da capo: si paga due volte la stessa fatica per poi buttare via un settore che era buono. È il modo più efficace di rendere illeggibile un disco che si sarebbe letto.
Adesso l'attesa si adatta: quando una lettura scade mentre il lettore sta ancora lavorando — o riesce a un soffio dal limite — l'attesa raddoppia, fino a trenta secondi, e lo si scrive nel registro. Nel collaudo, con un lettore che impiega una volta e mezza il tempo concesso: con l'attesa fissa tutti i settori dati per persi, con quella adattiva tutti recuperati, e con meno comandi — perché non si rifà il lavoro buttato via.
Rallentare per andare più veloce. Suona come un controsenso ed è la cosa che funziona di più: a piena velocità il lettore sbaglia e ritenta da solo decine di volte prima di rispondere, a 4x prende il settore al primo colpo. Se dopo tre quarti di minuto la lettura è sotto 0,6 MB/s, il programma porta il lettore a 4x da solo e lo dice. Se la velocità l'hai scelta tu dal menu, non te la tocca.
Un solo giro lento. Con Salva anche una copia integrale del disco si paga la lentezza una volta sola: l'immagine sul disco fisso si riapre poi con Apri immagine e ci si lavora a velocità piena, quante volte si vuole. La copia salta le zone mai scritte invece di aspettarle.
Il metodo veloce va bene sulla maggior parte dei dischi, ma su un supporto vecchio o rovinato può non bastare: i settori che al primo colpo non rispondono vengono lasciati perdere, e se capitano proprio dove sta il video il risultato è "nessun video individuato".
Quando succede il programma non si ferma lì e non chiede niente: riprova da solo, e lo scrive nel registro. Ma riprova per gradi, che è la parte che conta — saltare dritti al metodo ostinato su un disco grande vuol dire mezz'ora di attesa per scoprire che non c'era niente.
| Gradino | Cosa fa | Quanto costa |
|---|---|---|
| 1. veloce | un tentativo per settore, salta le zone vuote, sondaggio rapido dell'area video | secondi |
| 2. via di mezzo | legge tutto di seguito senza saltare, e sui settori che non rispondono prova il comando alternativo (READ CD) — quello che certi lettori accettano dove il primo fallisce | qualche minuto su un disco intero |
| 3. insistente | tre tentativi per settore e suddivisione fino al singolo settore | lento, e lo dice: si ferma con Interrompi |
Il secondo gradino è quello nuovo, ed è quello che risolve quasi tutti i casi reali: su un DVD-RW del 2006 è la differenza fra un disco apparentemente vuoto e quaranta minuti di riprese, senza pagare il prezzo del terzo. L'estrazione poi usa lo stesso impegno che ha permesso di trovare il video, altrimenti i settori strappati a fatica tornerebbero vuoti nel file.
Il sondaggio rapido non viene rifatto ai tentativi successivi al primo: è già stato fatto e non ha trovato niente, ripeterlo è solo tempo.
Un'altra cosa che il metodo veloce gestisce: il video non sempre comincia all'inizio del disco. Su un DVD-RW formattato in modalità VR la testa è occupata da strutture e riserve, e la prima ripresa parte anche decine di megabyte più avanti. I primi 16 MB si leggono di seguito, così una ripresa breve in testa non sfugge, poi si assaggia ogni 8 MB fino in fondo all'area scritta invece di arrendersi a metà disco.
Serve .NET 8 SDK.
dotnet publish src/DVDRescue/DVDRescue.csproj -c Release -r win-x64 --self-contained true \
-p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true -o publish
Metti ffmpeg.exe in publish/ffmpeg/ oppure lascia che l'app lo scarichi al primo utilizzo.
La build automatica è in .github/workflows/build.yml: a ogni push esegue i test e costruisce
l'eseguibile, che resta scaricabile fra gli artifact dell'esecuzione per trenta giorni.
Due modi, entrambi producono gli stessi due pacchetti — uno con ffmpeg incluso e uno senza — e li allegano alla release, da cui chiunque può scaricarli senza passare da GitHub Actions.
A mano, senza toccare niente. Scheda Actions → workflow build → Run workflow →
spunta Pubblica una release scaricabile → Run. Il tag lo crea la build da sola usando la
versione dichiarata nel .csproj (oggi v1.3.1); volendone un altro si scrive nella casella
tag. Ripubblicare la stessa versione sostituisce i file della release esistente.
Col tag, come prima. Resta valido e ha la precedenza: il numero di versione lo detta il tag.
git tag v1.3.1 && git push origin v1.3.1
In entrambi i casi la release parte solo se i test passano: il lavoro di build dipende da quello di test, quindi un controllo rosso ferma la pubblicazione invece di mandare fuori un eseguibile che non è stato verificato.
Il motore di recupero ha un banco di prova che non richiede né lettore né dischi veri: autora
due DVD-Video con dvdauthor (uno con tre titoli e capitoli, uno con un titolo composto da più
celle), costruisce un disco grezzo senza filesystem, e verifica riconoscimento del disco, lettura
delle IFO, numero di titoli, unione in un file solo, conversione al volo e robustezza sul rumore.
bash tests/TestHarness/make-test-images.sh # serve ffmpeg, dvdauthor, genisoimage
cd tests/TestHarness && dotnet run -c Release
Il controllo che conta è il confronto fra i due criteri: sullo stesso disco le strutture danno 1 titolo dove il vecchio taglio a ogni salto d'orologio ne produceva 4. Su un disco vero con molti capitoli la differenza è fra un file e più di cento.
C'è poi una sezione che collauda la parte più difficile da provare senza un DVD rovinato in mano: il comportamento sul lettore. Un finto lettore riproduce il tetto ai settori per comando e i settori che non rispondono, e il banco verifica che un megabyte venga letto per intero in 16 comandi anche con il tetto a 64 KB, che la via di mezzo recuperi un graffio col comando alternativo in una trentina di comandi, e che sei megabyte di vuoto non ne costino mai più di qualche centinaio. È il collaudo che avrebbe preso al volo il difetto che faceva leggere i dischi grandi 2 KB alla volta.
src/DVDRescue/
├── Core/ astrazione dei blocchi (lettore, immagine, partizione) e utilità
├── Native/ SCSI pass-through, comandi MMC, elenco lettori
├── FileSystems/ UDF (VAT, sparing, metadati 2.50) e ISO 9660 + Joliet + Rock Ridge
├── Dvd/ IFO DVD-Video (titoli, capitoli, celle) e DVD-VR
├── Bluray/ playlist BDMV/BDAV/AVCHD e analisi Transport Stream
├── Images/ ISO, BIN/CUE, NRG, MDS/MDF, CCD, CDI, DAA
├── Media/ ricerca dei flussi MPEG, ffmpeg
├── Recovery/ motore: riconoscimento disco, titoli, estrazione al volo
└── MainForm.cs interfaccia
tests/TestHarness/ banco di prova su DVD autorati
extra/ driver non usati da questo programma (vedi extra/README.md)
.m2ts/.MTS —
è quello usato quando le playlist mancano.MIT. ffmpeg è distribuito separatamente sotto la propria licenza.