Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Nagrałem sobie film za pomocą vlc - 8fps, profil video H.264 + ACC (MP4), bitrate 800kbps.
Chciałem go trochę przerobić. Przeróbka polegała na wycięciu paruset klatek ze środka filmu. Efekt jaki otrzymałem można zobaczyć tutaj - http://imageshack.us/clip/my-videos/27/1v6.mp4/
Otworzyłem nagrany film.mp4 w avidemuxie, dostałem poniższy komunikat:
Wykryto H.264 Jeśli plik wykorzystuje klatki typu B jako odniesienia może to prowadzić do awarii lub drgania. Avidemux może użyć innego trybu, który jest bezpieczny, ale MOŻESZ STRACIĆ DOKŁADNOŚĆ KLATEK. Czy chcesz użyć tego trybu?
Gdy użyję trybu bezpiecznego, mam zielony obraz. Przynajmniej do puszczenia filmu. Dlatego też za drugim razem kliknąłem "anuluj" i dostałem okienko o następującej treści:
Indeks jest nieaktualny Powinieneś użyć Narzędzia->Ponownie utwórz klatki. Zrobić to teraz?
Gdy wcisnę "tak" lub "nie" zostaje załadowany film bez tej zielonej, pierwszej klatki.
W każdej z trzech opcji, dostaję film, który można zobaczyć powyżej. Dodam, że powyższy materiał jest krótki ale przy dłuższych wersjach po paru czy parunastu sekundach obraz wraca do normy.
Obraz oraz dźwięk jest ustawiony na "kopiuj", format na .avi. W przypadku wybrania formatu .mp4, dostaję taki komunikat:
Błąd klatki typu I Rozpoczynająca klatka nie jest klatką typu I. Proszę przesunąć znacznik A.
Z tego co patrzyłem, przy filmach .avi nie ma tego problemu.
Czy efekt zaprezentowany na powyższym filmie, ma jakąś fachową nazwę?
Czy da się wyciąć kawałek z filmu .mp4 za pomocą axidemuxa?
Czy istnieje inny program, za pomocą którego mógłbym wyciąć daną scenę z filmu definiując klatki lub czas w s lub ms, przy niedokonywaniu rekompresji filmu?
Czy tego typu błędy w avidemuxie w stosunku do filmów mp4 są normalne, czy może vlc coś źle koduje?
Offline
@morfik:
Avidemux niestety ma jakieś dziwaczne problemy z h264, czasami tryb bezpieczny działa ok, czasami coś się rozjeżdża, a czemu to wiedzą tylko twórcy programu.
Natomiast - o ile dobrze zrozumiałem - Ty chcesz wyciąć ze środka filmu kilka klatek, bez rekompresji tego filmu - i tutaj już Avidemux nie ma nic do tego.
Bez rekompresji się raczej nie obejdzie, problem jest taki że w nowych kodekach w celu zaoszczędzenia bitrate'u stosuje się odniesienia z klatki nastepnej do poprzedniej, czyli mamy klatki ABCD to klatka A nie odnosi się do niczego i jest tak zwaną klatką kluczową (klatką typu I), B odnosi się do A (klatka typu P), zaś C może się odnieść zarówno do B jak i do D (klatka typu B) jak wywalisz klatkę B to klatka C nie ma się jak poprawnie wy-renderować bo nie ma się do czego odnieść - stąd się bierze efekt jak na filmiku, który zniknie jak tylko zostanie stworzona nowa klatka kluczowa (a jest ona tworzona albo co ileś klatek, albo po wykryciu nowej sceny).
Wydaje mi się że rozwiązaniem było by tworzenie tylko klatek typu I przechwytywania filmu, a potem dopiero rekompresja i wycinanie. Da się to chyba ustawić w zaawansowanych opcjach kodowania.
Generalnie radzę zapoznać się z tym:
http://en.wikipedia.org/wiki/B-frame#Bi-directional_predicted_frames_.28or_slices.2C.29_a.k.a._B_pictures
I cytat:
The three major picture types used in the different video algorithms are I, P and B. They are different in the following characteristics:
-I‑frames are the least compressible [b]but don't require other video frames to decode.[/b]
-P‑frames can use data from previous frames to decompress and are more compressible than I‑frames.
-B‑frames can use both previous and forward frames for data reference to get the highest amount of data compression.[/quote]
W ogóle H264/MPEG4/2/1 niezbyt się nadają do przechwytywania obrazu który miałby potem podlegać dalszej obróbce, do tego najlepiej używać jakichś kodeków w stylu MJPEG.
Pozdro.
Offline
Przypatrzyłem się bardziej i faktycznie avidemux pokazuje czy klatka jest I,P,B. I na całym nagranym filmie jest Tylko jedna klatka "I" i występuje jako 3 na filmie. Ale generalnie gdyby klatek "I" było więcej, to można by w miejscu wystąpienia klatki "I" zacząć ciąć film i efektu zaprezentowanego na powyższym filmie by już nie było? I czy istnieje możliwość stworzenia takiej klatki? No bo skoro mamy ciąg klatek opartych o klatkę "I", to chyba można by stworzyć taką klatkę, w miejscu gdzie chcemy zacząć ciąć film, by klatki w nowym filmie odnosiły się do tego momentu? I czy ewentualnie można za pomocą avidemuxa lub innego programu zrobić listę klatek "I", tak by można było wywnioskować w którym momencie można by ciąć film?
Offline
@morfik:
Ale generalnie gdyby klatek "I" było więcej, to można by w miejscu wystąpienia klatki "I" zacząć ciąć film i efektu zaprezentowanego na powyższym filmie by już nie było?[/quote]
Tak.I czy istnieje możliwość stworzenia takiej klatki? No bo skoro mamy ciąg klatek opartych o klatkę "I", to chyba można by stworzyć taką klatkę, w miejscu gdzie chcemy zacząć ciąć film, by klatki w nowym filmie odnosiły się do tego momentu?[/quote]
Tak... poprzez re kompresję obrazu ;] . Być może da się jakoś inaczej - nie siedzę na tyle "głęboko" w tym temacie, ale troszkę swego czasu czytałem i nigdy o takiej opcji nie słyszałem.
Najprościej było by zrobić tak że wycinasz co tam chcesz, i rekompresujesz obszar od momentu końca cięcia (tam gdzie są klatki P lub B) do najbliższej klatki kluczowej a następnie scalasz wszystkie kawałki, najczęściej ten obszar do klatki kluczowej to jest kilka sekund filmu więc da się znieść.I czy ewentualnie można za pomocą avidemuxa lub innego programu zrobić listę klatek "I", tak by można było wywnioskować w którym momencie można by ciąć film?[/quote]
W Avidemux'ie klikasz po prostu na pasku na "Next keyframe"/"Previous keyframe" i przenosi Cie do najbliższej ;] .Ostatnio edytowany przez Huk (2011-10-16 23:25:22)
Offline
Najlepiej to było by jakbyś dodał sobie własny profil i wybrał tam:
Enkapsulacja MJPEG Video:MJPEG Audio:MP3
Potem możesz szaleć - jedyny minus to fakt że trzeba nagrywać w dość kosmicznym bitrate (8000 albo i więcej), ale potem można to spokojnie zrekompresować bez obaw.
Pozdro.
EDIT:
A jeżeli chciałbyś nagrywać coś czego nie masz potem zamiaru rekompresować, to - o ile sprzęt uciągnie - H264 "powinno być najlepszym wyborem... inna sprawa to jakość tych kodeków w VLC...
Ostatnio edytowany przez Huk (2011-10-17 00:02:36)
Offline
Podłączę się do tematu bo mam w avidemuxie problem z tymi I frame i nie mogę zapisać pliku bo wyskakuje mi komunikat, że początkowa klatka nie jest klatką typu I, no to nieważne czy ręcznie, czy szukam automatycznie następnej kluczowej klatki, nic z tego, nie da się zapisać pliku. Co z tym fantem zrobić? jakim innym narzędziem pod linuksem wyciąć kawałek z filmu bez zmiany kodowanie itp?
Offline
Jaki format tego pliku ?
Offline
Time (s) | Query |
---|---|
0.00011 | SET CHARSET latin2 |
0.00006 | SET NAMES latin2 |
0.00097 | SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.139.103.241' WHERE u.id=1 |
0.00076 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.139.103.241', 1734047772) |
0.00057 | SELECT * FROM punbb_online WHERE logged<1734047472 |
0.00053 | SELECT topic_id FROM punbb_posts WHERE id=183341 |
0.00216 | SELECT id FROM punbb_posts WHERE topic_id=19885 ORDER BY posted |
0.00073 | SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=19885 AND t.moved_to IS NULL |
0.00011 | SELECT search_for, replace_with FROM punbb_censoring |
0.00078 | SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=19885 ORDER BY p.id LIMIT 0,25 |
0.00126 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=19885 |
Total query time: 0.00804 s |