Я протестировал команду ffmpeg для создания миниатюр ffmpeg -y -ss 0 -to 10 -i acb.mp4 -qscale:v 2 -frames:v 1 abc.jpeg
на macOS, и она работала нормально, тогда как та же команда на Ubuntu 18.04.2 (AWS EC2) для ffmpeg выдавала ошибку.
ошибка :
Option to (record or transcode stop time) cannot be applied to input url abc.mp4 -- you are trying to apply an input option to an output file or vice versa. Move this option before the file it belongs to.
Error parsing options for input file abc.mp4.
Error opening input files: Invalid argument
Я использую AWS EC2 (ubuntu 18.04.2), использовал sudo apt install ffmpeg. Может ли кто-нибудь помочь мне с этим, если мне нужно установить его другим способом, или я что-то здесь упускаю. Спасибо заранее.
решение1
Удалять-to 10
- Вы выводите один кадр, поэтому вам не нужно объявлять время остановки продолжительности с помощью
-to
. У одного изображения нет продолжительности, поэтому-to
оно в любом случае игнорируется. -ss
(смещение начального времени) со значением0
ничего не делает, поэтому его тоже можно удалить.
Пример:
ffmpeg -y -i acb.mp4 -qscale:v 2 -frames:v 1 abc.jpeg
То же, что и выше, но скриншот делается через 30 секунд:
ffmpeg -y -ss 30 -i acb.mp4 -qscale:v 2 -frames:v 1 abc.jpeg
Получите снимок экрана в 22 часа 15 минут 5 секунд, но с более низким качеством:
ffmpeg -y -ss 22:15:05 -i acb.mp4 -q:v 5 -frames:v 1 abc.jpeg
При желании вы можете использовать псевдоним -q:v
вместо .-qscale:v
Почему это работает в macOS, но не в Ubuntu
Ранее эта -to
опция была только опцией вывода. Она была обновлена, чтобы также работать как входной файл (объявленный ранее -i
). Вы используете FFmpeg 3.4.6, который слишком стар для использования -to
в качестве опции ввода. Ваша версия FFmpeg на macOS достаточно новая, чтобы ее можно было использовать -to
в качестве опции ввода. Но, как упоминалось ранее, при выводе одного изображения -to
ничего не происходит и игнорируется.