Я хочу разработать приложение для Android, которое позволяет мне непрерывно записывать видео и загружать части видео на сервер, не останавливая запись. Для приложения очень важно, чтобы я мог записывать до 60 минут, не останавливая видео.
Первоначальный подход
Приложение состоит из двух частей:
- MediaRecorder, который непрерывно записывает видео с камеры.
- Cutter / Copy - Part: Пока видео записывается, я должен вырезать определенные сегменты и отправить их на сервер. Эта часть была реализована с использованием http://ffmpeg4android.netcompss.com/
libffmpeg.so . Я использовал их VideoKit Wrapper, который позволяет мне напрямую запускать ffmpeg с любыми параметрами, которые мне нужны.
Моя проблема
Я попробовал команду ffmpeg с параметрами
ffmpeg -ss 00:00:03 -i <in-file> -t 00:00:05 -vcodec copy -acodec copy <out-file>
который отлично работал у меня, пока MediaRecorder Android завершил запись.
Когда я выполняю ту же команду, пока MediaRecorder записывает файл, ffmpeg завершает работу с сообщением об ошибке «Операция запрещена».
- Я думаю, что сообщение об ошибке не означает, что Android запрещает доступ к файлу. Я думаю, что ffmpeg нужны "moov-atom", чтобы найти правильную позицию в видео.
По этой причине я подумал о других подходах (которым не нужен moov-atom):
- Создайте поток rtsp с помощью android и получите доступ к потоку rtsp позже. Проблема в том, что, насколько мне известно, Android SDK не поддерживает запись в поток rtsp.
- Может быть, можно получить доступ к камере напрямую с помощью ffmpeg (/ dev / video0 похоже на видеоустройство ?!)
- Я читал о webm как об альтернативе потоковой передаче, может быть, Android может записывать потоки webm ?!
TL; DR: слишком долго не читали:
Я хочу получить доступ к видеофайлу с помощью ffmpeg (libffmpeg.so) во время записи. Fffmpeg завершает работу с сообщением об ошибке «Операция запрещена».
Цель:
Моя цель - записать видео (и аудио), взять части видео во время записи и загрузить их на сервер.
Может быть, вы поможете мне решить проблему или у вас есть другие идеи о том, как подойти к моей проблеме.
Заранее большое спасибо.