¿Por qué falla ffmpeg al convertir un archivo .ts a .mpeg?

0

Me gustaría convertir sin pérdida un .tsarchivo a un formato de archivo más utilizable, por ejemplo .mpeg. Desafortunadamente, el archivo convertido parece carecer de audio. Al menos no escucho nada cuando lo reproduzco en VLC (aunque el video funciona), y algún otro reproductor de medios ( Audiencia ) no lo abre en absoluto. ¿Puedes decirme por qué FFmpeg falló y cómo hacerlo correctamente?

¡Gracias!

El comando que usé:

privat@manuel-Inspiron-3721:~/Downloads$ ffmpeg -i hls-720p.ts -codec copy hls-720p.mpeg

Salida de FFmpegs:

ffmpeg version 2.8.10-0ubuntu0.16.04.1 Copyright (c) 2000-2016 the FFmpeg developers
  built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.4) 20160609
  configuration: --prefix=/usr --extra-version=0ubuntu0.16.04.1 --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --cc=cc --cxx=g++ --enable-gpl --enable-shared --disable-stripping --disable-decoder=libopenjpeg --disable-decoder=libschroedinger --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxvid --enable-libzvbi --enable-openal --enable-opengl --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzmq --enable-frei0r --enable-libx264 --enable-libopencv
  libavutil      54. 31.100 / 54. 31.100
  libavcodec     56. 60.100 / 56. 60.100
  libavformat    56. 40.101 / 56. 40.101
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5. 40.101 /  5. 40.101
  libavresample   2.  1.  0 /  2.  1.  0
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  2.101 /  1.  2.101
  libpostproc    53.  3.100 / 53.  3.100
Input #0, mpegts, from 'hls-720p.ts':
  Duration: 00:06:31.86, start: 1.400000, bitrate: 1432 kb/s
  Program 1 
    Metadata:
      service_name    : Service01
      service_provider: FFmpeg
    Stream #0:0[0x100]: Video: h264 (Main) ([27][0][0][0] / 0x001B), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 25 fps, 25 tbr, 90k tbn, 50 tbc
    Stream #0:1[0x101]: Audio: aac (LC) ([15][0][0][0] / 0x000F), 44100 Hz, stereo, fltp, 139 kb/s
[mpeg @ 0x1c7b680] VBV buffer size not set, using default size of 130KB
If you want the mpeg file to be compliant to some specification
Like DVD, VCD or others, make sure you set the correct buffer size
Output #0, mpeg, to 'hls-720p.mpeg':
  Metadata:
    encoder         : Lavf56.40.101
    Stream #0:0: Video: h264 ([27][0][0][0] / 0x001B), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], q=2-31, 25 fps, 25 tbr, 90k tbn, 25 tbc
    Stream #0:1: Audio: aac ([15][0][0][0] / 0x000F), 44100 Hz, stereo, 139 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
frame= 9796 fps=0.0 q=-1.0 Lsize=   62752kB time=00:06:31.86 bitrate=1311.8kbits/s    
video:57506kB audio:4853kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.631245%

Información de códec de VLC

.tsArchivo original : Archivo .ts original

.mpegArchivo convertido : Archivo .mpeg convertido

Multisync
fuente

Respuestas:

2

Si está utilizando, -c copyno está codificando el video, solo está cambiando el "sobre", que no admite ni h264 ni aac.

Los archivos .mpeg deben contener mpeg1 o mpeg2 video y mpeg1 layer 1,2 o 3 audio. H264 es mpeg4 y aac es una extensión de mpeg2.

VLC podría reproducirse ya que casi puede reproducir cualquier cosa, pero su salida "codificada" ahora es menos compatible que nunca.

Intente codificarlo en .mp4 para hacerlo más compatible. Creo que puede mantener la bandera de copia en este caso.

Nota: .mpeg es un formato muy antiguo y la salida que elimina el indicador de copia generaría un video de baja calidad.

NuTTyX
fuente
Al elegir .mp4como archivo de salida, me de error siguiente: [mp4 @ 0x901680] Malformed AAC bitstream detected: use the audio bitstream filter 'aac_adtstoasc' to fix it ('-bsf:a aac_adtstoasc' option with ffmpeg). Podría solucionarlo utilizando la -bsf:a aac_adtstoascopción propuesta y funciona ahora. ¿La conversión sigue sin pérdidas? Estoy muy preocupado por no introducir ninguna pérdida de conversión.
Multisync el
1
Este filtro crea un MPEG-4 AudioSpecificConfig a partir de un encabezado ADTS MPEG-2/4 y elimina el encabezado ADTS. Si no se le solicitó que elimine el indicador de copia para usar el filtro, es seguro asumir que no hubo una nueva codificación ni pérdida de calidad.
NuTTyX