Convertidor de subtítulos de línea de comando de código abierto

Respuestas:

26

Puedes probar FFmpeg (¡gran herramienta!):

$ ffmpeg -i file.srt file.vtt
SebMa
fuente
9

Oneliner muy simple y efectivo que uso para convertir subtítulos:

for i in *.ass ; do ffmpeg -i "$i" "$i.srt" ; done

solo cambia assy de srtacuerdo a tus necesidades.

RASG
fuente
7

Subtítulos perl navaja suiza (desplazarse hasta el final de la página).

Aquí puedes encontrar más opciones.

Además, mplayer / mencoder tiene algunas opciones dumpXXXsub, que podrían funcionar. Nunca intenté esto, pero leer al hombre, debería funcionar. Ejemplo:

-dumpmpsub (MPlayer only)
              Convert the given subtitle (specified with the -sub option) to MPlayer's subtitle format, MPsub.  Creates a dump.mpsub file in the current directory.
Soleado
fuente
De hecho, esto es útil, lamentablemente, aunque solo se admiten tres formatos diferentes; .srt, .sub, .smi.
Johnas
Revisé el Mplayer y el Mencoder. Sin embargo, no funcionó. Y solo admite SRT, SMI, SUB y JACO. Sin embargo, una buena sugerencia, gracias.
Johnas
Funciona bien, gracias! Aquí: pastebin.com/T6DM9xbq es mi convertidor basado en esto con detección de framerate usando mplayer
Lukasz Frankowski
3

El programa de código abierto Subtitle Edit tiene un convertidor de línea de comandos y está disponible para Windows y Linux.

Sintaxis :SubtitleEdit /convert "pattern" "name-of-format-without-spaces"

Ejemplo 1 : SubtitleEdit /convert sub1.srt sami
Resultado : convertirá sub1.srt a sub1.sub al formato SAMI

Ejemplo 2 : SubtitleEdit /convert *.srt adobeencore
Resultado : convertirá todos los archivos .srt al formato Adobe Encore

Para Linux, la línea de comando debe ser un poco más larga ...

Sintaxis :mono SubtitleEdit.exe /convert "pattern" "name-of-format-without-spaces"

... pero podría ser fácilmente envuelto en un guión.

Johanz
fuente
La GUI funciona, pero recibí un error al ejecutar desde la línea de comandos ... Necesitaba instalar libmono-winformspara que la GUI funcione (como se indica en el archivo README) ... Tal vez hay algo adicional que se necesita para que la CLI funcione ... me sale un AttachConsole...error. usando Ubuntu 10.04 ...
Peter.O
Esto parece solucionarse en la versión 3.2.3 - al menos en Ubuntu
Johanz
1
@Johanz: Gracias. La versión 3.2.3 funciona. Convirtió .assa SubRip (.srt) ... Solo una cosa que noté: produce \r\nterminaciones de línea (CRLF), incluso cuando el final de la línea de origen es \n... pero eso rara vez sería un problema y se soluciona fácilmente sedsi necesita ser.
Peter.O
+1 ya que este es un convertidor realmente bueno y una aplicación de código abierto. Y tiene una interfaz de línea cmd.
user10607
1

¿Qué es lo que quieres convertir exactamente? Si está entre formatos de subtítulos, entonces depende de qué formatos esté hablando. Aquellos que están basados ​​en mapas de bits requerirán que OCR se convierta a formato de texto y generalmente siempre requieren la entrada del usuario para confirmar la precisión del OCR

Si se trata de todos los formatos de texto, Jubler o Aegisub pueden ser útiles.

Shevek
fuente
Subtítulos de texto simple. SRT, STL, SUB, PAC. De ida y vuelta.
Johnas
@johnas - mi respuesta se actualizó con un par de posibilidades
Shevek
Gracias Shevek, pero ninguno de los anteriores estaba en línea de comando operativo. Aunque habrían sido perfectos si pudiera usar la GUI.
Johnas
1

Descubrí que a algunos reproductores (por ejemplo, el reproductor de video Google Drive) no les gusta el .srt generado a partir de:

ffmpeg -i subtitles.ass <blah>.srt

o:

SubtitleEdit /convert subtitles.ass subrip

pero:

ffmpeg -i subtitles.ass -codec:s text subtitles.srt

... hizo el truco para mí.

Jim Sung
fuente
0

renombrar el nombre del archivo usando sed

for i in ./*.ass ; do ffmpeg -i "$i" "$( echo "$i"|sed 's/\.ass//g' ).srt" ; done

Si desea eliminar el .srtarchivo después de la conversión, simplemente agregue un comando rm después.

for i in ./*.ass ; do ffmpeg -i "$i" "$( echo "$i"|sed 's/\.ass//g' ).srt"  &&  rm -f "$i"  ; done
mdaliyan
fuente
1
¿Qué pasa si el nombre del archivo es big.assassins.assured(más la extensión)? Tu lo sednombrarás bigassinsured. Sin sedy sin este defecto: "${i%.ass}.srt".
Kamil Maciorowski
0
#!/bin/bash

file="*.srt"                     # Find file
ffmpeg -i "$file" "${file%.*}.vtt"   # Convert file  
rm "$file"                         # Remove file .srt from your dir

si desea convertir más archivos usando este programa en for loop.

Manoj Kumar
fuente
¿Qué pasa si aborta Ffmpeg?
174140
ffmpeg es una biblioteca multimedia de código abierto.
Manoj Kumar