Zmień rozmiar filmów o różnych szerokościach do stałej proporcji zachowującej wysokość za pomocą ffmpeg


17

Chciałbym przekonwertować wiele plików wideo do formatu flash wideo na stronie internetowej naszej firmy. Mam wymaganie, aby wszystkie filmy miały format 360p, więc ich rozmiar to Nx360.

Ffmpeg Używa -s argument określenie rozdzielczości docelowego jako W x H . Nie znam W idth, ponieważ zależy to od proporcji pliku źródłowego. Jeśli źródłem jest 640 x 480, celem będzie 480 x 360. Jeśli źródłem jest 848 x 480, celem będzie 636 x 360.

Czy można to zrobić za pomocą przełącznika ffmpeg? Że zachowa proporcje, a ja określę tylko wysokość docelowego wideo?

Mógłbym to łatwo rozwiązać, tworząc program, który uruchomi ffprobe, aby uzyskać źródłowy rozmiar wideo, obliczyć proporcje, a następnie obliczyć nową szerokość.

Odpowiedzi:



6

Nie mam jeszcze wystarczającej liczby punktów, aby skomentować istniejącą odpowiedź, ale podąża ona za odpowiedzą user65600 i idzie dalej, gdy określone kodeki wymagają szerokości / wysokości, która jest podzielna przez 2 (np. Libx264)

Gdy użyjesz -1 (zmienna / nieznana), może zwrócić nieparzysty #. Aby zagwarantować parzyste #, musisz użyć czegoś takiego trunc(ow/a/2)*2, co automatycznie obliczy najbliższy parzysty # zachowując współczynnik kształtu.

-vf "scale=trunc(ow/a/2)*2:360"

Źródło: https://ffmpeg.org/trac/ffmpeg/ticket/309


3

-vf "scale=trunc(ow/a/2)*2:360" nie działa z powodu błędu „samodzielnego odwołania”.

Zamiast tego działają następujące czynności:

-vf "scale = -1: 360, scale = trunc (iw / 2) * 2: 360"

W ten sposób unika się samoreferencji przez dwa kolejne skalowanie, a zaokrąglanie odbywa się w drugim etapie. Urocze, prawda? :)


Prosta skala filtru graficznego = -1: 480; scale = trunc (iw / 2) * 2: 480 'nie ma dokładnie jednego wejścia i wyjścia. Błąd otwierania filtrów!
digitalPBK
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.