Come convertire i file .ts in un formato tradizionale senza perdita di dati?


13

Ho un file che termina in .ts (ad esempio, ecco i primi 10 MB ). Vorrei convertirlo in un formato di flusso più principale (ad esempio, mp4, MPEG2-PS ...), se possibile senza perdita di dati (ad esempio, il remuxing).

Ho letto Come posso convertire i file .ts in qualcosa di utile? domanda. Ho provato avidemuxcon le impostazioni "copia" per i flussi audio e video e il formato contenitore "PS" per MPEG. Non è riuscito con il messaggio di errore "Audio incompatibile / Per DVD, l'audio deve essere 48 kHz MP2 (stereo), AC3, DTS o LPCM (stereo)".

Ho anche provato il comando CLI suggerito.

avconv -i 10MB.ts -vcodec copy -acodec copy 10MB.mpg

Il file di output ha il video giusto, ma nessun suono, almeno quando riprodotto con VLC. Questo è abbastanza sconcertante, perché avconvsembra aver rilevato correttamente il flusso audio.

Input #0, mpegts, from '10MB.ts':
  Duration: 00:00:06.36, start: 51523.824800, bitrate: 12563 kb/s
  Program 37888 
    Stream #0.0[0x100]: Video: mpeg2video (Main), yuv420p, 1440x1080 [PAR 4:3 DAR 16:9], 20000 kb/s, 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc
    Stream #0.1[0x110]: Audio: aac, 0 channels, fltp, 144 kb/s
    Stream #0.2[0x130]: Data: [6][0][0][0] / 0x0006
    Stream #0.3[0x138]: Data: [6][0][0][0] / 0x0006
    Stream #0.4[0x140]: Data: [13][0][0][0] / 0x000D
    Stream #0.5[0x160]: Data: [13][0][0][0] / 0x000D
    Stream #0.6[0x161]: Data: [13][0][0][0] / 0x000D
    Stream #0.7[0x162]: Data: [13][0][0][0] / 0x000D
    Stream #0.8[0x170]: Data: [13][0][0][0] / 0x000D
    Stream #0.9[0x171]: Data: [13][0][0][0] / 0x000D
    Stream #0.10[0x172]: Data: [13][0][0][0] / 0x000D
Output #0, mpeg, to '10MB.mpg':
  Metadata:
    encoder         : Lavf54.20.4
    Stream #0.0: Video: mpeg2video, yuv420p, 1440x1080 [PAR 4:3 DAR 16:9], q=2-31, 20000 kb/s, 90k tbn, 90k tbc
Stream mapping:
  Stream #0:0 -> #0:0 (copy)

Ho anche provato il comando CLI suggerito nei commenti di un'altra domanda .

avconv -i 10MB.ts -c:v copy -c:a libfaac 10MB.mp4

Ancora una volta, nessun suono nel file di output.

EDIT: ho provato VLC come suggerito da @Daniel. Era quasi perfetto. È stato veloce e facile da usare. Ho solo dovuto fare clic su "Converti / Salva", aggiungere il file di input, selezionare il profilo MP4, configurare il codec video e il codec audio su "Mantieni traccia audio / video originale", scegliere un file di destinazione e fare clic su "Avvia". Il video sembrava perfetto, ma l'audio era in qualche modo leggermente corrotto, ma potrebbe essere causato da qualcosa di abbastanza esotico nel flusso audio del mio video.



Hai detto che volevi rimodellare, non ricodificare se possibile. Sei sicuro che VLC sta solo rimodellando?
Llogan,

@LordNeckbeard Ottimo punto! Come posso essere sicuro?
lattone,

Non ho familiarità con VLC per la conversione, ma ho aggiunto una risposta usando ffmpeg.
Llogan,

VLC convertirà qualsiasi cosa in qualcosa con un'eccezionale perdita di dati. Fondamentalmente sei limitato dal formato che hai scelto.
Daniel

Risposte:


22

Matroska (MKV)

Questo eseguirà lo streaming della copia (re-mux) di tutti i flussi:

ffmpeg -i input -map 0 -c copy output.mkv

L' -map 0opzione viene utilizzata per includere tutti i flussi. In caso contrario, utilizzerà il comportamento di selezione del flusso predefinito che determinerebbe la selezione di un solo flusso per tipo di flusso. Dato che Matroska è in grado di gestire la maggior parte dei flussi arbitrari che ho incluso -map 0.

MP4

Questo eseguirà lo streaming della copia (re-mux) di tutti i flussi:

ffmpeg -i input -map 0 -c copy output.mp4
  • Se i formati di input non sono compatibili con MP4, verrà visualizzato un errore.
  • Il tuo lettore / dispositivo potrebbe non supportare tutti i formati arbitrari, meno comuni o legacy anche se supportati da MP4.
  • In caso di dubbi, ricodificare in H.264 + AAC come mostrato di seguito.

Questo ricodificherà il video su H.264 e lo streaming copierà l'audio:

ffmpeg -i input.ts -c:v libx264 -c:a copy output.mp4

Il prossimo esempio ricodificherà sia il video che l'audio:

ffmpeg -i input.ts -c:v libx264 -c:a aac output.mp4

Esempio di perdita H.264:

ffmpeg -i input.ts -c:v libx264 -crf 0 -c:a copy output.mp4

I file senza perdita di dati saranno enormi.

Vedi FFmpeg Wiki: H.264 per maggiori informazioni.


Se si desidera codificare un file MP4 senza perdita di dati, aggiungere -qp 0 o -crf 0, come indicato nella pagina wiki FFMpeg: trac.ffmpeg.org/wiki/Encode/H.264
SuperSluether

2
@SuperSluether Lossless crea file di grandi dimensioni. Per "senza perdita" credo che Lacton significasse "rimodellamento".
Llogan,

Il file di esempio che ho fornito è effettivamente troncato. Il file reale che voglio rimodellare è troppo grande per una facile condivisione.
lattone

1
@lacton Prova muxing in Matroska: ffmpeg -i 10MB.ts -c copy output.mkv. Si otterrà l'errore: Error parsing AAC extradata, unable to determine samplerate. Ecco perché il mio esempio MKV ha ricodificato l'audio. Vedi anche # 4472: Copia AAC dallo stream senza codifica fallita e lavf / mkv: correzione del remuxing di AAC . Tuttavia, nulla di tutto ciò può applicarsi al file di input di grandi dimensioni, non troncato e potrebbe funzionare come previsto.
Llogan,

1
@LordNeckbeard ha ffmpeg -i input -c:v copy -c:a aac output.mkvfunzionato perfettamente. Il video è stato rimodellato e l'audio sembra buono come l'originale, senza la leggera corruzione che ho ottenuto durante la conversione con VLC.
lattone

3

VideoLAN (VLC - http://www.videolan.org/vlc/index.html ) convertirà facilmente qualsiasi cosa in qualsiasi cosa.

Dagli Un colpo. Funziona su Linux, Windows e Mac OS X e ha un'interfaccia molto intuitiva.


Ora che ho usato VLC per la conversione video, lo consiglierei. Grazie per questo suggerimento Per il mio file .ts, ha quasi funzionato. Il video sembrava perfetto, ma l'audio era in qualche modo leggermente corrotto. Potrebbe essere causato da qualcosa di abbastanza esotico nel flusso audio del mio video. Ho modificato la domanda originale per includerla.
lattone

Sì, potrebbe funzionare meglio se usi un subcontenitore diverso per l'audio all'interno di mp4. Forse RAW.
Daniel,

0

Come complemento dell'altra risposta di @llogan - in ogni caso è preferibile una copia in streaming:

Da tempo utilizzo alcuni comandi per estrarre l'audio senza modificare il nome dei file, che può essere adattato a quelli presentati qui, al fine di integrarli nei menu di scelta rapida dei file manager.

Quindi, per "demuxing e muxing" senza cambiare il nome del file usare:

ffmpeg -i "$0" -map 0 -c copy "${0%%.*}".mkv

L'ho aggiunto alle azioni personalizzate di Thunar e allo strumento di configurazione delle azioni di FileManager (Nautilus, Nemo, Caja, PCManFM), in questo modo:

sh -c 'ffmpeg -i "$0" -map 0 -c copy "${0%%.*}".mkv' %f

limitandolo a "* .ts" in Thunar e video/mp2tnelle azioni FileManager.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.