Obecnie używam pliku wsadowego, który (między innymi) uruchamia następujący wiersz poleceń handbrakecli do konwersji wideo:
HandBrakeCLI.exe -v0 --input "D:\input.mkv" --preset="Universal" --ipod-atom -t 1 --angle 1 --gain 0 --output="D:\output.mp4"
Służy mi to od wielu lat, tworząc plik wideo, który jest mniejszy niż oryginał (dobry, gdy masz tylko 16 GB urządzeń), wygląda wystarczająco dobrze i działa na prawie każdym iPodzie, iPadzie i iPhonie, na którym go włożyłem.
Jednak z czasem handbrakecli stara się konwertować coraz więcej filmów do tego stopnia, że muszę poszukać alternatywy. Nie pomaga w tym fakt, że dzienniki nie zawierają absolutnie żadnych informacji o tym, dlaczego się zawiesił. Na przykład ten film wideo uległ awarii w wyniku konwersji o 71% i są to ostatnie 4 linie:
AC3 Passthru requested and input codec is not compatible for track 2, using AC3 encoder
x264 [info]: using SAR=9593/9600
x264 [info]: using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX
x264 [info]: profile Constrained Baseline, level 3.0
Niezbyt pomocny.
Patrzyłem na użycie ffmpeg jako alternatywy, ale wszystkie przykłady, które widziałem w Internecie, wykonują co najmniej jedną z następujących czynności:
- Nie działa (opcje wiersza poleceń nie są rozpoznawane) - często!
- Rezultatem jest plik większy niż oryginał - bardzo często!
- Zniekształć obraz, zwłaszcza w przypadku konwersji nieoczekiwanego rozmiaru filmu (np. PAL niepanoramiczny)
- Usuń dźwięk
- Rezultatem jest wideo, którego iPhone, iPod lub iPad nie będą odtwarzać
Czy istnieje przyzwoita, uniwersalna linia komend ffmepg, która sprawi, że każde wideo będzie działało szczęśliwie na wszystkich urządzeniach Apple, a także osiągnie zmniejszenie rozmiaru pliku?
Punkty bonusowe, jeśli zmniejszą (ale nie zniekształcą) również wideo w rozdzielczości 720p.
Odpowiedzi:
Oto moje zdanie na ten temat. Jako cel wezmę iPhone'a 4 lub nowszy (w tym wszystkie iPady): H.264 Profil główny, poziom 3.1
Wartości, które możesz zmienić:
-crf 23
: Stałe ustawienie jakości. Wyższa wartość = niższa jakość, mniejszy plik. Niższa = lepsza jakość, większy plik. Wartości rozsądne wynoszą [18–24]-preset medium
: Jeśli jest to zbyt wolne, użyj szybszego ustawienia wstępnego. Jeśli masz na to cierpliwość, użyj wolniejszego. Zobacz tutaj, aby uzyskać więcej informacji.-acodec copy
: Próbuje skopiować ścieżkę audio do kontenera MP4. Jeśli nie można go skopiować, musisz ponownie go zakodować w AAC / MP3 / AC3 ... np-acodec libmp3lame
Jeśli Twój film jest większy niż 720p, dodaj następujące dane po danych wejściowych:
-vf "scale=-2:720:flags=lanczos"
Spowoduje to zmniejszenie wideo do 720p i zachowanie proporcji. Algorytmem skalowania będzie lanczos, ponieważ jest znacznie lepszy niż domyślny.
źródło
-vf "scale=-2:720:flags=lanczos"
. Dodawanie-movflags +faststart
jest zalecane, jeśli plik będzie przeglądany przez pobieranie progresywne, na przykład w przeglądarce (a jeśli nie, opcja na pewno nie zaszkodzi).x264-params
. Bez samodzielnego budowania, czy istnieje sposób na obejście tego problemu?-x264-params
działa dobrze. Jesteś pewien, że czegoś nie przegapiłeś? Opcja ta polega głównie na bezpieczeństwie, aby uniknąć posiadania więcej niż 4 ramek odniesienia, które mogą nie być obsługiwane przez starszy dekoder.-acodec libmp3lame
nie działa dla mnie Aby włączyć dźwięk na moim iPad Mini I przebudowanyffmpeg
znonfree
wariantem i używanelibfdk_aac
kodowane.Jest to podstawowe, ale zadziałało od razu na iPadzie 3
źródło