
Tengo un .mov
archivo que tiene mov_text
pistas de subtítulos formateadas que se crearon utilizando la antigua (ahora obsoleta) función "Pista de texto" de QuickTime 7 Pro. Esto es lo que ffmpeg -i myfile.mov
me habla de ellos:
Stream #0:4(eng): Subtitle: mov_text (text / 0x74786574), 640x116, 0 kb/s (default)
Metadata:
rotate : 0
creation_time : 2021-11-20T03:08:45.000000Z
handler_name : Apple Text Media Handler
Actualmente todavía tengo acceso a QuickTime 7 Pro, donde puedo extraer los subtítulos para luego convertirlos a SubRip o algún otro formato que otros programas puedan leer. Sin embargo, necesito actualizar mi sistema y QuickTime 7 Pro no se ejecuta en macOS Catalina y superiores, por lo que estoy buscando una manera de poder seguir accediendo a esos subtítulos en sistemas más nuevos. Parece ffmpeg
que es el camino a seguir pero todavía estoy estancado.
Esto es lo que he probado:
ffmpeg -i test.mov -map 0:s:0 -c copy -f data QT-subtitles.txt
me da el texto plano de los subtítulos pero sin marcas de tiempo, por lo que es bastante inútil para convertir los subtítulos a un formato diferente.
ffmpeg -i test.mov -map 0:s:0 QT-subtitles.srt
convierte correctamente los subtítulos a SubRip, incluidas las marcas de tiempo. Pero elimina los saltos de línea y otros formatos.
También me da los siguientes mensajes de error de datos no válidos encontrados:
Stream mapping:
Stream #0:4 -> #0:0 (mov_text (native) -> subrip (srt))
Press [q] to stop, [?] for help
[mov_text @ 0x7fa492823200] invalid UTF-8 byte in subtitle
[mov_text @ 0x7fa492823200] Invalid UTF-8 in decoded subtitles text; maybe missing -sub_charenc option
Error while decoding stream #0:4: Invalid data found when processing input
[mov_text @ 0x7fa492823200] invalid UTF-8 byte in subtitle
[mov_text @ 0x7fa492823200] Invalid UTF-8 in decoded subtitles text; maybe missing -sub_charenc option
Error while decoding stream #0:4: Invalid data found when processing input
size= 6kB time=00:02:04.30 bitrate= 0.4kbits/s speed=3.32e+04x
video:0kB audio:0kB subtitle:3kB other streams:0kB global headers:0kB muxing overhead: 82.697044%
Sugerencias de los comentarios a continuación para especificar -c text
o -sub_charenc
todas me dan los mismos resultados.
Por lo tanto, espero encontrar una manera de extraer el subtítulo a un archivo de texto simple que todavía tenga formato QTText (ver más abajo) o que de alguna otra manera conserve los saltos de línea y otros formatos. Así es como se ve el QuickTime Text Track original como archivo de texto cuando lo extraigo y lo exporto a través de QuickTime 7 Pro (ver especificacionesaquí).
{QTtext}{font:Verdana}{plain}{size:36}{textColor: 65535, 65535, 65535}{backColor: 0, 0, 0}{justify:default}{timeScale:30}{width:640}{height:116}{timeStamps:absolute}{language:0}{textEncoding:0}
[00:00:00.00]
Text here {bold} bold word {plain} text here
[00:00:01.12]
Text here text here text here
Next line here (respects spaces)
[00:00:02.14]
Luego podría simplemente escribir un script para convertir las etiquetas de formato, como {bold}
etc., en etiquetas html, que creo que SubRip entiende.
¿Hay alguna forma de especificar el formato de salida ffmpeg
además de adivinar lo que necesito de la extensión del archivo, como srt
o txt
? (Estoy pensando en particular que si pudiera especificar mov_text
como salida podría darme un archivo con formato QTText como el de arriba... pero ¿cómo haría eso?)
Si ffmpeg
no puedo hacer el trabajo, estaré encantado de probar otras herramientas.
Respuesta1
Si está dispuesto a transcodificar los subtítulos de mov_text a otra cosa (por ejemplo, archivos Subrip SRT), puede intentar lo siguiente:
ffmpeg -i test.mov -map 0:s:0 -c:s srt subtitles.srt