Konwerter napisów w otwartym wierszu poleceń

Odpowiedzi:

26

Możesz wypróbować FFmpeg (świetne narzędzie!):

$ ffmpeg -i file.srt file.vtt
SebMa
źródło
9

bardzo prosty i skuteczny oneliner, którego używam do konwersji napisów:

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

wystarczy zmienić assi srtzgodnie z własnymi potrzebami.

RASG
źródło
7

Napisy perl szwajcarski scyzoryk (przewiń na koniec strony).

Tutaj możesz znaleźć więcej opcji.

Ponadto mplayer / mencoder ma kilka opcji dumpXXXsub, które mogą działać. Nigdy tego nie próbowałem, ale czytanie mężczyzny powinno działać. Przykład:

-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.
Słoneczny
źródło
Jest to przydatne, niestety obsługiwane są tylko trzy różne formaty; .srt, .sub, .smi.
Johnas,
Sprawdziłem Mplayera i Mencodera. Nie działało to jednak. I obsługuje tylko SRT, SMI, SUB i JACO. Dobra sugestia, dzięki.
Johnas,
Działa dobrze, dzięki! Tutaj: pastebin.com/T6DM9xbq to mój konwerter oparty na tym z wykrywaniem klatek na sekundę przy użyciu mplayera
Łukasz Frankowski
3

Program Open Source Edycja napisów ma konwerter wiersza poleceń i jest dostępny zarówno dla systemu Windows, jak i Linux.

Składnia :SubtitleEdit /convert "pattern" "name-of-format-without-spaces"

Przykład 1 : SubtitleEdit /convert sub1.srt sami
Wynik : Konwertuje sub1.srt do sub1.sub do formatu SAMI

Przykład 2 : SubtitleEdit /convert *.srt adobeencore
Wynik : Konwertuje wszystkie pliki .srt do formatu Adobe Encore

W systemie Linux wiersz poleceń musi być nieco dłuższy…

Składnia :mono SubtitleEdit.exe /convert "pattern" "name-of-format-without-spaces"

… Ale można go łatwo zawinąć w skrypt.

Johanz
źródło
GUI działa, ale wystąpił błąd podczas uruchamiania z wiersza poleceń. Musiałem zainstalować, libmono-winformsaby GUI działało (jak podano w README) ... Może jest coś dodatkowego, co jest potrzebne do działania CLI ... dostaję AttachConsole...błąd. używając Ubuntu 10.04 ...
Peter.O
Wydaje się, że zostało to naprawione w wersji 3.2.3 - przynajmniej na Ubuntu
Johanz
1
@Johanz: Dzięki. Wersja 3.2.3 działa. Przekształcił on .assw SubRip (.srt) ... Po prostu zauważyłem: produkuje \r\nzakończenia linii (CRLF), nawet jeśli źródłem linii źródłowej jest \n... ale rzadko jest to problem i można go łatwo naprawić, sedjeśli musi być.
Peter.O
+1, ponieważ jest to naprawdę dobry konwerter i aplikacja typu open source. I ma interfejs linii cmd.
user10607,
1

Co chcesz dokładnie przekonwertować? Jeśli jest pomiędzy formatami napisów, to zależy od tego, o jakim formacie mówisz. Te, które są oparte na bitmapach, wymagają OCR do konwersji do formatu tekstowego i generalnie zawsze wymagają danych wejściowych od użytkownika w celu potwierdzenia dokładności OCR

Jeśli wszystkie formaty tekstowe, to Jubler lub Aegisub mogą być przydatne

Shevek
źródło
Proste napisy tekstowe. SRT, STL, SUB, PAC. Tam i z powrotem.
Johnas,
@johnas - moja odpowiedź została zaktualizowana o kilka możliwości
Shevek
Dzięki, Shevek, ale żadne z powyższych nie działało z linii poleceń. Chociaż byłyby idealne, gdybym mógł użyć GUI.
Johnas,
1

Odkryłem, że niektóre odtwarzacze (np. Odtwarzacz wideo na Dysku Google) nie lubią pliku .srt wygenerowanego z:

ffmpeg -i subtitles.ass <blah>.srt

lub:

SubtitleEdit /convert subtitles.ass subrip

ale:

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

... zrobił dla mnie lewę.

Jim Sung
źródło
0

zmień nazwę pliku za pomocą sed

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

jeśli chcesz usunąć .srtplik po konwersji, po prostu dodaj polecenie rm.

for i in ./*.ass ; do ffmpeg -i "$i" "$( echo "$i"|sed 's/\.ass//g' ).srt"  &&  rm -f "$i"  ; done
mdaliyan
źródło
1
Co jeśli nazwa pliku to big.assassins.assured(plus rozszerzenie)? Twoja sednazwa to bigassinsured. Bez sedi bez tej luki: "${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

jeśli chcesz przekonwertować więcej plików za pomocą tego programu w pętli for.

Manoj Kumar
źródło
Co jeśli Ffmpeg przerwie?
174140,
ffmpeg jest biblioteką multimedialną typu open source.
Manoj kumar