FFmpeg/Avconv no puede copiar subtítulos; ¿Códec no compatible?

Tengo un archivo mp4 con estas secuencias ( avconv -i file.mp4o ffmpeg -i file.mp4):

Stream #0.0(eng): Audio: aac, 48000 Hz, stereo, fltp, 125 kb/s (default)
Stream #0.1(eng): Audio: ac3, 48000 Hz, 5.1, fltp, 384 kb/s
Stream #0.2(eng): Video: h264 (Main), yuv420p, 1280x568, 4027 kb/s, PAR 1:1 DAR 160:71, 23.98 fps, 2997 tbn, 50 tbc (default)
Stream #0.3(eng): Subtitle: c608 / 0x38303663, 0 kb/s
Stream #0.4(und): Subtitle: text / 0x74786574
Stream #0.5: Video: mjpeg, yuvj420p, 667x1000 [PAR 72:72 DAR 667:1000], 90k tbn

Estoy tratando de eliminar la primera transmisión de audio del archivo de esta manera:

avconv -i file.mp4 -map 0 -map -0:0 -codec copy file-out.mp4

# OR #

ffmpeg -i file.mp4 -map 0 -map -0:0 -codec copy file-out.mp4

El problema es que me sale este error:

Could not write header for output file #0 (incorrect codec parameters ?): Operation not permitted

Entonces, verifiqué si algo andaba mal con el archivo mp4 en sí:

avprobe file.mp4

# OR #

ffprobe file.mp4

Y la salida dice:

Unsupported codec with id 0 for input stream 3
Unsupported codec with id 94213 for input stream 4

No tengo idea de lo que eso significa. (Aparentemente, algo anda mal con los subtítulos, pero obtuve el video de iTunes).

  1. ¿Qué ocurre?

  2. ¿Puedo simplemente obligar a avconv/ffmpeg a hacer lo que le pedí (es decir, quitar el flujo de audio y copiar el resto tal como está)? ¿Si es así, cómo?

  3. ¿Existe una mejor alternativa para remuxing, que sea la línea de comandos y se desarrolle activamente?


Aparentemente, me perdí los otros errores/advertencias en la salida de la consola antes del mensaje de error final, como sugirió @aergistal:

[mp4 @ 0x2645420] Codec for stream 0 does not use global headers but container format requires global headers
[mp4 @ 0x2645420] Codec for stream 1 does not use global headers but container format requires global headers
[mp4 @ 0x2645420] Codec for stream 2 does not use global headers but container format requires global headers
[mp4 @ 0x2645420] Codec for stream 3 does not use global headers but container format requires global headers
[mp4 @ 0x2645420] Codec for stream 4 does not use global headers but container format requires global headers
[mp4 @ 0x2645420] track 2: could not find tag, codec not currently supported in container
La falta de encabezados globales no es relevante para su problema de muxing.
Esta pregunta se ha cruzado (esto no se recomienda).

Respuestas (1)

Aparentemente, el cuarto flujo es un flujo de subtítulos CEA-608 , que durante los días de la transmisión de señales de televisión analógica eran datos de subtítulos integrados en los datos de video. Aparentemente, FFmpeg puede extraerlo pero no puede mezclarlo en un nuevo contenedor.

En cuanto a eliminar solo el audio, MP4Box puede ser de ayuda.

Entonces, según su respuesta y comentario, ffmpegactualmente no admite hacer lo que le pedí, y si el ticket está parcheado, es posible que lo haga en el futuro. No hay forma de obligar a ffmpeg a que lo haga, ¿verdad?
Puede haber una forma indirecta de hacerlo: Mux solo los flujos AC3 y H264 en un nuevo contenedor. Intente extraer el título a un SRT, por ejemplo, ffmpeg -i file.mp4 -c:s copy file-out.srt. Si esto funciona, mux el SRT junto con las secuencias del nuevo contenedor en un contenedor final.
Acabo de extraer las 2 secuencias de subtítulos como archivos srt separados y el comando se ejecutó correctamente sin ningún problema. Pero cuando los abrí en Notepad++, veo esto: i.imgur.com/j1MKW8n.png -- ¿Alguna idea de por qué? He abierto archivos srt antes y se supone que deben mostrar texto normal.
Porque son solo datos CEA608 sin procesar volcados en la salida que especificó. CCExtractor debería poder producir SRT válidos a partir de ellos.