Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

Pliki wideo skompresowane H.264/MPEG-4 AVC - cięcie bez ponownej rekompresji

Historia ta wydarzyła się wiele cykli temu, w czasach kiedy nastała nowa era, era cyfrowego filmu w wysokiej (jak na ówczesne czasy) rozdzielczości full HD - czyli 1920x1080 pikseli.
Nastał w tym okresie zmierzch telewizji analogowej i tak zwanego "przechwytywania" obrazu, za pomocą karty telewizyjnej / wideo. Aktualnie rozdzielczość Full HD jest dostępna w smartfonach z niższej półki i nikogo to już nie dziwi, zwłaszcza użytkowników telewizorów z matrycami 4k - które powoli ustępują nowszym konstrukcjom. Przenieśmy się zatem w czasie, kiedy to rozpoczynała się przygoda z cyfrowym materiałem wideo.

Pewnego dnia okazało się, że w naziemnej telewizji cyfrowej (wtedy nazywanej DVB-T, aktualnie już nie stosowanej przynajmniej od kilkunastu lat) - nadają ciekawy program (co zdarzało się dość rzadko). Postanowiłem nagrać go sobie przy użyciu cyfrowego tunera, podłączanego do gniazda USB. Testowałem wówczas ciekawy program do oglądania telewizji cyfrowej, mianowicie "SmartDVB"

Co prawda była to wczesna wersja aplikacji, ale bardzo mi się spodobała. Na początku miałem pewien problem z uruchomieniem, ale wystarczyło ręcznie zdefiniować częstotliwości w pliku xxx.ini i wszystko ruszyło.

H.264 - pierwsze starcie

Tak wiec miałem działający program do obsługi tunerka i mogłem rozpocząć nagrywanie. Po zarejestrowaniu materiału, postanowiłem powycinać niektóre fragmenty. Było to moje pierwsze podejście do operacji na plikach zakodowanych kodekiem h.264/AVC. Nauczony łatwym wycinaniem plików avi w aplikacji VirtualDub, przeciągnąłem materiał na ikonę aplikacji. Niestety nic z tego nie wyszło, ponieważ format nie został rozpoznany. Hmmm pomyślałem, no tak - przecież to nie avi, tylko TS (transport stream). Poszukałem więc trochę w sieci (w tamtych czasach istniała taka wyszukiwarka jak google) i znalazłem wtyczkę do VirtualDub-a, która umożliwiała załadowanie praktycznie każdego pliku wideo. Nazywała się: "DShowInputDriver.vdplugin". Teraz wszystko poszło gładko. Ale moja radość nie trwała długo, ponieważ działało to dość wolno i nie dało się kopiować strumienia danych (direct stream copy). Czyli aby po wycięciu niechcianych fragmentów, zapisać materiał należało wykonać rekompresję. Nie wchodziło to w grę z powodu strat na jakości oraz długiego czasu trwania takiej operacji (teraz w dobie układów APU 18 i 19 generacji, to się chce śmiać). Postanowiłem poszukać lepszego rozwiązania.

Cięcie plików HD bez rekompresji

Przewertowałem wiele zakamarków internetu i nic nie znalazłem. Naczytałem się różnych opinii, że ze względu na dużą złożoność takiego pliku, jest bardzo ciężko zrobić program, który byłby w stanie bez problemu wycinać fragmenty i łączyć bez rekompresji.
Nie dawałem za wygraną i w końcu dopiąłem swego. Znalazłem bardzo ciekawą aplikację o nazwie: "TSSNIPER"

Potrafi ona wyciąć niechciane fragmenty i przekopiować resztę materiału bez ponownej kompresji. Aby dokonać tego "cudu", należy przygotować odpowiednio program:
1. Należy mieć zainstalowany Haali Media Splitter (np. wraz z pakietem K-Lite Codec Pack)
2. Należy mieć zainstalowany kodek DiviX (wersja dekodująca h.264)
3. Wchodzimy do ustawień TSSniper-a (menu->Extras->Settings)
4. Przechodzimy na zakładkę General, a następnie na DirectShow i ustawiamy tak jak poniżej oraz zatwierdzamy OK:

5. Tworzymy nowy projekt File->New project
6. Dodajemy materiał wideo w formacie TS (właściwie w kontenerze) przez File->Add new file...

Jeżeli wszystko zrobiliśmy dobrze, to po lewej stronie pokaże nam się informacja o załadowanym materiale. Następnie Ustawiamy kursor w miejscu, gdzie chcemy rozpocząć wycinanie i klikamy na ] , a tam gdzie kończyć się ma [ . Następnie wciskamy klawisz F9 i tym sposobem niechciane fragmenty zostają wpisane na listę do wycięcia "Cuts":

Aby zwiększyć precyzję ustawienia kursora, można posłużyć się strzałkami umieszczonymi na początku oraz na końcu linii czasu. Gdy już mamy zaznaczone fragmenty do wycięcia, klikamy na "Export transport stream (TS)". Operacja wycinania trwa od kilkunastu do kilkudziesięciu SEKUND! (w zależności od objętości pliku i szybkości dysku).

Wybranie takiego splitera i dekodera daje najlepszą precyzję przy ustawianiu kursora. Metodą prób i błędów, udało mi się ustalić te, które dają dokładność do kilku klatek obrazu.

Powyższym programem, można wycinać wszystkie pliki TS czy MTS, również z kamer cyfrowych AVCHD.

Uwagi oraz mała rada

Jak zwykle, nie ma róży bez kolców. Tym razem chodzi o dźwięk. TSSniper ma problem z odtwarzaniem niektórych ścieżek dźwiękowych, szczególnie E-AC3 (taki jest nadawany w polskim DVB-T) i źle rozpoznaje bitrate. Oczywiście nie ma to wpływu na obrabiany materiał, ale może troszkę przeszkadzać podczas zabawy w wycinanie. Możemy przykładowo zechcieć odtworzyć fragment. W takim układzie zalecam podczas nagrywania strumienia - zaznaczyć nagrywanie wszystkich strumieni audio. Gdy załadujemy taki plik do naszej aplikacji, możemy w razie problemów przełączyć się na inny strumień audio i normalnie pracować. Polska cyfrówka nadaje równocześnie audio mpeg2, więc nie będzie problemu.
Kolejna rada jest związana z używanymi dekoderami audio i wideo. Okazuje się bowiem, że "ffdshow" mam problemy np. E-AC3. Dlatego jeżeli coś nam nie działa. to zalecam używanie dekoderów LAV (jest w pakiecie K-Lite Codec Pack)

Baza Księżycowa M21, rok 2052. :-) 

oprogramowanie porady

Komentarze

0 nowych
tfl   8 #1 27.01.2013 19:31

wtedy

bravo   16 #2 27.01.2013 19:59

@tfl - racja

Frankfurterium   9 #3 27.01.2013 20:35

Zamiast bawić się innymi programami, wystarczy zainstalować AviSyntha, utworzyć prościutki skrypcik o treści:
DirectShowSource("C:\ścieżka\do\pliku",fps=23.976, audio=true)
i wczytać go do VirtualDuba (albo jeszcze lepiej do VirtualDubMOD - nowocześniejszego forka).


No i tekst w międzyczasie stracił na aktualności, bo bardzo niedawno zatwierdzono standard h265 ;-)

bravo   16 #4 27.01.2013 20:55

@Frankfurterium - Zdradź proszę - jak tym sposobem wyciąć coś bez rekompresji, jestem bardzo ciekawy. Niestety AviSynth daje tylko nieskompresowane dane do VirtualDub-a, które trzeba poddac kompresji. Wtyczka, którą przytoczyłem robi dokładnie to samo co Twój skrypt.

A co do h265, to jaki sprzęt to wykorzystuje? Nie mogę jakoś znaleźć...

Pozdrawiam!

Frankfurterium   9 #5 27.01.2013 22:23

Takie już mam skrzywienie, że w kodowaniu obrazu zawsze wolałem działać niskopoziomowo (najlepiej bezpośrednio na enkoderze). Faktycznie - takie wykorzystanie skryptu AVS jest dosyć... przyziemne. Ale jak się człowiek nauczy AviSyntha, stają przed nim możliwości, przy których VirtualDub jest malutki. Byłem pewien, że na strumieniu AVS dało się robić hacka z cięciem bez rekompresji, ale teraz (po przejściu na pingwinią stronę mocy) nawet nie mam jak tego sprawdzić.


Dekodowanie h265 (HEVC) chyba nie jest jeszcze wspierane przez żadne GPU ani inne urządzenia, więc wszystko spada na procesor. Nikt nie chciał się w to pchać, dopóki nie zostaną zamknięte prace nad standardem. Ale takie wparcie na pewno powstanie. h265 został stworzony specjalnie do kodowania sygnału telewizji cyfrowej. Za rok-dwa będą go dekodowały wszystkie nowe telewizory. Kolejna sprawa - dopiero zamknięto prace nad standardem. Istniejące implementacje algorytmów są toporne i niedopracowane. Dla porównania - rozwój i usprawnienia enkodera x264 trwają do dnia dzisiejszego. Minie sporo czasu, zanim będzie się dało "w godziwych warunkach" zakodować coś w h265.

AndrzejG   8 #6 29.01.2013 10:49

Widzę, że jesteście koledzy zorientowani w enkodowaniu, więc może będziecie w stanie mi pomóc (jeżeli zechcecie, oczywiście). Mam mały problem z przekodowaniem pliku wideo w formacie .mts, lub jak kto woli .m2ts. Sprawa wygląda tak, że przekonwertowałem taki plik:

ffmpeg -i 00143.MTS
ffmpeg version 0.8.4-6:0.8.4-0ubuntu0.12.10.1, Copyright (c) 2000-2012 the Libav developers
built on Nov 6 2012 16:51:11 with gcc 4.7.2
*** THIS PROGRAM IS DEPRECATED ***
This program is only provided for compatibility and will be removed in a future release. Please use avconv instead.

Seems stream 0 codec frame rate differs from container frame rate: 50.00 (50/1) -> 50.00 (50/1)
Input #0, mpegts, from '00143.MTS':
Duration: 00:06:17.28, start: 0.483833, bitrate: 23355 kb/s
Program 1
Stream #0.0[0x1011]: Video: h264 (High), yuv420p, 1920x1080 [PAR 1:1 DAR 16:9], 50 fps, 50 tbr, 90k tbn, 50 tbc
Stream #0.1[0x1100]: Audio: ac3, 48000 Hz, stereo, s16, 256 kb/s
At least one output file must be specified


do .webm za pomocą programu ffmpeg:

ffmpeg -i 00143.MTS -vcodec libvpx -acodec libvorbis /home/enid/Wideo/Fajerwerki.webm

Jeżeli idzie o rozmiar pliku wynikowego, to jest bajka, bo oryginalny plik zajmował 1.1 GiB a ten na wyjściu 22 MiB i nawet bez znaczącej utraty jakości. Problemem są artefakty pojawiające się przy większych rozbłyskach (to nagranie pokazu fajerwerków). Takich jak ten:

http://img443.imageshack.us/img443/5926/screenshotfrom201301291.png

Pytanie brzmi: Czy ktoś wie jak się pozbyć tych artefaktów? Strasznie brzydko to wygląda "w ruchu". A może po prostu wybrać inny kodek, albo użyć zasugerowanego avconv? Plik jest przeznaczony do uploadu na youtube.

PS Przepraszam, że nie pytam na forum, ale widzę, że są tutaj obecni ludzie zainteresowani taką tematyką :>

Autor edytował komentarz.
  #7 29.01.2013 12:22

możesz spróbować dodać do polecenia '-vf yadif'

AndrzejG   8 #8 29.01.2013 19:12

@Anonim
Dzięki, wiecznie mam problemy z tym przeplotem :)

ilammd   4 #9 21.04.2013 22:39

Dzięki za ten tekst, bo bardzo mi pomógł w obróbce (wycinaniu reklam) z nagrań z DVB-T. Jednakże mam jedno pytanie. Jaką drogę/metodę kompresji (bądź program) polecasz, aby pliki były skonwertowane możliwie bezstratnie, jednak ich rozmiar był nieco mniejszy (obecnie nagranie 90-110 min to ok 4-5 GB).

  #10 04.10.2013 19:31

Dzięki za podpowiedz bardzo się przydała, a głównie to dzięki „Haali Media Splitter". Niektóre materiały video nagrane z TV w HD w pliku TS (duże pliki ok. 10 GB), nie działały poprawnie w programie „TSSNIPER" tzn nie można ich było przycinać ani wycinać nic się z nimi nie dało zrobić program nie reagował nawet na przesywanie linii czasu więc je usuwałem a video nagrywane musiało być ponownie i wtedy program do przycinania działał poprawnie. Ale dzęiki „Haali Media Splitter" i ustawieniom konfiguracji programu problem zniknął czyta poprawnie pliki które przedem program ignorował.

  #11 09.12.2013 19:27

Witam,
zaczynam dopiero próby z przycinaniem filmów. Trafiłam na ten wpis i postanowiłam spróbować.
Ściągnęłam aplikację "TSSNIPER", zainstalowałam Haali Media Splitter, K-Lite Codec Pack, kodek DiviX (wersja dekodująca h.264), dokonałąm ustawień zgodnie z opisem i screenami. Film ładuje mi się do programu, ale niestety wygląda jak w załaczonym linku, czyli jest bardzo zwężony.
https://picasaweb.google.com/Ludek.Milo/Film#5955458061700068290

Plik został nagrany kamerą i jest w formacie 8.MTS.
Bardzo proszę o pomoc.

bravo   16 #12 12.12.2013 23:01

@Ludek72 - jak udostępnisz próbkę Twojego nagrania (w którym masz ten problem), to sprawdzę u siebie jak to wygląda i ewentualnie poszukam rozwiązania.
Pozdrawiam!

Boguszek   5 #13 01.09.2014 14:51

fajny program wcześniej używałem VideoRedo jest jednak mały kłopot po wycięciu reklam dźwięk w pliku końcowym mam 64kb/s mono zamiast tak jak w oryginale.

bravo   16 #14 01.09.2014 17:40

@Boguss: Sprawdź czy masz zaznaczony ptaszek (kolumna export) przy odpowiednim strumieniu audio. Może masz więcej ścieżek i kopiuje Ci się ta słabsza.

Boguszek   5 #15 02.09.2014 15:28

@bravo: O to chodzi że mam tam jedną tylko ścieżkę audio plik To TS nagrywany w DVBViewer kanał nie HD a SD Polo tv. i pokazuje jakość 256 kb/s po exportowaniu tylko 64 mono :(

bravo   16 #16 02.09.2014 16:08

@Boguss: Może DVBViewer tak zapisuje... TSSNIPER nie kompresuje strumieni, tylko je kopiuje. Nigdy nie miałem takiego problemu. Sprawdź parametry strumienia zaraz po jego zapisaniu przez DVBViewer. Najlepiej w aplikacji MediaInfo (http://mediaarea.net/pl/MediaInfo/Download/Windows). ewentualnie udostępnij próbkę nagrania (prosto z tunera), to zobaczę jak to u mnie wygląda.

Boguszek   5 #17 02.09.2014 18:30

@bravo: Po Nagraniu z DVBViewer jakość mam 256 kb/s w pliku TS. proszę tu próbka sprawdź :) i napisz proszę jak inne ustawić w zakładce Direcshow pod HD i pod SD. http://www43.zippyshare.com/v/54004953/file.html

edit:sprawdziłem teraz na mniejszym pliku i jest ok :) wcześniej próbowałem na pliku 3 GB ale problem jeszcze jeden pozostał po zapisaniu wygląda obraz tak nie da się oglądać :( http://e-fotek.pl/images/51620326269812526772.jpg

Jednak jeśli skonwertuje do pliku avi lub h264 problem z obrazem znika :) i jest ok

wersja programu 080.0.600

na pliku ponad 3GB nadal ten sam problem po exporcie zmienia na 64 kb/s mono

---------------------------------------------------------------------
Sprawdziłem mediainfo i pokazuje zupełnie co innego niż w windows :) komu wierzyć chyba dla mediainfo:

http://e-fotek.pl/images/11979672602810320066.jpg

Autor edytował komentarz.
bravo   16 #18 02.09.2014 21:04

@Boguss: MediaInfo (używam tego z pakietu K-Lite) daje wiarygodne informacje. U mnie wszystko jest dobrze z dźwiękiem (użyłem splitter "Nero splitter") w TSSniper.
Jeżeli chodzi o niepoprawne odtwarzanie po wycince, to u mnie też to zauważyłem, ale tylko w WMP. Aby to naprawić, to wystarczy zremuxować programem tsMuxeR (http://www.videohelp.com/tools/tsMuxeR) i wszystko chodzi bez problemu.

  #19 06.09.2014 12:05

ts-y i mpegi tnie się smart cutterem i łączy w locie, do oglądania i nagrywania dvbviewer + kodeki arcsoft i ac3....

  #20 06.09.2014 12:08

k-lite i inne śmieci to morderstwo dla multimediow: zwłaszcza gdy się używa dvb-s: do odtwarzania wideo media player classic home cinema, foobar do audio i ZERO kodeków w systemie poza ac3filter i arcsoft!

  #21 22.01.2016 17:08

Witam,
CZy autor jeszcze obserwuje temat i jest wstanie mi pomóc??
z góry dzięki za odpowiedź.

bravo   16 #22 25.01.2016 16:43

@Arek1306 (niezalogowany): Z czym masz problem?

blackz90   1 #23 08.02.2016 10:19

@bravo: Witam(wcześniej pisałem jako Aras1306) dzięki za odpowiedź i przepraszam za tak długi czas z mojej strony. A więc tak Zrobiłem wszystko zgodnie z poradnikiem na laptopie ładnie to wszytko działa tyle, że wolno przy dłuższych filmach , których mam sporo i z racji tego złożyłem komputer stacjonarny dużo szybszy. Zainstalowałem na nim wszystko tak jak na laptopie i przy próbie załadowania pliku wyskakuje mi błąd " directshow problem - failure while creating audio render". Na jednym i na drugim próbowałem obrobić różne pliki na laptopie się udaje, zawsze załaduje cały materiał, a na komputerze ani razu. Próbowałem już kilka razy odinstalować i zainstalować sterowniki w różnych kolejnościach i nic. Na obydwu sprzętach mam zainstalowany win 10. NIe wiem wczym może tkwić problem, bardzo proszę o pomoc. Pozdrawiam

edit: dodam jeszcze że przy otwieraniu plików na komputerze w media player wyskakuje takie okienko http://ifotos.pl/zobacz/Beztytulu_sexaxap.png może to coś ma wspólnego.

Autor edytował komentarz.
bravo   16 #24 08.02.2016 20:01

@blackz90: Spróbuj wybrać inny dekoder audio (na karcie DirectShow) np. LAV Audio decoder. Albo sprawdź ustawienia ffdshow audio decoder (32bit) i na liście kodeków, na końcu będzie Uncompressed i tam ustaw "all supported". Ewentualnie aktywuj kodek "LPCM".
Do problemów związanych z dekodowaniem dźwięku AC3, pomaga w większości przypadków zainstalowanie AC3Filter (http://www.dobreprogramy.pl/AC3Filter,Program,Windows,13191.html)

Daj znać jak Ci poszło :-)

blackz90   1 #25 09.02.2016 11:53

@bravo: niestety nic z powyższych nie pomogło, spróbowałem kilka kodeków, zmieniłem ustawienia w ffdshow i instalowałem ac3filter.
Ale za to wczoraj szukając programu do naprawy plików TS (szukałem ponieważ po zgraniu na zewnętrzny dysk i uporządkowaniu nagrań z dekodera technisat digicorder isio s i ponownym podłączeniu do niego nie ma możliwości przewijania) znalazłem program TSDoctor 2.0, który jest po prostu rewelacyjny.
Skanuje pliki i potrafi sam pozaznaczać reklamy w nagraniu i dzieli je na części, gdzie później można nanieść ręcznie poprawki (obrobiłem wczoraj kilka nagrań i jeszcze mi się to nie zdarzyło), sprawdza pliki również pod kątem błędów.
I co najważniejsze klei wszystko w całość bez rekompresji. Program prosty i intuicyjny oraz po polsku. 30 dni za darmo później płatny 29 euro (na pewno zakupię)
Co do ttSnipera jeżeli masz jeszcze pomysły będziemy próbować dalej, bo naprawdę jest to dziwne, że na jednym urządzeniu działa , a na drugim nie.

blackz90   1 #26 09.02.2016 12:30

@bravo: problem rozwiązany i banalnie prosty, mianowicie nie maiłem podpiętych słuchawek, wystarczyło wpiąć i tyle .... heh dziwne to że bez urządzenia do odtwarzania nie chciało chodzić.
Dzięki za pomoc. Może komuś się przyda na przyszłość.
pozdrawiam

Autor edytował komentarz.