W jaki sposób można konwertować some.flv
lub some.avi
lub some.wmv
z FFmpeg, aby mieć pewność, że ten film będzie grywalna i możliwy do przeszukania w JW Player?
źródło
W jaki sposób można konwertować some.flv
lub some.avi
lub some.wmv
z FFmpeg, aby mieć pewność, że ten film będzie grywalna i możliwy do przeszukania w JW Player?
To jest odpowiedź na twój ostatni komentarz @abrahab.
Nie potrzebujesz mp4box
pliku, aby móc pseudo strumieniować go przez nginx. Moduł strumieniowy MP4 dba o to bez względu na położenie atomów moov ( mp4box
przesuwa atom moov na początek pliku).
Teraz, jeśli chodzi o błąd serwera 500, czy używasz opcji „-frag” z mp4box? Moduł przesyłania strumieniowego MP4 nie może odczytać pofragmentowanych plików MP4. Dobrym zastosowaniem mp4box
pseudo-streamingu jest przeplatanie filmów w celu lepszego wyszukiwania. Przesunięcie atomów Moova jest dodatkową zaletą.
Zawsze robię to dla mp4box
pliku zakodowanego w FFmpeg
MP4Box -add MyVideo.mp4 -isma Myvideo-box.mp4
Spowoduje to również przeplot pliku MP4 domyślnie w 500 milisekundach porcji.
MP4Box -isma -inter 500 Myvideo.mp4
H.264 w MP4
Ogólnie rzecz biorąc, chcesz utworzyć wideo x264 w kontenerze MP4. Ta opcja jest obsługiwana przez praktycznie każde urządzenie i przeglądarkę.
Poniższe powinny wystarczyć. Pamiętaj, aby zastąpić nazwę wejściową i opcje CRF. Ten ostatni określa jakość, w której wartości rozsądne mieszczą się w zakresie od 19 do 25 - niższa oznacza lepszą jakość, ale także wyższą przepływność:
Możesz także użyć hamulca ręcznego do kodowania, jeśli podoba ci się GUI.
Korzystanie z
faststart
opcjiTeraz musisz przenieść atom MOOV pojemnika MP4 na początek. Ten atom (w istocie jednostka danych w kontenerze MP4) będzie zawierać ważne metadane dotyczące samych strumieni wideo / audio.
-movflags faststart
powinien zrobić dokładnie to.Jeśli wersja FFmpeg nie ma tej opcji, rozważ aktualizację. Jeśli nie możesz dokonać aktualizacji, możesz to samo osiągnąć za pomocą jednego z poniższych narzędzi:
QTIndexSwapper , aplikacja Adobe AIR
MP4Box , darmowy i open source, uruchamiający polecenie podobne do następującego, w którym możesz zmienić interwał (tutaj 500):
qt-faststart w Pythonie , który działa wszędzie tam, gdzie jest zainstalowany Python.
O to chodzi.
Kontrolowanie przepływności / jakości
Teraz, oczywiście, w przypadku przesyłania strumieniowego możesz chcieć ograniczyć przepływność, aby pozostać w określonych granicach. Możesz przeczytać więcej na ten temat w moim blogu na temat metod kontroli stawek .
Na przykład, dodając
-maxrate 2M -bufsize 2M
do opcji kodowania, ograniczasz kodowanie do 2 Mbit / s, co może być wystarczające dla wideo 720p. Wymagana szybkość transmisji zależy oczywiście od stopnia złożoności treści. To wymaga trochę prób i błędów.źródło
ffmpeg -i 1.flv -vcodec libx264 -f mp4 -an -g 1 -f mp4 -g 30 -level 3 new.mp4
to,mp4box
a mp4 nie może szukać i nginx raportuje500 internal server error
parametr początkowy bardziej niż0
. kiedy wideo zakodowane bez-vcoded libx264
(domyślny koder mp4) cały plik roboczy (ale jakość! chory!) :( (przepraszam, teraz nie wolno głosować za odpowiedzią)-movflags faststart
dokładnie to, czego potrzebowałemMożesz po prostu przekonwertować AVI lub MP4 bez możliwości przesyłania strumieniowego, również bez ponownego kodowania wszystkiego, wykonując następujące czynności:
Nie trzeba ponownie kodować niczego, ponieważ wystarczy przesunąć atom Moova.
źródło
Możesz spróbować z ffmpeg:
źródło
-acodec pcm_s16le
(error:)Could not write header for output file #0 (incorrect codec parameters ?): Invalid argument
. Wydaje się, że brakuje też dobrego powodu, takiego jak szkic IETF, dlaczego dokładnie wybrać te parametry.