Najpierw powinieneś zrozumieć różnicę między używaniem profili FFmpeg a opcjami bezpośredniego wiersza poleceń. -vpre
używa .ffpreset
pliku znajdującego się w /usr/share/ffmpeg/
lub gdziekolwiek zainstalowano ffmpeg. Jest to seria par opcja = wartość , w twoim przypadku musiałbyś to zdefiniować sam (przynajmniej nie znam baseline
presetu dostarczanego z ffmpeg).
Odradzam używanie presetów, chyba że sam je utworzyłeś i nie wiesz, do czego służą opcje wiersza poleceń. Używam ffmpeg od lat i nigdy nie używałem presetów - nigdy tak naprawdę nie musiałem.
Typowa linia poleceń do generowania wideo H.264 zgodnego z większością urządzeń to:
ffmpeg -i <input> \
-c:v libx264 -crf 23 -profile:v baseline -level 3.0 -pix_fmt yuv420p \
-c:a aac -ac 2 -b:a 128k \
-movflags faststart \
output.mp4
Niektóre uwagi:
H.264 / AAC to najlepsza kombinacja do szerokiego wsparcia w HTML5. Przeglądarki, które nie mają dekoderów H.264, będą jednak również wymagały wideo VP8 / Vorbis. Aby uzyskać przykłady wiersza polecenia, zobacz tę odpowiedź . Zobacz także stronę wsparcia przeglądarki Wikipedia dla innych kodeków.
H.264 działa również dobrze na różnych urządzeniach mobilnych.
-profile:v baseline
I -level 3.0
opcje są potrzebne tylko dla starych urządzeń mobilnych, które nie obsługują funkcji procesora intensywnie H.264. Zazwyczaj możesz je pominąć lub zamiast tego użyć -profile:v main
.
CRF określa jakość (18–28 to rozsądny zakres, niższy oznacza lepszą jakość). Oczywiście możesz również użyć stałej szybkości transmisji z -b:v 1000k
lub podobną. Wybierz szybkość transmisji, która odpowiada rozdzielczości filmu. Niektóre urządzenia o niskiej mocy mogą nie być w stanie obsłużyć niepotrzebnie dużych przepływności.
Ta -movflags faststart
opcja jest niezbędna do przesyłania strumieniowego, ponieważ przenosi metadane kontenera na początek pliku zamiast pozostawiać go na końcu. Pozwoli to na natychmiastowe rozpoczęcie odtwarzania zamiast czekać na całkowite załadowanie pliku.
Wszystko sprowadza się jednak do znalezienia najniższego wspólnego mianownika dla wszystkich urządzeń, na które celujesz, co może nie zawsze istnieć. Na pewno nie chciałbyś używać żadnego innego (tj. Gorszego ) kodeka niż H.264. W rzeczywistości nie byłoby rozsądnie oferować wideo zakodowane w linii bazowej klientom, którzy mogą dekodować profil główny lub wysoki. Odłożyłbyś jakość na zmniejszoną złożoność dekodowania.
Z mojego doświadczenia wynika, że urządzenia z Androidem mogą odtwarzać Baseline H.264 z dźwiękiem AAC-LC w kontenerze MP4. Nigdy nie miałem z tym problemów. W rzeczywistości niektóre urządzenia mogą również odtwarzać wyższe profile, chociaż nie jest to oficjalnie obsługiwane. iOS ogólnie obsługuje również Baseline H.264, ale z pewnością możesz używać profilu głównego na niektórych urządzeniach. Zobacz ten post (nieco przestarzały), aby uzyskać wskazówki.
Jeśli masz problemy z odtwarzaniem, musisz dowiedzieć się, który film powoduje problemy, i uzyskać więcej informacji na temat używanego sprzętu i oprogramowania odtwarzacza. Następnie moglibyśmy porozmawiać o rozwiązywaniu problemów z tym konkretnym przypadkiem.