Android квадратная видео запись с постобработкой
Я позволяю пользователям в моем приложении записывать видео, а затем публиковать его. По сути, все, что мне нужно, это чтобы видео было квадратным (с низким разрешением, что-то около 400x400), и когда запись будет завершена, тогда пользователь сможет изменять яркость / контрастность.
Я провел некоторое исследование по этому вопросу и нашел библиотеку ffmpeg, которая может это сделать. Но я не уверен, что я согласен с его лицензированием. Когда я использую ffmpeg, должен ли я также освобождать исходные коды моего приложения? Мое приложение будет бесплатным для загрузки и использования, но мне не нравятся его исходники.
Также и об этой квадратной записи - поскольку я поддерживаю API 14, Android не позволяет мне напрямую настраивать разрешение. Есть 2 способа, о которых я думаю:
- Запишите видеофайл в формате 640x480, затем измените размер / обрежьте и после этого разрешите пользователю выполнять постобработку. - для этого совершенно необходим ffmpeg
- Capture CameraPreviewFrames - обрезать их по ходу и рендерить в mp4-видео, а после рендеринга видео позволить пользователю продолжить его обработку - для этого также потребуется ffmpeg.
Тогда мой вопрос - могу ли я использовать ffmpeg, не беспокоясь о лицензировании и т.д.? Или есть какая-то другая библиотека, которая позволяет мне делать выше и открыта для использования?
Спасибо большое
2 ответа
Я не юрист, и это не юридическая консультация. Вы должны проконсультироваться со своим адвокатом для реальной юридической консультации.
FFmpeg это LGPL. Вы должны прочитать лицензию; это несколько более читабельно, чем большинство легальных.
LGPL отличается от GPL тем, что вы не обязаны распространять свой исходный код, если вы не включили исходный код FFmpeg в свой проект. Чтобы достичь этого, вы должны использовать FFmpeg в качестве так называемой динамической библиотеки ссылок (например, .so, .dylib, .framework, .dll и т. Д.). Это конфигурация по умолчанию.
Если вы изменяете источник FFmpeg, вы должны сделать его доступным.
Вы также должны соблюдать лицензионные / патентные лицензионные ограничения всех кодеков, которые вы компилируете с FFmpeg. Их можно различить с помощью параметров конфигурации FFmpeg, например --enable-gpl
, Например, если вы используете эту опцию конфигурации, вы соглашаетесь распространять свой исходный код, а также исходный код FFmpeg, в соответствии с требованиями лицензии (й) этого кодека. (В случае x264, я считаю, что есть коммерческая лицензия, а также GPL.)
Прямо изо рта лошади: http://www.ffmpeg.org/legal.html
Особенно проверяйте контрольный список.
Для API 11+ вы можете использовать инфраструктуру stagefright для кодирования вашего видео в mp4, для этого вам не нужен ffmpeg.
OTOH, существует довольно много портов ffmpeg для Android, некоторые даже устанавливают отдельный сервис, единственная цель которого - обеспечить поддержку ffmpeg для любого приложения на устройстве. Используя такой подход, вы определенно не нарушаете никаких лицензий ПО.