Перетворювач субтитрів командного рядка з відкритим кодом


Відповіді:


26

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

$ ffmpeg -i file.srt file.vtt

9

дуже простий та ефективний oneliner, який я використовую для перетворення субтитрів:

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

просто змінити assі srtвідповідно до ваших потреб.


7

Субтитри perl swiss армійський ніж (прокрутіть до кінця сторінки).

Тут ви можете знайти більше варіантів.

Також 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"

… Але може бути легко загорнутий у сценарій.


Графічний інтерфейс працює, але я отримав помилку під час запуску з командного рядка. Мені потрібно було встановити, 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якщо треба бути.
Пітер.О

+1, оскільки це дійсно хороший конвертер та програма з відкритим кодом. І він має інтерфейс cmd-лінії.
user10607

1

Що саме ви хочете конвертувати? Якщо він знаходиться між форматами підзаголовків, то це залежить від того, про які формати ви говорите. Тим, хто базується на растрових зображеннях, потрібен буде OCR для перетворення у текстовий формат і, як правило, завжди потрібен ввід користувача для підтвердження точності OCR

Якщо це всі текстові формати, то Jubler або Aegisub можуть бути корисними


Прості текстові субтитри. SRT, STL, SUB, PAC. Взад і вперед.
Джонс

@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

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

якщо ви хочете конвертувати більше файлів за допомогою цієї програми для циклу.


Що робити, якщо Ffmpeg перерве?
174140,

ffmpeg - це мультимедійна бібліотека з відкритим кодом.
Маной Кумар
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.