Nie jesteś zalogowany.
W poradniku przeczytacie jak łączy się pliki MKV pozostawiając je w dalszym ciągu w oddzielnych plikach (segment linking) oraz jak tworzy się uporządkowane rozdziały (ordered chapters).
Na początek potrzebne będą MKVmerge GUI, MKVinfo GUI (lub MediaInfo) oraz odtwarzacz MPC zawarty w paczce kodeków CCCP (z innych paczek bądź zainstalowany oddzielnie powinien działać identycznie; nie używam innych odtwarzaczy, dlatego napisałem o tym). Aby stworzyć interfejs graficzny (GUI) do MKVinfo należy utworzyć do niego skrót, włączyć jego właściwości i w polu "Element docelowy" na samym końcu dopisać "-g". Uruchamiając program ze skrótu będzie włączać się GUI.
Łączenie segmentów polega na przypisaniu plikowi A unikalnego ID segmentu z pliku B, tak zwany "Segment UID (SUID)". Pliki koniecznie muszą być w kontenerze MKV z prostej przyczyny, SUID jest generowany tylko dla MKV. Oba pliki powinny być w tej samej rozdzielczości i proporcji wyświetlania (aspect ratio). Jeżeli nie będą to zakładając, że plik A ma 16:9, a plik B 4:3, to plik B będzie rozciągnięty, bo odziedziczy proporcje pliku A. Być może da się to jakoś ustawić, ale ja tego nie wiem. Na chwilę obecną wiem, że ten problem można rozwiązać dodając czarne paski po bokach przy kodowaniu do pliku B, wtedy będzie poprawnie wyświetlany. Wszystkie pliki powinny być także skodowane tym samym kodekiem albo możecie otrzymywać crashe. Najlepiej niech to będzie AVC/h.264, inne kodeki mogą temu nie podołać.
W MediaInfo SUID można odczytać z sekcji "General" (pierwsza sekcja) z linijki "Unique ID", to powinna być pierwsza linijka w tej sekcji. SUID zaczyna się dopiero w nawiasie od znaków "0x". Tutaj pokazuje "0x" tylko na samym początku, ale to jest to samo. Teraz wybieramy "File (Plik) -> Eksport (Eksportuj) lub Alt+E", klikamy na zakładkę "Text", wybieramy miejsce zapisu i zapisujemy. Można też ułatwić sobie zadanie wybierając "View (Widok) -> Text (Tekst)", teraz można bezpośrednio z MediaInfo kopiować SUID bez "0x" na początku. Wiedząc mniej więcej na czym polega teoria przejdźmy do praktyki.
Wyjaśnienia dotyczące samego łączenia segmentów będę opierać się na założeniu, że plik A to jakieś intro, a plik B to część główna filmu i ma być dołączony do intro.
Otwieramy MKVinfo GUI ze stworzonego wcześniej skrótu, wrzucamy tu plik MKV, który ma być wyświetlany po intro (plik B). Następnie zapisujemy go do pliku txt ("File -> Save info as text" lub używamy skrótu "Ctrl + S"). Utworzył nam się plik txt zawierający potrzebną nam informację SUID. Wyszukujemy w nim linijki "Segment UID", która będzie zawierała ciąg znaków zaczynający się od "0x": "0xb8 0x0a 0x34 0xe4 0x0c 0x0f 0xd5 0x09 0xb0 0x58 0x7c 0x89 0x69 0x20 0xdd 0xb2". Teraz wrzucamy intro (plik A) do MKVmerge GUI i przechodzimy do zakładki "Global". Znajdziemy tu miejsce oznaczone jako "File/Segment linking". Z otrzymanego wcześniej pliku txt kopiujemy SUID i wklejamy go w pole "Next segment UID" (wklejamy bez wyrazów "Segment UID"). Plik muksujemy i otrzymamy tylko plik z into w niezmienionej wadze. Jeżeli wszystko zostało zrobione poprawnie odtwarzacz powinien wyświetlać łączny czas plików A i B, w przeciwnym wypadku mogliście popełnić błąd lub wasz odtwarzacz nie obsługuje linkowania lub obsługuje je tylko po części. Może być też tak, że otworzy intro i będzie pokazywać tylko jego czas, a gdy intro się skończy, automatycznie przeskoczy do głównej części filmu. Aby wszystko było wyświetlane poprawnie, należy zawsze uruchamiać film z nowo powstałego pliku A.
Jeżeli ma się 3 pliki do połączenia to wtedy głównym plikiem jest plik B i to jego wrzucamy do MKVmerge. SUID pliku A wpisujemy w pole "Previous segment UID", natomiast SUID pliku C, części, która ma być wyświetlana po pliku B, wpisujemy w pole "Next segment UID" i muksujemy. Plik uruchamiamy nowo powstałym plikiem B. Tutaj może się wydawać, że uruchomienie pliku B uruchamia tylko plik A, bo może pokazywać tylko jego czas trwania, ale w rzeczywistości po obejrzeniu pliku A, automatycznie otworzy następne części, które mogą mieć już pokazany łączny czas trwania. Nie wiem, dlaczego tak jest, ja tego nie programowałem.
A co jeśli mamy więcej niż 3 pliki? Albo opening i ending muszą się zaczynać po kilku minutach trwania głównego pliku?
Z pomocą przychodzą nam uporządkowane rozdziały. Jak sama nazwa wskazuje, tworzy się je ze zwykłych rozdziałów. Uporządkowane rozdziały wymagają pliku z rozdziałami w formacie XML, można je utworzyć w notatniku, ale ja robię to w MKVmerge GUI, bo dużo szybciej tak jest i zapobiega to błędom składniowym.
Na początek dodajmy plik do MKVmerge GUI i przechodzimy do zakładki "Chapter editor". Z menu wybieramy "Chapter editor -> New chapters", pokaże nam się wpis w okienku poniżej "(new chapter file)". Klikamy na niego, a następnie na "Add chapter" po prawej. Znowu pojawi się nowa linijka nazwana "EditionEntry 1". Jeżeli klikniemy znowu "Add chapter" pojawi się wpis "EditionEntry 2" itd. Może to trochę zmienić wygląd rozdziałów w pliku XML, dlatego najpierw klikamy na linijkę "EditionEntry 1" i dopiero teraz dodajemy interesującą nas ilość rozdziałów. Mój przykład będzie bazował na 5 rozdziałach, intro, opening, część główna filmu, ending i zapowiedź.
Klikamy na pierwszy wpis i w polu poniżej, "Name", wpisujemy jego nazwę. Robimy tak ze wszystkimi wpisami, ja nazwę je w kolejności jakiej wyżej wymieniłem. Troszkę niżej jest pole wyboru języka, możecie je zmienić na polski, ale to nic nie daje w tym momencie, to tylko nazwa języku poszczególnego rozdziału. Powyżej pola z nazwą rozdziału znajduje się pole "UID", w którym dostaniecie losowy numer przy tworzeniu rozdziału, jest to zwyczajny numer na nic nie wpływający, polecam zmieniać te numery na kolejno zaczynające się od 1, przyda się to w późniejszej części aczkolwiek nie jest wymagane. Kilka rozdziałów nie może mieć tego samego numeru. Wyżej są dwa pola, to czas początkowy i końcowy rozdziałów. Prawie najważniejsze rzeczy do ustawienia. Zakładamy, że intro trwa 2 minuty, więc klikamy na pierwszy rozdział i w pierwsze pole wpisujemy 00:00:00.000, a w drugie 00:02:00.000 (miejsca reprezentują następujące czasy HH:MM:SS.nnn, gdzie H - godzina, M - minuta, S - sekunda, n - setna sekunda). Opening trwa półtorej minuty, więc klikamy na drugi rozdział i wpisujemy w pierwsze pole 00:00:00.000, a w drugie 00:01:30.000 (wpisujemy czas trwania openingu, ale nie dodając go do czasu trwania intro). Teraz główna część odcinka, klikamy na trzeci rozdział i wpisujemy w pierwsze pole (uwaga, tu małe zaskoczenie) 00:02:00.000, a w drugie 00:20:00.000. Musicie pamiętać, że rozdział, który będzie miał linkowany plik, musi mieć tylko i wyłącznie jego czas trwania, a następny po nim rozdział musi być kontynuowany od czasu końcowego rozdziału sprzed linkowanego pliku, wyjątek stanowi tylko moment, gdy następny rozdział też będzie linkowany, ale wtedy po drugim linkowanym rozdziale następny musi się zaczynam czasem końcowym sprzed tych dwóch rozdziałów. Klikamy na czwarty rozdział i zakładając, że ending trwa 1 minutę wpisujemy czas początkowy 00:00:00.000, a czas końcowy 00:01:00.000. Ostatni rozdział to zapowiedź, która nie jest w osobnym pliku i trwa 3 minuty, czyli wpisujemy jako czas początkowy 00:20:00.000, a czas końcowy 00:23:00.000. Jest też możliwość ukrywania rozdziałów bądź poszczególnych czasów, np. czas początkowy 00:21:00.000, a czas końcowy 00:23:00.000, w ten sposób nie zostanie pokazana minuta zapowiedzi. Można też przy wybranym rozdziale, zahaczamy opcję "hidden" na prawo od pola UID, powinno to ukryć tą część odcinka, czyli nie będziemy mogli go obejrzeć, ale nadal będzie on w pliku. Jeżeli rozdział nie ma zaznaczonego "enabled" obok opcji ukrycia, wtedy nie będzie można przewijać do danego rozdziału, ale ta część odcinka nadal będzie widoczna. Gdy w końcu ustawiliśmy rozdziały musimy je zapisać, "Chapter Editor -> Save/Save as".
Otwieramy zapisany plik XML z rozdziałami (najlepiej w Notepad++, wszystko będzie przejrzyście wyróżnione; unikajcie jak ognia używania do tego windowsowego notatnika). Nasz plik powinien wyglądać tak:
Do MKVmerge GUI wczytujemy plik z główną częścią odcinka, nie wrzucamy do programu żadnego linkowanego pliku. Przechodzimy do zakładki "Global" i w sekcji "Chapters" wczytujemy plik XML. W polu wyboru "Language" możemy wybrać język polski, ale to tylko ogólny język całego pliku z rozdziałami, ale w dalszym ciągu nie jest kodowanie pliku. Je ustawia się w polu obok. "Charset", tutaj wybieramy "ISO-8859-2" i to właśnie poprawnie wyświetli polskie znaki w odtwarzaczach pokazujących nazwy rozdziałów.
Gdy wszystko ustawiliśmy muksujemy plik, jeżeli wszystko zrobiliśmy jak należy odtwarzacz powinien wyświetlić plik o łącznej długości pliku głównego, openingu i ending, w moim przypadku będzie to 00:25:30.000. Uporządkowane rozdziały działają też identycznie, co zwykłe rozdziały, więc można od razu do nich przeskakiwać.
Kilka ważnych do zapamiętania rzeczy:
1. Pamiętaj, żeby odczytać poprawną linijkę z SUID.
2. Nigdy nie dodawaj uporządkowanych rozdziałów do pliku, który już ma rozdziały. Pamiętaj żeby odznaczyć stare rozdziały przy dodawaniu nowych.
3. Linkowanie plików jest niezależne od nazwy plików, można je dowolnie zmieniać, linkowanie odbywa się za pomocą SUID. Dopóki plik ma ten sam SUID i jest w tym samym folderze, co główny plik, będzie on zawsze zalinkowany.
4. Przy każdym muksowaniu pliku MKV w MKVmerge GUI generowany jest nowy SUID, dlatego niewolno przemuksowywać openingu i endingu za jego pomocą. Aby nie zmienić SUID należy przemuksować opening lub/i ending za pomocą linii poleceń (nie znam szczegółów, google waszym przyjacielem).
5. Kolejność rozdziałów ma znaczenie, więc uważajcie jak je ustawiacie.
6. Każdy rozdział zaczyna się od tagu "<ChapterAtom>" i kończy na "</ChapterAtom>", w moim przykładzie będzie po 5 takich tagów.
7. Przy uporządkowanych rozdziałach rozdzielczość i proporcje wyświetlania nie mają znaczenia, odtwarzacz sam powinien odpowiednio się dostosować, np. plik A może mieć proporcje 16:9, a plik B 4:3 i oba pliki powinny zostać poprawnie wyświetlone.
8. Jeżeli linkowany plik jest dłuższy niż podany czas w rozdziale lub podano czas np. 00:01:00.000-00:02:30.000, który odpowiada za kawałek openingu i odcinka, zostanie pominięta pierwsza minuta filmu i zostanie wyświetlony dokładnie ten przedział czasowy, reszta nie zostanie wyświetlona. W ten sposób w dalszym ciągu można zakodować opening i ending w pierwszym odcinku, a do reszty tylko linkować.
9. Uporządkowane rozdziały działają identycznie jak zwykłe. Nie trzeba ich tworzyć na kluczowych klatkach, mogą być w dowolnym miejscu.
10. Wszystkie pliki muszą mieć taką samą kolejność ścieżek.
Ostatnio edytowany przez kostek00 (2013-09-07 14:14:01)
Jestem słodki jak miód, człowiek - ciacho; genetyczny cud! xD
Offline
tl;dr
Pomijając fakt, że dało się to napisać zwięźlej i prościej. To zastanawiam się, czy ktoś w ogóle coś z tego zrozumie - ale niech się wypowie ktoś inny (bo ja za bardzo jestem w temacie ).
Druga kwestia, to podane czasy są trochę z dupy. Należałoby napisać czy mamy "ciąć" na klatkach kluczowych, czy to wszystko jedno...
4. Przy każdym muksowaniu pliku MKV w MKVmerge GUI generowany jest nowy SUID, dlatego niewolno przemuksowywać openingu i endingu za jego pomocą. Aby nie zmienić SUID należy przemuksować opening lub/i ending za pomocą linii poleceń (nie znam szczegółów, google waszym przyjacielem).
Eee... nie - przynajmniej nie teraz.
Pamiętam, jak sam doszedłem jak przez linie poleceń ustawić dowolne SUID dla pliku mkv - a wtedy na necie była jedynie informacja, że po prostu się nie da .
Offline
tl;dr
Pomijając fakt, że dało się to napisać zwięźlej i prościej. To zastanawiam się, czy ktoś w ogóle coś z tego zrozumie - ale niech się wypowie ktoś inny (bo ja za bardzo jestem w temacie ).
Dziwne, żebyś cokolwiek zrozumiał jak nie przeczytałeś.
Druga kwestia, to podane czasy są trochę z dupy. Należałoby napisać czy mamy "ciąć" na klatkach kluczowych, czy to wszystko jedno...
Przepraszam bardzo, ale co ty chcesz tu ciąć? Przecież to nie poradnik o dzieleniu plików.
Ostatnio edytowany przez kostek00 (2012-11-21 00:21:00)
Jestem słodki jak miód, człowiek - ciacho; genetyczny cud! xD
Offline
Akurat w tym wypadku nie musiałbym czytać całości, wystarczyłby jedynie skimming.
Ale jednak przeczytałem całość - piszę tak dla jasności, jakby ktoś nie zajarzył istoty pogrubień.
FAiM napisał:Druga kwestia, to podane czasy są trochę z dupy. Należałoby napisać czy mamy "ciąć" na klatkach kluczowych, czy to wszystko jedno...
Przepraszam bardzo, ale co ty chcesz tu ciąć? Przecież to nie poradnik o dzieleniu plików.
Nie bez powodu słowo "ciąć" znalazło się w cudzysłowie. Przemyśl to. Jeśli rozumiesz o co chodzi w ordered chapters, to nie powinieneś mieć problemu ze zrozumieniem tego.
Offline
Wielkie dzięki, że chciało cię za to zabrać
GG: 1677958
Offline
kostek00 napisał:FAiM napisał:Druga kwestia, to podane czasy są trochę z dupy. Należałoby napisać czy mamy "ciąć" na klatkach kluczowych, czy to wszystko jedno...
Przepraszam bardzo, ale co ty chcesz tu ciąć? Przecież to nie poradnik o dzieleniu plików.
Nie bez powodu słowo "ciąć" znalazło się w cudzysłowie. Przemyśl to. Jeśli rozumiesz o co chodzi w ordered chapters, to nie powinieneś mieć problemu ze zrozumieniem tego.
Czy chodzi ci, żebym napisał czy uporządkowane rozdziały muszą być ustawione na kluczowych klatkach, czy mogą być swobodnie ustawiane?
Edit:
Zaktualizowałem poradnik do używania MediaInfo w razie problemów z MKVinfo GUI.
Ostatnio edytowany przez kostek00 (2012-11-24 15:19:28)
Jestem słodki jak miód, człowiek - ciacho; genetyczny cud! xD
Offline
Łączenie segmentów opisane jasno i zrozumiale, przetestowałem i nie było specjalnych problemów. Trzeba tylko pamiętać, żeby w muksowanym pliku nie było rozdziałów, bo wtedy to nie działa jak trzeba.
Do uporządkowanych rozdziałów jakoś nie mogę się jeszcze zabrać
Ostatnio edytowany przez ill (2012-11-27 10:05:00)
GG: 1677958
Offline
Mam taki problem, ponieważ próbuję zrobić uporządkowane rozdziały. Wszystko działa z wyjątkiem endingu - nie ma ani napisów, ani dźwięku. Opening normalnie odtwarza. Zamieniam miejscami segmenty i nadal to samo. Używałem dwóch wersji mkvmerge - 4.0.0 i 6.3.0.
Ostatnio edytowany przez marek2fgc (2013-09-07 10:50:16)
Offline
Ciężko wróżyć bez fusów.
Offline
Tak wygląda plik.
Spróbowałem na VLC i tam działa. Na razie jeszcze popytam u innych.
Ostatnio edytowany przez marek2fgc (2013-09-07 11:17:43)
Offline
Zgadza się liczba ścieżek, ich kolejność, format i parametry kodowania?
Wrzuciłbyś chociaż logi tych plików z MediaInfo...
Offline
Plik główny:
Video
ID : 1
Format : AVC
Format/Info : Advanced Video Codec
Format profile : High 10@L5.0
Format settings, CABAC : Yes
Format settings, ReFrames : 16 frames
Codec ID : V_MPEG4/ISO/AVC
Duration : 22mn 4s
Width : 1 280 pixels
Height : 720 pixels
Display aspect ratio : 16:9
Frame rate mode : Constant
Frame rate : 23.976 fps
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 10 bits
Scan type : Progressive
Writing library : x264 core 133 r2334+704+50 a7549b7 tMod [10-bit@4:2:0 X86]
Encoding settings : cabac=1 / ref=16 / deblock=1:-2:-2 / analyse=0x3:0x133 / me=umh / subme=11 / psy=1 / fade_compensate=1.20 / psy_rd=0.70:0.10 / mixed_ref=1 / me_range=32 / chroma_me=1 / trellis=2 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=-3 / threads=6 / lookahead_threads=1 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / fgo=0 / bframes=10 / b_pyramid=2 / b_adapt=2 / b_bias=0 / direct=3 / weightb=1 / open_gop=0 / weightp=2 / keyint=250 / keyint_min=23 / scenecut=40 / intra_refresh=0 / rc_lookahead=80 / rc=crf / mbtree=1 / crf=15.0000 / qcomp=0.60 / qpmin=0 / qpmax=81 / qpstep=4 / ip_ratio=1.40 / aq=3:0.70 / aq-sensitivity=10.00 / aq-factor=1.00:1.00:1.00 / aq2=0 / aq3=0
Default : No
Forced : No
Audio
ID : 2
Format : AAC
Format/Info : Advanced Audio Codec
Format profile : LC
Codec ID : A_AAC
Duration : 22mn 5s
Channel(s) : 2 channels
Channel positions : Front: L R
Sampling rate : 48.0 KHz
Compression mode : Lossy
Default : Yes
Forced : No
Text
ID : 3
Format : ASS
Codec ID : S_TEXT/ASS
Codec ID/Info : Advanced Sub Station Alpha
Compression mode : Lossless
Language : Polish
Default : Yes
Forced : No
Menu
00:00:00.000 : :Wstęp / :OP / :ED
00:01:53.071 : :Część I
00:10:21.037 : :Część II
00:20:35.067 : :Zapowiedź
Plik ED:
Video
ID : 1
Format : AVC
Format/Info : Advanced Video Codec
Format profile : High 10@L5.0
Format settings, CABAC : Yes
Format settings, ReFrames : 16 frames
Codec ID : V_MPEG4/ISO/AVC
Duration : 1mn 30s
Width : 1 280 pixels
Height : 720 pixels
Display aspect ratio : 16:9
Frame rate mode : Constant
Frame rate : 23.976 fps
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 10 bits
Scan type : Progressive
Writing library : x264 core 133 r2334+704+50 a7549b7 tMod [10-bit@4:2:0 X86]
Encoding settings : cabac=1 / ref=16 / deblock=1:-2:-2 / analyse=0x3:0x133 / me=umh / subme=11 / psy=1 / fade_compensate=1.20 / psy_rd=0.70:0.10 / mixed_ref=1 / me_range=32 / chroma_me=1 / trellis=2 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=-3 / threads=6 / lookahead_threads=1 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / fgo=0 / bframes=10 / b_pyramid=2 / b_adapt=2 / b_bias=0 / direct=3 / weightb=1 / open_gop=0 / weightp=2 / keyint=250 / keyint_min=23 / scenecut=40 / intra_refresh=0 / rc_lookahead=80 / rc=crf / mbtree=1 / crf=15.0000 / qcomp=0.60 / qpmin=0 / qpmax=81 / qpstep=4 / ip_ratio=1.40 / aq=3:0.70 / aq-sensitivity=10.00 / aq-factor=1.00:1.00:1.00 / aq2=0 / aq3=0
Default : No
Forced : No
Audio
ID : 3
Format : AAC
Format/Info : Advanced Audio Codec
Format profile : LC
Codec ID : A_AAC
Duration : 1mn 30s
Channel(s) : 2 channels
Channel positions : Front: L R
Sampling rate : 48.0 KHz
Compression mode : Lossy
Default : Yes
Forced : No
Text
ID : 2
Format : ASS
Codec ID : S_TEXT/ASS
Codec ID/Info : Advanced Sub Station Alpha
Compression mode : Lossless
Language : Polish
Default : Yes
Forced : No
Nie wiem, czy czasami problem nie leży po stronie mojej konfiguracji MPC.
Ostatnio edytowany przez marek2fgc (2013-09-07 12:35:21)
Offline
Zgadza się liczba ścieżek, ich kolejność, format i parametry kodowania?
Imo w tym problem, w ED masz najpierw napisy a później audio...
Offline
Heh. Dzięki wielkie, wszystko działa.
Offline
Zdaje się, że nie wspomniałem o kolejności ścieżek. Dopisane.
Jestem słodki jak miód, człowiek - ciacho; genetyczny cud! xD
Offline
Znalazłem sposób na sztywne wstawienie SUID w mkvmerge GUI. Muxing -> Add command line options.
W miejscu pod "Command line options" wpisać:
--segment-uid ***
W miejsce gwiazdek wpisać kod (ma mieć 32 znaki, czyli w mediainfo kopiujemy wszystko, co jest w nawiasie np. 0xAC3D30A1029525C485DF21799D79001E).
Ostatnio edytowany przez marek2fgc (2013-09-07 16:17:13)
Offline
Ten sposób istnieje już o prawie 4 lat . A jeszcze wcześniej dodali header editor, gdzie możesz zmienić SUID istniejącego już pliku mkv .
A w zasadzie, to od samego początku można było ustawić SUID poprzez --segmentinfo . Ale chyba nikt nigdzie tego sposobu nie opisał, a przynajmniej ja nigdzie nie widziałem - bo jak to odkryłem, to już nie szukałem . W sumie się nie dziwię, bo możliwość dodania pliku z segment info w GUI dodali jeszcze później niż opcje '--segment-uid' .
Offline