Perché il crash ti ha lasciato un file che non si riproduce
Un MP4 sono due cose in un unico file: il girato, un lungo blocco di video e audio compressi, e l'indice, una piccola tabella che dice a un lettore dove si trova ogni fotogramma e come si allinea l'audio. Mentre OBS registra, riversa il girato sul disco in modo continuo. Non può ancora scrivere l'indice, perché l'indice registra dimensioni e offset finali che non sono noti finché la registrazione non termina. Così OBS scrive l'indice per ultimo, nell'istante in cui fai clic su stop.
Un crash non arriva mai a quell'istante. Il processo muore con il girato già sul disco e l'indice mai scritto. In termini di MP4 il file ha la sua intestazione ftyp e il suo blocco mdat di media, e gli manca l'atomo moov che li indicizza, ed è per questo che ogni lettore lo rifiuta e ffmpeg dice moov atom not found. Ore di girato possono trovarsi in un file che, per qualsiasi lettore normale, sembra completamente vuoto. Per l'anatomia completa di quell'indice e perché vive alla fine, vedi l'atomo moov dell'MP4 spiegato, e per l'errore esatto e le sue cause, «moov atom not found».
Un crash di OBS, illustrato: la registrazione è arrivata sul disco, ma l'indice che OBS scrive allo stop non è mai stato scritto.
È davvero perso? Sì e no
Cerca questo problema e troverai thread su thread nei forum, molti con un collaboratore di OBS che dice che un MP4 non finalizzato è essenzialmente perso. Non hanno torto, e vale la pena capire esattamente cosa intendono, perché è un'affermazione precisa, non un'alzata di spalle.
Ciò che intendono è che non puoi remuxare il file. Il remuxing copia i flussi in un contenitore pulito, ed è il modo normale di salvare un MP4 problematico. Ma il remux deve leggere l'indice esistente per sapere dove sono i flussi, e un file non finalizzato non ha alcun indice da leggere. Così il remux fallisce sul posto, e con lui falliscono tutti i trucchi di ffmpeg -c copy e faststart costruiti sul remuxing. Rispetto a quella definizione di «riparare», il file è davvero perso.
La metà che tralasciano è che il remuxing non è l'unica opzione. La ricostruzione dell'indice è un'operazione diversa: invece di leggere un indice che non c'è, scansiona il girato direttamente in cerca dei confini dei fotogrammi e ricostruisce l'indice a partire da ciò che misura. Questa è la classe di riparazione che eseguono strumenti a riga di comando come untrunc, ed è ciò che recupera una registrazione che i forum davano per persa. Il girato non è mai stato il problema; l'indice mancante lo era, e un indice si può ricostruire.
L'approccio della registrazione di riferimento
Ricostruire l'indice significa ricostruire la struttura del file a partire dal girato stesso, e il modo più affidabile per farlo è con una registrazione di riferimento: una clip sana, fermata normalmente, fatta in OBS con le stesse impostazioni, lo stesso encoder, risoluzione, frame rate e contenitore. Quel file sano porta con sé un indice completo e valido per esattamente il formato che usava la tua registrazione rotta, il che dà alla ricostruzione un modello che si adatta al tuo girato sopravvissuto.
Produrne una richiede meno di un minuto: apri OBS con lo stesso profilo con cui stavi registrando, cattura qualche secondo e ferma normalmente in modo che il file si finalizzi. La ricostruzione legge quel riferimento per interpretare i tuoi dati, poi scrive un file riproducibile sul girato sopravvissuto.
Ora i limiti onesti, detti chiaramente. Gli ultimi secondi prima del crash erano ancora in memoria e non sono mai arrivati sul disco, quindi sono persi; la ricostruzione restituisce tutto fino a quel punto. Una registrazione fatta con un bitrate fortemente variabile può tornare con un lieve disallineamento di audio e video. Il riferimento deve corrispondere davvero, perché una clip fatta con impostazioni diverse dà un modello che non combacia. E se il file segna 0 byte o è una piccola frazione della sua dimensione prevista, non c'è girato al suo interno da cui ricostruire, il che è un problema di archiviazione o di recupero dati, non di riparazione. Ciò che una ricostruzione restituisce è la tua vera registrazione, indicizzata e riproducibile, mai fotogrammi inventati.
Evitarlo la prossima volta: come OBS è pensato per registrare
Tutto questo modo di fallire è evitabile, e il progetto OBS ha creato gli strumenti per evitarlo. Tre impostazioni, in ordine di quanto aiutano:
Registra in MKV, poi remuxa in MP4
Il consiglio di sempre, e ancora il più sicuro: imposta OBS per registrare in MKV. L'MKV è scritto in modo che una registrazione resti utilizzabile anche se OBS si ferma inaspettatamente, perché non dipende da un unico indice scritto alla fine. Quando la tua sessione termina in modo pulito, usa il remux integrato di OBS per convertire l'MKV in MP4 senza perdita, senza ricodifica, in pochi secondi. Puoi persino far sì che OBS remuxi in MP4 automaticamente dopo ogni registrazione.
Usa Hybrid MP4 su OBS 30.2 e versioni successive
Se ti serve MP4 direttamente, magari per un editor a cui l'MKV non piace, attiva Hybrid MP4, aggiunto in OBS 30.2. Scrive l'MP4 in una struttura frammentata e resistente ai crash, così una registrazione interrotta resta in gran parte utilizzabile invece di rimanere arenata senza indice. È il più vicino che l'MP4 arriva alla sicurezza dell'MKV.
Capisci il trucco dell'MP4 frammentato
Hybrid MP4 funziona grazie all'MP4 frammentato, una struttura che scrive piccoli frammenti di indice autonomi in tutto il file invece di un unico indice alla fine. Se configuri a mano un output personalizzato, l'impostazione del muxer è movflags=frag_keyframe+empty_moov, che produce lo stesso comportamento resistente ai crash. È il meccanismo che sta sotto l'interruttore comodo.
Domande frequenti
Posso recuperare una registrazione di OBS dopo un crash?
Spesso sì, se OBS stava registrando in MP4 o MOV e il file ha una dimensione sana. OBS scrive il girato sul disco in modo continuo durante la registrazione e scrive l'indice che tiene tutto insieme solo quando premi stop. Un crash salta quel passaggio, così il girato è sul disco senza indice e non si riproduce. Ricostruire l'indice rende la registrazione di nuovo riproducibile, meno gli ultimi secondi che erano ancora in memoria quando OBS è morto. Un file da 0 byte è un problema diverso, senza girato da cui ricostruire.
Perché il mio MP4 di OBS non si riproduce dopo che OBS è andato in crash?
Perché l'MP4 non è mai stato finalizzato. L'indice di cui un lettore ha bisogno, l'atomo moov, viene scritto nel momento in cui fermi la registrazione, una volta note le dimensioni finali. Un crash toglie corrente al processo prima di quella scrittura, così il file contiene tutto il suo girato ma niente dell'indicizzazione che lo indica. I lettori e ffmpeg lo segnalano come «moov atom not found». Il girato è sopravvissuto; la mappa no.
Dovrei registrare in MKV o in MP4 con OBS?
Registra in MKV se ti interessa la sicurezza contro i crash, cosa che nelle sessioni lunghe conta. L'MKV è scritto in modo che una registrazione resti utilizzabile anche se OBS si ferma inaspettatamente, perché non dipende da un unico indice scritto alla fine. Quando hai finito, remuxa l'MKV in MP4 senza perdita da dentro OBS in pochi secondi, senza ricodifica. Se devi registrare direttamente in MP4, usa l'opzione Hybrid MP4 in OBS 30.2 e versioni successive, che mantiene una struttura resistente ai crash.
Posso remuxare un MP4 di OBS danneggiato per ripararlo?
No, ed è questo il malinteso dietro la maggior parte dei consigli del tipo «è perso». Remuxare copia i flussi in un contenitore nuovo, ma per farlo deve prima leggere l'indice esistente, e un MP4 non finalizzato non ha alcun indice da leggere. Il remux fallisce all'istante su questi file. Questo è un limite reale del remuxing, non la prova che il girato sia sparito. Ricostruire l'indice, un'operazione diversa, è ciò che recupera davvero una registrazione non finalizzata.
Cos'è Hybrid MP4 in OBS?
Hybrid MP4 è un'opzione di registrazione aggiunta in OBS 30.2 che scrive l'MP4 in modo frammentato e resistente ai crash, così una registrazione interrotta da un crash resta in gran parte utilizzabile invece di rimanere arenata senza indice. Ti dà la comodità di un MP4 che la maggior parte degli editor accetta direttamente, con gran parte della sicurezza che ha reso l'MKV il consiglio standard per registrare con OBS.
L'indice mancante al cuore di tutto questo, per intero: anatomia dell'MP4 e l'atomo moov.