2013-03-27 5 views
15

Widzę mnóstwo pytań o przeniesieniu atomu moov z końca kontenera wideo MP4 na początek, aby film był "zoptymalizowany pod kątem sieci" lub łatwiejszy do przesłania. Wygląda na to, że większość narzędzi wymaga jawnej opcji, aby to zrobić podczas pierwszego kodowania wideo, jeśli jest ono w ogóle dostępne.Czy wprowadzenie początku atomu MOOV na początek pliku MP4 ma swoją wadę?

Jeśli umieszczenie atomu na początku sprawia, że ​​przesyłanie strumieniowe działa lepiej, i jest to kosztowne zrobić to po fakcie, dlaczego miałbym kiedykolwiek chcieć kodować wideo z atomem na końcu? Jakie są korzyści?

Odpowiedz

13

Kodowanie MOOV na końcu pliku jest zwykle domyślną operacją dla koderów wideo, ponieważ mają one tendencję do działania poprzez zapisywanie pliku wyjściowego w jednym przebiegu, a dokładna zawartość i rozmiar atomu MOOV mogą być znane tylko po całkowitym zapisaniu danych audio i wideo, ponieważ zawiera on bezwzględne rozmiary plików.

Głównym przykładem jest FFmpeg, wraz z wyjaśnieniem znalezionego w tej odpowiedzi: https://stackoverflow.com/a/8066089/393701

FFMpeg ma możliwość zarezerwowania miejsca dla tego atomu, ale nie ma gwarancji, że dane będą doskonale pasować.

Posiadanie atomu MOOV na końcu nie przynosi specjalnych korzyści, nie jest tak niewygodne w lokalnych sytuacjach odtwarzania, gdy wyszukiwanie na końcu pliku przed odtworzeniem nie jest tak kosztowne, jak przy stopniowym pobieraniu.

+2

Po prostu trudno sobie wyobrazić, że w ciągu 30 minut, czyli godziny lub dziesięciu, aby stworzyć zakodowany film, każdy zauważy dodatkową minutę lub dwie, aby zająć się atomem MOOV, a następnie skopiować resztę gotowych segmentów danych. Z pewnością koszt we/wy jest przyćmiony przez obliczenia wymagane do kodowania w pierwszej kolejności? – Coderer

+2

Przypuszczam, że zależy to od oprogramowania kodującego, ale ffmpeg jest dość ogólny, że "przepisanie pliku po fakcie" wymaga poważnego refaktoryzacji w bieżącym stanie rzeczy. Jest podobny problem z plikami FLV i metadanymi, więc istnieje oprogramowanie takie jak flvtool lub flvmeta, które są potrzebne do prawidłowego wstrzykiwania ich po kodowaniu. Trzeba też zdawać sobie sprawę, że kodery wideo nie zawsze zapisują dane do oglądanych strumieni (na przykład strumieni sieciowych), a powrót z nich nie jest możliwy. – SirDarius

+0

Wiem, że to jest offtopic, ale nadal będę pytać; Element wideo systemu Android może odtwarzać tylko pliki MP4, więc nawet jeśli element moov jest na końcu, nadal odtwarza wideo za pośrednictwem strumienia http bez żadnego problemu. jak to możliwe ?, w jaki sposób uchwyt Androida jest filmem bez atomu moov? –

4

Zawsze będziesz chciał umieścić informacje indeksu na początku pliku, nie ma ukrytych kosztów dla tego układu, oprócz jedynego: podczas przechwytywania/transkodowania możesz nie być w stanie określić z góry, ile miejsca chcesz Potrzebuję atomu MOOV na początku, a jego dane nie są jeszcze dobrze dostępne. Więc zwykle zapisujesz zawartość bezpośrednio do pliku i uzupełniają one zapis, dodając MOOV i aktualizując resztę pliku.

Powiązane problemy