Конвертер субтитров командной строки с открытым исходным кодом

20

Есть ли какие-либо программы с открытым исходным кодом, командная строка, конвертеры субтитров - желательно для Linux?

Johnas
источник

Ответы:

26

Вы можете попробовать FFmpeg (отличный инструмент!):

$ ffmpeg -i file.srt file.vtt
SebMa
источник
9

очень простой и эффективный oneliner, который я использую для преобразования субтитров:

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

просто изменить assи в srtсоответствии с вашими потребностями.

RASG
источник
7

Субтитры perl швейцарский армейский нож (прокрутите до конца страницы).

Здесь вы можете найти больше вариантов.

Кроме того, в mplayer / mencoder есть некоторые опции dumpXXXsub, которые могут работать. Я никогда не пробовал это, но, читая человека, это должно работать. Пример:

-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.
Солнечный
источник
Действительно, это удобно, к сожалению, хотя поддерживаются только три разных формата; .srt, .sub, .smi.
Джонас
Я проверил Mplayer и Mencoder. Не работает, хотя. И поддерживает только SRT, SMI, SUB и JACO. Хорошее предложение, хотя, спасибо.
Джонас
Работает хорошо, спасибо! Здесь: pastebin.com/T6DM9xbq - мой конвертер, основанный на этом, с определением частоты кадров с помощью mplayer
Лукаш Франковски,
3

Программа с открытым исходным кодом Subtitle Edit имеет конвертер командной строки и доступна как для Windows, так и для Linux.

Синтаксис :SubtitleEdit /convert "pattern" "name-of-format-without-spaces"

Пример 1 : SubtitleEdit /convert sub1.srt sami
Результат : преобразует sub1.srt в sub1.sub в формат SAMI

Пример 2 : SubtitleEdit /convert *.srt adobeencore
Результат : преобразует все файлы .srt в формат Adobe Encore

Для Linux командная строка должна быть немного длиннее ...

Синтаксис :mono SubtitleEdit.exe /convert "pattern" "name-of-format-without-spaces"

... но можно легко обернуть в сценарий.

Johanz
источник
GUI работает, но я получил ошибку при запуске из командной строки libmono-winforms.... Мне нужно было установить для GUI для работы (как указано в README) ... Может быть, есть что-то дополнительное, что необходимо для работы CLI ... я получаю AttachConsole...ошибку. используя Ubuntu 10.04 ...
Peter.O
Кажется, это исправлено в версии 3.2.3 - по крайней мере, в Ubuntu
Йоханз
1
@Johanz: Спасибо. Версия 3.2.3 работает. Он преобразовал a .assв SubRip (.srt) ... Я заметил только одну вещь: он создает \r\n(CRLF) окончания строк, даже когда конец строки источника \n... но это редко будет проблемой, и его легко исправить, sedесли нужно быть.
Peter.O
+1, так как это действительно хороший конвертер и приложение с открытым исходным кодом. И у этого есть интерфейс линии cmd.
user10607 11.09.15
1

Что именно вы хотите конвертировать именно? Если это между форматами субтитров, то это зависит от того, о каких форматах вы говорите. Для тех, которые основаны на растровом изображении, потребуется OCR для преобразования в текстовый формат и, как правило, всегда требуется ввод данных пользователем для подтверждения точности OCR.

Если это все текстовые форматы, то могут быть полезны Jubler или Aegisub

Shevek
источник
Простые текстовые субтитры. СТО, СТЛ, СУБ, ПАК. Назад и вперед.
Джонас
@johnas - мой ответ дополнен несколькими возможностями
Шевек
Спасибо Шевек, но ничего из вышеперечисленного не было в командной строке. Хотя они были бы идеальными, если бы я мог использовать графический интерфейс.
Джонас
1

Я обнаружил, что некоторые плееры (например, видеоплеер Google Drive) не любят .srt, сгенерированный из:

ffmpeg -i subtitles.ass <blah>.srt

или:

SubtitleEdit /convert subtitles.ass subrip

но:

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

... сделал свое дело для меня.

Джим сун
источник
0

переименуйте имя файла, используя sed

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

если вы хотите удалить .srtфайл после конвертации, просто добавьте команду rm позже.

for i in ./*.ass ; do ffmpeg -i "$i" "$( echo "$i"|sed 's/\.ass//g' ).srt"  &&  rm -f "$i"  ; done
mdaliyan
источник
1
Что если имя файла big.assassins.assured(плюс расширение)? Вы назовете sedэто bigassinsured. Без sedи без этого недостатка "${i%.ass}.srt".
Камиль Мачоровски
0
#!/bin/bash

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

если вы хотите конвертировать больше файлов с помощью этой программы в цикле for.

Маной Кумар
источник
Что делать, если Ffmpeg прерывается?
174140
ffmpeg - это мультимедийная библиотека с открытым исходным кодом.
Манодж Кумар