¿Cómo tomo una transmisión FMS h264 y la envuelvo en un contenedor?

¿Cómo tomo una transmisión FMS h264 y la envuelvo en un contenedor?

Tengo un FMS (Flash Media Server 4) que escribe las transmisiones de video en archivos .f4v. Hasta donde puedo ver y entender, solo escribe los datos de video/audio sin ningún contenedor, aunque podría estar equivocado. La URL contiene "mp4:", así que creo que podría ser un contenedor mpeg-4. Pero cuando lo abro en VLC no se reproduce y no muestra información del códec.

Entonces estoy pensando que tengo que envolverlo en un contenedor y necesito que sea lo más rápido posible y sin afectar los datos reales (es decir, no quiero transcodificarlos). Miré usando ffmpeg y mkvtoolnix, pero mkvtoolnix no puede manejar los datos en absoluto (produce un error) y logré convertirlo en un nuevo archivo usando ffmpeg, pero el resultado es un archivo más grande que tiene un extraño Pausa de 30 segundos al principio.

Estoy seguro de que hay una manera fácil de hacer esto, pero aún no la he encontrado.

Aquí está el resultado de ffprobe.exe:

C:\Program Files (x86)\ffmpeg\bin>ffprobe.exe time.f4v
ffprobe version N-31627-g9c2651a, Copyright (c) 2007-2011 the FFmpeg developers
  built on Jul 23 2011 15:02:13 with gcc 4.6.1
  configuration: --enable-gpl --enable-version3 --enable-memalign-hack --enable-runtime-cpudetect --
enable-avisynth --enable-bzlib --enable-frei0r --enable-libopencore-amrnb --enable-libopencore-amrwb
 --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-libopenjpeg --enable-librtmp --en
able-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libvpx --enabl
e-libx264 --enable-libxavs --enable-libxvid --enable-zlib
  libavutil    51. 11. 0 / 51. 11. 0
  libavcodec   53.  9. 0 / 53.  9. 0
  libavformat  53.  6. 0 / 53.  6. 0
  libavdevice  53.  2. 0 / 53.  2. 0
  libavfilter   2. 27. 3 /  2. 27. 3
  libswscale    2.  0. 0 /  2.  0. 0
  libpostproc  51.  2. 0 / 51.  2. 0
[mov,mp4,m4a,3gp,3g2,mj2 @ 003BA280] multiple edit list entries, a/v desync might occur, patch welco
me
[mov,mp4,m4a,3gp,3g2,mj2 @ 003BA280] multiple edit list entries, a/v desync might occur, patch welco
me
[mov,mp4,m4a,3gp,3g2,mj2 @ 003BA280] multiple edit list entries, a/v desync might occur, patch welco
me
[mov,mp4,m4a,3gp,3g2,mj2 @ 003BA280] max_analyze_duration 5000000 reached at 5018000
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'time.f4v':
  Metadata:
    major_brand     : f4v
    minor_version   : 0
    compatible_brands: isommp42m4v
    creation_time   : 2016-11-13 05:20:19
  Duration: 00:01:15.74, start: 0.000000, bitrate: 686 kb/s
    Stream #0.0(eng): Video: h264 (Baseline), yuv420p, 1280x720 [PAR 1:1 DAR 16:9], PAR 3:4 DAR 4:3,
 59.94 tbr, 1k tbn, 119.88 tbc
    Metadata:
      creation_time   : 2016-11-13 05:20:19
    Stream #0.1(eng): Audio: mp3, 22050 Hz, mono, s16, 48 kb/s
    Metadata:
      creation_time   : 2016-11-13 05:20:19
    Stream #0.2(eng): Data: amf0 / 0x30666D61
    Metadata:
      creation_time   : 2016-11-13 05:20:19
Unsupported codec with id 0 for input stream 2

El error que recibo de mkvtoolnix es:Error: Lector Quicktime/MP4: el tamaño de muestra constante y la duración variable aún no son compatibles. Póngase en contacto con el autor si tiene un archivo de muestra de este tipo.

Respuesta1

Después de descubrir las palabras clave adecuadas para poner en Google, encontré la solución:

C:\Archivos de programa (x86)\ffmpeg\bin>ffmpeg -i .f4v -acodec copiar -vcodec copiar -y .mkv

Sin embargo, mi archivo de salida es bastante malo, pero creo que puede estar más relacionado con mi archivo de entrada o con cómo ffmpeg lee ese formato.

información relacionada