Android кодирует видео с помощью ffmpeg во время записи

Я хочу разработать приложение для Android, которое позволяет мне непрерывно записывать видео и загружать части видео на сервер, не останавливая запись. Для приложения очень важно, чтобы я мог записывать до 60 минут, не останавливая видео.

Первоначальный подход

Приложение состоит из двух частей:

  1. MediaRecorder, который непрерывно записывает видео с камеры.
  2. 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):

  1. Создайте поток rtsp с помощью android и получите доступ к потоку rtsp позже. Проблема в том, что, насколько мне известно, Android SDK не поддерживает запись в поток rtsp.
  2. Может быть, можно получить доступ к камере напрямую с помощью ffmpeg (/ dev / video0 похоже на видеоустройство ?!)
  3. Я читал о webm как об альтернативе потоковой передаче, может быть, Android может записывать потоки webm ?!

TL; DR: слишком долго не читали:

Я хочу получить доступ к видеофайлу с помощью ffmpeg (libffmpeg.so) во время записи. Fffmpeg завершает работу с сообщением об ошибке «Операция запрещена».

Цель:

Моя цель - записать видео (и аудио), взять части видео во время записи и загрузить их на сервер.

Может быть, вы поможете мне решить проблему или у вас есть другие идеи о том, как подойти к моей проблеме.

Заранее большое спасибо.


person Andreas Pabst    schedule 19.07.2013    source источник
comment
У вас есть решение этой проблемы?   -  person Trinea    schedule 08.12.2016


Ответы (1)


Ваши требования в реальном времени могут увести вас от ffmpeg к webrtc и / или к html5.

некоторые ресурсы;

http://dev.w3.org/2011/webrtc/editor/getusermedia.html (section5)

https://github.com/lukeweber/webrtc-jingle-client

ondello .. у них есть API

вместо того, чтобы использовать собственный и пытаться получить видеопоток или получить доступ к фреймбуферу, чтобы получить xcopy того, что находится в видеобуфере, а затем дублировать поток и управлять соединением (сокет или фрагментированный http), вы можете захотеть посмотрите альтернативы типа api ....

person Robert Rowntree    schedule 20.07.2013
comment
спасибо за ответ, я просмотрел ваши ресурсы. Почему-то они мне не подходят. - person Andreas Pabst; 24.07.2013