Я пытался выяснить, как вращать видео с FFmpeg. Я работаю с iPhone видео, снятыми в портретном режиме. Я знаю, как определить текущие степени поворота с помощью MediaInfo (отличная библиотека, кстати), но я застрял на FFmpeg сейчас.
Из того, что я прочитал, вам нужно использовать параметр vfilter . Согласно тому, что я вижу, это должно выглядеть так:
ffmpeg -vfilters "rotate=90" -i input.mp4 output.mp4
Однако я не могу заставить это работать. Во-первых, -vfilters больше не существует, теперь это просто -vf . Во-вторых, я получаю эту ошибку:
No such filter: 'rotate'
Error opening filters!
Насколько я знаю, у меня есть сборка FFmpeg с опциями. Запуск ffmpeg -filters показывает это:
Filters:
anull Pass the source unchanged to the output.
aspect Set the frame aspect ratio.
crop Crop the input video to x:y:width:height.
fifo Buffer input images and send them when they are requested.
format Convert the input video to one of the specified pixel formats.
hflip Horizontally flip the input video.
noformat Force libavfilter not to use any of the specified pixel formats
for the input to the next filter.
null Pass the source unchanged to the output.
pad Pad input image to width:height[:x:y[:color]] (default x and y:
0, default color: black).
pixdesctest Test pixel format definitions.
pixelaspect Set the pixel aspect ratio.
scale Scale the input video to width:height size and/or convert the i
mage format.
slicify Pass the images of input video on to next video filter as multi
ple slices.
unsharp Sharpen or blur the input video.
vflip Flip the input video vertically.
buffer Buffer video frames, and make them accessible to the filterchai
n.
color Provide an uniformly colored input, syntax is: [color[:size[:ra
te]]]
nullsrc Null video source, never return images.
nullsink Do absolutely nothing with the input video.
Наличие опций для vflip и hflip - это здорово и все, но они просто не приведут меня туда, куда мне нужно идти. Мне нужна возможность поворачивать видео на 90 градусов как минимум. 270 градусов было бы отличным вариантом, чтобы иметь. Куда делись опции поворота?
источник
-vf "vflip,hflip"
-vf "vflip,hflip"
работает как шарм.Ответы:
Повернуть на 90 по часовой стрелке:
Для параметра транспонирования вы можете передать:
Используйте
-vf "transpose=2,transpose=2"
на 180 градусов.Убедитесь, что вы используете последнюю версию ffmpeg отсюда (статическая сборка будет работать нормально).
Обратите внимание, что это перекодирует аудио и видео части. Вы можете обычно копировать аудио, не касаясь его, используя
-c:a copy
. Чтобы изменить качество видео, установите битрейт (например, с помощью-b:v 1M
) или посмотрите руководство по кодированию H.264, если вам нужны опции VBR.Решением также является использование этого удобного сценария .
источник
-vcodec libx264
. Но было бы замечательно, если бы мне не нужно было искать, какую кодировку использовать, так как ffmpeg уже должен это знать. Какие-либо предложения?-vf "transpose=2,transpose=2"
cclock_flip
,clock
,cclock
илиclock_flip
вместо0
,1
,2
или3
.Если вы не хотите перекодировать видео и ваш проигрыватель может обрабатывать метаданные ротации, вы можете просто изменить ротацию метаданных с помощью ffmpeg:
источник
ffmpeg -i input.m4v 2>&1 | grep rotate
ffmpeg -i input.m4v -map_metadata 0 -metadata:s:v rotate="90" -codec copy output.m4v
. Таким образом, все глобальные метаданные во входном файле будут скопированы как глобальные метаданные в выходной файл, и изменятся только метаданные ротации.rotate=0
.-metadata:s:v rotate="180"
, не сработало. Это должно работать?ffmpeg -i input.mp4 -codec copy -map_metadata 0 -metadata:s:v:0 rotate=0 output.mp4
Вы уже пробовали
transpose
? Нравится (из другого ответа)Если вы используете старую версию, вы должны обновить ffmpeg, если хотите использовать функцию транспонирования, как она была добавлена в октябре 2011 года.
Страница загрузки FFmpeg предлагает статические сборки, которые вы можете выполнять напрямую, не компилируя их.
источник
Я наткнулся на эту страницу во время поиска того же ответа. Прошло уже шесть месяцев с тех пор, как об этом изначально просили, и с тех пор сборки многократно обновлялись. Тем не менее, я хотел бы добавить ответ для всех, кто сталкивается здесь в поисках этой информации.
Я использую Debian Squeeze и версию FFmpeg из этих репозиториев.
Страница MAN для ffmpeg гласит следующее использование
Ключевым является то, что вы не должны использовать переменную степени, а предопределенную переменную установки со страницы MAN.
источник
Для поворота изображения по часовой стрелке вы можете использовать фильтр поворота, указывающий положительный угол в радианах. С 90 градусами, равными PI / 2, вы можете сделать это так:
для против часовой стрелки угол должен быть отрицательным
Транспонированный фильтр будет одинаково хорошо работать для 90 градусов, но для других углов это более быстрый или единственный выбор.
источник
*
ведет себя как умножение:ffmpeg -i in.avi -vf "rotate=-8*PI/40" -q 1 out.avi
(немного меньшее вращение, чем -PI / 4 = -10 * PI / 40)не будет работать, даже с последним источником ...
необходимо изменить порядок:
работает отлично
источник
rotate=PI/2
илиrotate=90*PI/180
нужныЕсли вы получаете сообщение об ошибке «Кодек экспериментальный, но экспериментальные кодеки не включены», используйте это:
Случилось со мной какой-то файл .mov с аудио aac.
источник
-sameq
Option 'sameq' was removed. If you are looking for an option to preserve the quality (which is not what -sameq was for), use -qscale 0 or an equivalent quality factor option. Failed to set value '1' for option 'sameq': Invalid argument
ответ - qscale также выдает ошибку.Please use -q:a or -q:v, -qscale is ambiguous
, но все еще работает.Это скрипт, который будет выводить файлы со структурой каталогов в «fixedFiles». На данный момент фиксируется MOV-файл и будет выполняться ряд преобразований в зависимости от исходного «поворота» видео. Работает с видео, снятым iOS, на Mac под управлением Mavericks, но его легко экспортировать. Полагается на то, что установил exiftool и ffmpeg .
источник
[Parsed_pad_2 @ 0x7f8b15c3a580] Input area -420:0:1500:1080 not within the padded area 0:0:1080:1080 or zero-sized
\ n `[Parsed_pad_2 @ 0x7f8b15c3a580] Failed to configure input pad on Parsed_pad_2
\ nError reinitializing filters!
\ nFailed to inject frame into filter network: Invalid argument
\ nError while processing the decoded data for stream #0:0
\ nConversion failed!
Ответ Алексия почти сработал для меня, за исключением того, что я получаю эту ошибку:
Мне просто нужно было добавить параметр (-r 65535/2733) в команду, и это сработало. Полная команда была таким:
источник
24000/1001
будет более точным.Дополнительное решение с подходом, отличным от последних упомянутых решений, состоит в том, чтобы проверить, поддерживает ли ваш драйвер камеры элементы управления камерой v4l2 (что очень распространено).
В терминале просто наберите:
Если ваш драйвер камеры поддерживает элементы управления камеры v4l2, вы должны получить что-то вроде этого (список ниже зависит от элементов управления, которые поддерживает ваш драйвер камеры):
И если вам повезет, он поддерживает Horizontal_flip и vertical_flip .
Тогда все, что вам нужно сделать, это установить Horizontal_flip :
или вертикальный_флип по:
и затем вы можете позвонить на ваше видеоустройство для захвата нового видео (см. пример ниже), и видео будет повернуто / перевернуто.
Конечно, если вам нужно обработать уже существующее видео, этот метод не является решением, которое вы ищете.
Преимущество этого подхода заключается в том, что мы переворачиваем изображение на уровне датчика, поэтому датчик драйвера уже дает нам перевернутое изображение, и это сохраняет приложение (например, FFmpeg) от дальнейшей и ненужной обработки.
источник
К сожалению, версия ffmpeg для Ubuntu поддерживает видеофильтры.
Вам нужно использовать avidemux или другой редактор для достижения того же эффекта.
В программном отношении, Mencoder был рекомендован.
источник
Смартфон: записал видео в вертикальном формате
Хотите, чтобы отправить его на веб-сайт было 90 ° влево (против часовой стрелки, альбомный формат) хм.
ffmpeg -i input.mp4 -vf "rotate=0" output.mp4
Является ли. Я снова вернул вертикальный формат
debian buster: ffmpeg --version ffmpeg версия 4.1.4-1 ~ deb10u1 Copyright (c) 2000-2019 разработчики FFmpeg
источник