Konwertuj xml do srt

Darmowy konwerter online XML do SRT

Konwertuj plik XML z napisami na kompatybilne, edytowalne napisy SRT oraz zweryfikuj synchronizację czasową i utracone formatowanie.

Konwertuj XML na SRT online - za darmo

Uploading…
Wybrane pliki przekraczają łączny limit 9 MB. Wybierz mniej lub mniejsze pliki.

Plik jest przetwarzany natychmiast i usuwany zaraz po pobraniu.

Jak to działa

  1. 1/3

    Prześlij swój plik .xml

    Kliknij, aby wybrać plik, który chcesz przekonwertować, lub po prostu przeciągnij go i upuść w zaznaczonym obszarze.

  2. 2/3

    Wykonaj konwersję .xml do .srt

    Po pomyślnym przesłaniu pliku kliknij konwersję, gdy będziesz gotowy.

  3. 3/3

    Pobierz przekonwertowany plik .srt

    Wynik konwersji jest gotowy do pobrania.

Jak konwertować xml do srt

Edytor wideo, odtwarzacz multimediów lub usługa napisów może wymagać formatu SRT, gdy napisy zostały wyeksportowane z innego systemu jako XML. Konwersja pliku sprawia, że napisy można przenosić i edytować, ale tylko wtedy, gdy XML zawiera możliwy do zidentyfikowania tekst cue oraz dane dotyczące czasu.

Czym jest format XML

XML to strukturalny język znaczników, a nie jeden format napisów. Systemy napisów i transkrypcji używają różnych schematów XML, w tym TTML/DFXP, EBU-TT, Final Cut Pro XML oraz zastrzeżonych formatów eksportu z oprogramowania do edycji, emisji i zamiany mowy na tekst.

Plik XML z napisami może przechowywać cue w elementach takich jak <p begin="00:00:01.000" end="00:00:04.000"> albo używać atrybutów o nazwach start, end, in, out lub duration. Final Cut Pro XML może opisywać projekt edycyjny zamiast zawierać bezpośrednio użyteczne cue napisów, dlatego przed konwersją może być konieczny eksport z oryginalnej aplikacji.

XML nie ma uniwersalnej struktury napisów. Zmiana nazwy captions.xml na captions.srt nie konwertuje pliku; oprogramowanie musi rozpoznać pola czasu, wyodrębnić widoczny tekst i przepisać dane do składni SRT.

Czym jest format SRT

SRT to format zwykłego tekstu obsługiwany przez większość odtwarzaczy wideo, edytorów nieliniowych, serwerów multimediów i platform napisów. Każdy cue zawiera numer porządkowy, czas początkowy i końcowy, tekst napisów oraz pusty wiersz:

1
00:00:01,000 --> 00:00:04,000
Example caption.

Znaczniki czasu SRT używają przecinków przed milisekundami i mają postać HH:MM:SS,mmm. Napisy XML mogą natomiast używać sekund dziesiętnych, kropek, numerów klatek, czasu zegarowego, ticków lub czasów trwania ISO 8601. SRT zajmuje niewiele miejsca, można je łatwo edytować w edytorze tekstu i jest szeroko kompatybilny, ale zawiera znacznie mniej metadanych i informacji o stylu niż większość schematów napisów XML.

Konwertowanie rozpoznawanego XML za pomocą Subtitle Edit

  1. Utwórz kopię zapasową źródłowego pliku XML.
  2. Zainstaluj aktualną desktopową wersję programu Subtitle Edit, będącego edytorem napisów o otwartym kodzie źródłowym dla systemu Windows.
  3. Otwórz plik za pomocą File → Open. Subtitle Edit może importować kilka standardowych formatów napisów i captionów, ale obsługa zależy od konkretnego schematu XML.
  4. Sprawdź zaimportowane cue w siatce napisów i na osi czasu. Porównaj pierwszy, środkowy i ostatni cue ze źródłem lub nagraniem oraz sprawdź podziały wierszy i znaki spoza alfabetu łacińskiego.
  5. Wyeksportuj plik za pomocą File → Save as, wybierz SubRip (*.srt) i wybierz kodowanie UTF-8, jeśli okno dialogowe udostępnia opcję kodowania.

Jeśli plik otwiera się jako zwykły XML, nie importuje żadnych cue lub generuje nieprawidłowe czasy, prawdopodobnie używa nieobsługiwanego albo specyficznego dla projektu schematu. Sprawdzenie XML w edytorze tekstu może ujawnić, czy zawiera rzeczywisty tekst napisów i dane dotyczące czasu; pomyślne otwarcie pliku nie jest dowodem poprawnej konwersji.

Korzystanie z konwertera online w przypadku udokumentowanych plików niezawierających danych wrażliwych

Internetowe usługi napisów, takie jak Happy Scribe i VEED, obsługują wybrane formaty napisów i captionów, ale obsługa XML różni się w zależności od produktu i może być ograniczona do określonego schematu, takiego jak TTML. Przed przesłaniem pliku sprawdź, czy usługa wyraźnie wymienia dokładny typ XML. Nie przesyłaj poufnych, nieopublikowanych ani zawierających dane osobowe napisów, chyba że przetwarzanie przez podmiot zewnętrzny jest dozwolone.

Ogólne strony internetowe konwertujące XML do tekstu lub SRT często wybierają niewłaściwe elementy, ignorują przestrzenie nazw, traktują milisekundy jako sekundy albo zwracają pusty plik. Pobierz wynik, otwórz go w edytorze napisów i porównaj jego czasy z nagraniem przed użyciem.

Konwertowanie przewidywalnego niestandardowego schematu za pomocą Python

Skrypt jest odpowiedni, gdy każdy cue ma rozpoznawalne wartości start, end i tekst. Ten przykład obsługuje czasy zegarowe i sekundy liczbowe, a także wartości duration:

import re
import sys
import xml.etree.ElementTree as ET

def seconds(value):
    value = value.strip().replace(',', '.')
    if re.fullmatch(r'\d+(?:\.\d+)?', value):
        return float(value)
    match = re.fullmatch(r'(\d+):(\d{2}):(\d{2})(?:\.(\d+))?', value)
    if not match:
        raise ValueError(f'Unsupported time: {value}')
    h, m, s, fraction = match.groups()
    return int(h) * 3600 + int(m) * 60 + int(s) + float('0.' + (fraction or '0'))

def srt_time(value):
    ms = max(0, round(value * 1000))
    h, remainder = divmod(ms, 3600000)
    m, remainder = divmod(remainder, 60000)
    s, ms = divmod(remainder, 1000)
    return f'{h:02}:{m:02}:{s:02},{ms:03}'

root = ET.parse(sys.argv[1]).getroot()
cues = []
for element in root.iter():
    start = element.get('start') or element.get('begin')
    end = element.get('end')
    duration = element.get('duration') or element.get('dur')
    if not start or (not end and not duration):
        continue
    start = seconds(start)
    end = seconds(end) if end else start + seconds(duration)
    text = ' '.join(''.join(element.itertext()).split())
    if text and end > start:
        cues.append((start, end, text))

cues.sort()
with open(sys.argv[2], 'w', encoding='utf-8', newline='\n') as output:
    for number, (start, end, text) in enumerate(cues, 1):
        output.write(f'{number}\n{srt_time(start)} --> {srt_time(end)}\n{text}\n\n')

Uruchom go za pomocą python xml_to_srt.py captions.xml captions.srt. Zmień nazwy atrybutów i wybór cue zgodnie ze schematem źródłowym. Skrypt nie interpretuje kodów czasu SMPTE opartych na klatkach, czasów trwania ISO 8601, ticków, nieudokumentowanych jednostek milisekund, przestrzeni nazw XML wymagających kwalifikowanego wyszukiwania ani oddzielnych elementów stylu i mówcy. Skrypt scala również osadzone podziały wierszy w spacje; zastąp ten wiersz przetwarzania tekstu, jeśli struktura wierszy musi zostać zachowana.

Sprawdzanie czasu, kodowania i utraconych metadanych

  • Przed konwersją potwierdź podstawę czasu. Liczba klatek wymaga znajomości źródłowej liczby klatek na sekundę; wartości liczbowe mogą oznaczać sekundy, milisekundy lub ticki.
  • Poprawnie konwertuj czasy trwania względnego: cue z wartościami begin i dur kończy się w chwili begin + dur.
  • Sprawdź nakładające się cue, cue o zerowej długości, odwrócone czasy, brakujący tekst, zduplikowane cue oraz wiele ścieżek językowych. Programy odczytujące SRT różnie obsługują te przypadki.
  • Podczas odczytu źródła zachowaj zadeklarowane w XML kodowanie znaków, a SRT zapisz jako UTF-8. Po eksporcie sprawdź znaki diakrytyczne i alfabety inne niż łaciński.
  • Uwzględnij utratę funkcji charakterystycznych dla XML, takich jak pozycjonowanie, kolory, czcionki, metadane mówcy, synchronizacja karaoke, kolejność odczytu i złożone style wierszy. Najważniejsze oznaczenia mówców lub formatowanie odtwórz ręcznie.
  • Otwórz wynikowy plik SRT w Subtitle Edit lub innym edytorze napisów i wyświetl go wraz z nagraniem. Przed przekazaniem pliku sprawdź pierwszy i ostatni cue, zmiany scen, podziały wierszy oraz synchronizację.

Porównanie formatu XML z SRT

Jak formaty XML i SRT wypadają w porównaniu pod względem najważniejszych cech dla tej konwersji.

Porównanie formatów plików XML i SRT
Cecha .XML Extensible Markup Language .SRT SubRip Subtitle
Otwarty standard Tak Częściowo otwarty
Kompresja Bez kompresji Bez kompresji
Typowy rozmiar pliku Mały Bardzo mały
Otwiera się w przeglądarce internetowej Tak, natywnie Częściowo
Dalsza edycja Łatwy Łatwy
Obsługa metadanych Podstawowy Podstawowy
Czytelny tekstowo Tak Tak
Najlepszy do Wymiana danych Udostępnianie i dystrybucja
Wprowadzono 1998 1997
Twórca W3C Unknown / SubRip community
Typ MIME application/xml application/x-subrip

Najczęściej zadawane pytania

Czy konwerter XML do SRT jest darmowy?

Tak, konwersja XML do SRT na 101convert.com jest całkowicie darmowa. Nie wymaga rejestracji, adresu e-mail ani instalacji. Jeśli potrzebujesz wyższego limitu rozmiaru pliku lub chcesz konwertować więcej plików naraz, sprawdź nasze plany.

Jak duży może być mój plik XML?

Możesz przesłać pliki XML o rozmiarze do 100 MB i przekonwertować do 100 plików jednocześnie w jednej partii.

Co dzieje się z przesłanymi plikami?

Pliki są przetwarzane automatycznie i usuwane z naszych serwerów kilka minut po konwersji. Nigdy nie przeglądamy ani nie udostępniamy Twoich plików.

Czy muszę instalować oprogramowanie, aby przekonwertować XML do SRT?

Nie. Konwersja XML do SRT odbywa się całkowicie online w przeglądarce i działa w systemach Windows, Mac, Linux, Android i iPhone.

Konwersja nie powiodła się?

W większości przypadków przyczyną jest nieprawidłowy format pliku. Prześlij prawidłowy plik XML dla tej konwersji z XML do SRT. Czasami problem może również występować po naszej stronie. Analizujemy powtarzające się nieudane konwersje i wyłączamy lub naprawiamy konwerter, jeśli wykryjemy usterkę.

Czy podczas konwersji XML do SRT zostanie utracone formatowanie i pozycjonowanie napisów?

Zwykle tak: SRT zachowuje numery napisów, czasy rozpoczęcia i zakończenia oraz tekst napisów, ale style XML, kolory, metadane mówców, pozycjonowanie na ekranie i inne atrybuty mogą zostać spłaszczone lub usunięte. Podstawowe podziały wierszy są często zachowywane, zależnie od formatu napisów XML.

Czy synchronizacja napisów pozostanie dokładna podczas konwersji XML do SRT?

Może pozostać dokładna, jeśli XML używa obsługiwanych kodów czasowych i właściwej bazy czasowej, ale synchronizacja oparta na klatkach lub specyficzna dla formatu może wymagać konwersji. Niezgodność liczby klatek na sekundę może przesunąć początki i końce napisów, a nakładające się lub nieprawidłowe napisy mogą zostać zmienione lub odrzucone.

Dlaczego podczas konwersji napisów XML powstają brakujące lub puste napisy SRT?

Ogólny XML nie jest automatycznie formatem napisów, dlatego konwersja może się nie powieść, gdy plik używa nieobsługiwanej struktury napisów, przestrzeni nazw, pól czasowych lub elementów tekstowych. XML musi zawierać rozpoznawalne wpisy napisów z czytelnym tekstem oraz prawidłowymi czasami rozpoczęcia i zakończenia.

Czy można przekonwertować SRT z powrotem do oryginalnego XML bez utraty informacji?

Zwykle nie, ponieważ SRT nie może reprezentować wszystkich danych napisów XML, takich jak szczegółowe style, pozycjonowanie, metadane i niestandardowe pola czasowe. Wynikowy SRT pozostaje edytowalny jako zwykły tekst napisów, ale jego konwersja z powrotem zazwyczaj wymaga odtworzenia usuniętych informacji.