Платный заказ
Бюджет:
450 $
Общая идея программы: записывать видео (со звуком) непрырывно и передавать на сервер.
Передача на сервер — не ваша забота; это впоминается в общей идеи лишь для того, чтобы
подчекнуть, что запись видео должна происходить частями.
Поддержка видео: 480p, 720p.
Поддержка звука: aac и mp3.
Ключевая часть должна находиться в отдельном множестве классов, которые
легко вставить в любое приложение.
Один из классов должен наследовать IMyVideoRecorder
public interface IMyVideoRecorder {
void init(Context context, Object surfaceHolder,
IMyChunkListener chunkListener,
Object audioParameters,
Object videoParameters,
Runnable callWhenPrepared);
void start();
void stop();
void close();
}
-- сигнатуру изменить по надобности, но общую идею нужно сохранить
методу init() позволяется (и поощряется) продолжить инициализацию в фоне, но по завершению нужно вызвать callWhenPrepared из потока UI. Этот метод должен сделать
prepare() всему, что нужно и включить видоискатель.
после вызова start() начинается запись видео и по завершению записи кусочка
вызывается метод chunkListener.onChunkReceived() из AsyncTask'a.
public interface IMyChunkListener {
void onChunkReceived(byte[] data);
}
Для демонстрации основной части нужно написать демострационное приложение
* с видоискателем,
* с кнопочками "начать запись" и "остановить запись",
* при переключении в другую программу запись должна продолжаться,
при переключении назад в программу видоискатель должен возобновлять работу.
Критерий оценки приложения:
а) Будет записан фрагмент в 30м некоторого фильма.
Затем все кусочки будут склеены назад в один фрагмент:
avconv -i concat:file1.mp4\|file2.mp4 -c copy output.mp4
При просмотре фрагмента, особенно в конце, звук должен соотвествовать картинке.
б) Будет записано проигривание музыки, затем все кусочки склеены в один фрагмент
той же коммандой. При проигривавании фрагмента музыка должна звучать качественно,
без щелчков и искажений в моментах, где склеивались части.
Код на java, проект на android studio.
Версия android: 4.0+
Исспользование сторонних библиотек нежелательно и обязательно оговаривается отдельно.
Коментарии:
* У меня получилась запись с помощью MediaEncoder'а, но записывать звук и коррегировать длину отрезка для меня оказалось сложновато. Поэтому следуюет подчеркнуть важность критериев в этой задаче.