¿Cómo convertir archivos .ts a un formato convencional sin pérdidas?

13

Tengo un archivo que termina en .ts (por ejemplo, aquí están los primeros 10 MB ). Me gustaría convertirlo a un formato de transmisión más principal (por ejemplo, mp4, MPEG2-PS ...), sin pérdida si es posible (es decir, remuxing).

He leído el ¿Cómo convierto archivos .ts en algo útil? pregunta. Intenté avidemuxcon la configuración "copiar" para las transmisiones de video y audio, y el formato contenedor "PS" para MPEG. Eso falló con el mensaje de error "Audio incompatible / Para DVD, el audio debe ser 48 kHz MP2 (estéreo), AC3, DTS o LPCM (estéreo)".

También probé el comando CLI sugerido.

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

El archivo de salida tiene el video correcto, pero no tiene sonido, al menos cuando se reproduce con VLC. Esto es bastante desconcertante, porque avconvparece haber detectado correctamente la transmisión de 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)

También probé el comando CLI sugerido en los comentarios de otra pregunta .

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

Nuevamente, no hay sonido en el archivo de salida.

EDITAR: Probé VLC como lo sugirió @Daniel. Fue casi perfecto. Fue rápido y fácil de usar. Solo tenía que hacer clic en "Convertir / Guardar", agregar el archivo de entrada, seleccionar el perfil MP4, configurar el códec de video y el códec de audio para "Mantener la pista original de video / audio", elegir un archivo de destino y hacer clic en "Iniciar". El video se veía perfecto, pero el audio estaba de alguna manera ligeramente dañado, pero podría ser causado por algo bastante exótico en la transmisión de audio de mi video.

lacton
fuente
¿Has probado VLC? videolan.org/vlc/index.html
Daniel
Mencionaste que querías remux, no volver a codificar si es posible. ¿Estás seguro de que VLC es solo remuxing?
llogan el
@LordNeckbeard ¡Buen punto! ¿Como puedo estar seguro?
lacton
No estoy familiarizado con VLC para la conversión, pero agregué una respuesta usando ffmpeg.
llogan
VLC convertirá cualquier cosa a cualquier cosa con una excelente pérdida sin pérdidas. Básicamente estás limitado por el formato que elegiste.
Daniel

Respuestas:

22

Matroska (MKV)

Esto transmitirá copia (re-mux) todas las transmisiones:

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

La -map 0opción se utiliza para incluir todas las transmisiones. De lo contrario, utilizará el comportamiento de selección de flujo predeterminado que solo daría como resultado que se seleccione un flujo por tipo de flujo. Como Matroska puede manejar la mayoría de las transmisiones arbitrarias que incluí -map 0.

MP4

Esto transmitirá copia (re-mux) todas las transmisiones:

ffmpeg -i input -map 0 -c copy output.mp4
  • Si sus formatos de entrada no son compatibles con MP4, obtendrá un error.
  • Es posible que su reproductor / dispositivo no sea compatible con todos los formatos arbitrarios, menos comunes o heredados, incluso si son compatibles con MP4.
  • En caso de duda, vuelva a codificar a H.264 + AAC como se muestra a continuación.

Esto volverá a codificar el video a H.264 y copiará el audio:

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

El siguiente ejemplo volverá a codificar tanto el video como el audio:

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

Ejemplo H.264 sin pérdidas:

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

Los archivos sin pérdida serán enormes.

Ver FFmpeg Wiki: H.264 para más información.

lema
fuente
Si desea codificar un archivo MP4 sin pérdidas, agregue -qp 0 o -crf 0, como se menciona en la página wiki de FFMpeg
SuperSluether
2
@SuperSluether Lossless crea archivos enormes. Por "sin pérdidas" creo que lacton significa "remuxing".
llogan
El archivo de muestra que proporcioné está de hecho truncado. El archivo real que quiero remux es demasiado grande para compartir fácilmente.
lacton
1
Trate @lacton Muxing en Matroska: ffmpeg -i 10MB.ts -c copy output.mkv. Obtendrá el error: Error parsing AAC extradata, unable to determine samplerate. Es por eso que mi ejemplo MKV volvió a codificar el audio. También vea # 4472: la copia AAC de la transmisión sin codificación falla y lavf / mkv: Repare el remuxing AAC . Sin embargo, nada de esto puede aplicarse a su gran archivo de entrada no truncado y puede funcionar como se esperaba.
llogan
1
@LordNeckbeard ffmpeg -i input -c:v copy -c:a aac output.mkvfuncionó a la perfección. El video fue remezclado y el audio suena tan bien como el original, sin la ligera corrupción que obtuve al convertir con VLC.
lacton
3

VideoLAN (VLC - http://www.videolan.org/vlc/index.html ) convertirá fácilmente casi cualquier cosa en cualquier cosa.

Dale un tiro. Se ejecuta en Linux, Windows y Mac OS X, y tiene una interfaz muy fácil de usar.

Daniel
fuente
Ahora que he usado VLC para la conversión de video, lo recomendaría. Gracias por esta sugerencia. Para mi archivo .ts, casi funcionó. El video se veía perfecto, pero el audio estaba ligeramente dañado. Puede ser causado por algo bastante exótico en la transmisión de audio de mi video. Edité la pregunta original para incluir esto.
lacton
Sí, podría funcionar mejor si usa un subcontenedor diferente para el audio dentro del mp4. Quizás RAW.
Daniel
0

Como complemento a la otra respuesta de @llogan, de todos modos es preferible una copia de flujo:

He estado usando durante mucho tiempo algunos comandos para extraer audio sin cambiar el nombre de los archivos, que se pueden adaptar a los presentados aquí, para integrarlos en los menús contextuales de los administradores de archivos.

Entonces, para "demuxing y muxing" sin cambiar el nombre del archivo, use:

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

He agregado eso a las acciones personalizadas de Thunar y a la herramienta de configuración de acciones FileManager (Nautilus, Nemo, Caja, PCManFM), así:

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

mientras lo restringe a "* .ts" en Thunar y video/mp2ten FileManager Actions.

cipricus
fuente