Chcę użyć Ubuntu i najlepiej standardowych pakietów, takich jak ffmpeg, aby obrócić plik wideo .3gp o 90 stopni w dowolnym kierunku. Najlepiej wiersz polecenia lub skrypt w języku Python.
Jak mogę to zrobić?
Chcę użyć Ubuntu i najlepiej standardowych pakietów, takich jak ffmpeg, aby obrócić plik wideo .3gp o 90 stopni w dowolnym kierunku. Najlepiej wiersz polecenia lub skrypt w języku Python.
Jak mogę to zrobić?
Odpowiedzi:
za pomocą VLC możesz obrócić wideo, przechodząc do Narzędzia >> Preferencje ...
I wybierz „Wszystkie” dla ustawień pokazu. Następnie przejdź do: Wideo >> Filtry >> Obróć
Po ustawieniu żądanego stopnia możesz obracać, przechodząc do Narzędzia> Efekty i filtry> Efekty wideo> Geometria ...
Ten, który przetestowałem, to MP4, ale uważam, że VLC może również obsługiwać 3GP. mam nadzieję że to pomoże. :)
Z wiersza polecenia za pomocą ffmpeg:
ffmpeg -i input.3gp -filter:v transpose=1 \
-c:v libx264 -preset veryfast -crf 22 \
-c:a copy \
-metadata:s:v rotate="" \
output.3gp
transpose=1
obróci wideo o 90 stopni w prawo; aby obrócić w lewo, użyj transpose=2
. Zobacz więcej informacji w dokumentacji transpozycji .
-metadata:s:v rotate=""
usunie wszelkie istniejące metadane dotyczące obrotu strumienia wideo; w przeciwnym razie ffmpeg
skopiuje go, co może spowodować dodatkowe niechciane obracanie się odtwarzacza.
Aby uzyskać informacje na temat ustawień kodowania wideo tutaj, zobacz ten przewodnik kodowania H.264 i przewodnik kodowania AAC, jeśli chcesz ponownie zakodować dźwięk zamiast kopiowania strumieniowego .
Rozwiązałem podobny problem - miałem .MOV, który został zdjęty do góry nogami (tj. Obrócony o 180 stopni), który chciałem ustawić w prawo.
W moim systemie Ubuntu 14.04 działałemavconv
z zasadniczo tymi samymi opcjami wiersza poleceń, jakie podano ffmpeg
w odpowiedzi evilsoup . Najwyraźniej nie obsługuje transpose
opcji obrotu o 180 stopni, więc zrobiłem 90 stopni zgodnie z ruchem wskazówek zegara (tj. transpose=1
) Dwa razy.
Kiedy wypróbowałem minimalne opcje, otrzymałem komunikat, że:
encoder 'aac' is experimental and might produce bad results.
Add '-strict experimental' if you want to use it.
a plik wyjściowy miał zerową długość, więc dodałem -strict experimental
.
Działające wiersze poleceń to:
avconv -i IMG_orignl.MOV -filter:v 'transpose=1' -strict experimental IMG_interm.MOV
avconv -i IMG_interm.MOV -filter:v 'transpose=1' -strict experimental IMG_result.MOV
Wynik był zadowalający, z niewyjaśnionymi skutkami ubocznymi:
Nie narzekam: są pożądane; Po prostu nie rozumiem, dlaczego powstały ...
avconv
wiersze poleceń w całości, a nie tylko różnice w stosunku do ffmpeg
polecenia. Twoja odpowiedź powinna być samowystarczalna; druga odpowiedź może odejść. (3) Powodzenia!
-filter:v transpose=1 …
.
Od czasu pierwszej odpowiedzi na to pytanie wprowadzono pewne zmiany w libav. Aby zachować aktualność i użyteczność, podam następujące informacje:
Możesz to osiągnąć dzięki najnowszym wersjom ffmpeg
i avconv
przy użyciu filtru transpozycji wideo.
avconv -i inputfile -vf transpose=clock outputfile
do obrotu w prawo.
w ffmpeg składnia jest taka sama.
ffmpeg -i inputfile -vf transpose=clock outputfile
gdzie plik wejściowy to obsługiwany wejściowy plik wideo, a plik wyjściowy to pożądany plik wyjściowy.
Na przeciwnym do ruchu wskazówek zegara zastąpić zegar z cclock
Oto fragment dokumentacji:
‘cclock_flip’
Rotate by 90 degrees counterclockwise and vertically flip. (default)
‘clock’
Rotate by 90 degrees clockwise.
‘cclock’
Rotate by 90 degrees counterclockwise.
‘clock_flip’
Rotate by 90 degrees clockwise and vertically flip.
Źródła:
https://libav.org/avconv.html#transpose
https://ffmpeg.org/ffmpeg-filters.html#transpose-1
Testowanie na Ubuntu 14.04.5 LTS, Ubuntu 16.04, Ubuntu 18.04
ffmpeg
pracował dla mnie (nie próbowałem avconv
)
ffmpef
zawiera wiele niepotrzebnych argumentów, dzięki!