Потокове відео з камери Android на сервер


286

Я бачив багато інформації про те, як передавати відео з сервера на андроїд-пристрій, але не дуже про інший шлях, ала Qik. Чи міг би хтось вказати мене в правильному напрямку тут, чи дасть мені поради, як підійти до цього?


9
Я також хотів би побачити відповідь на це. Ви щось ще не придумали?
Джеремі Уайт

Ні, відмовився від трансляції. Просто побиття API для подання MediaRecorder було досить жорстким. Ви можете перевірити код sipdroid, але, здається, вони спрацювали.
JCL

Відео-код відсутній у онлайн-джерелі Sipdroid :(
Donal Rafferty

1
Ви можете заглянути в ffserver компонент у ffmpeg.
Винай

1
У мене є питання, пов'язане з цим, яке могло б зацікавити і вас. Це стосується натискання на відеопотік понад 3 г, як тільки буде зроблено захоплення відео та частина контейнера. bit.ly/vYpWGy
michael

Відповіді:


123

Я влаштував проект з відкритим кодом, який дозволив телефоні Android з IP-камери:

http://code.google.com/p/ipcamera-for-android

Сирі дані відео отримують з LocalSocket, і MDAT MOOV MP4 перевіряли спочатку перед потоковою передачею. Відео в прямому ефірі упаковане у форматі FLV і може відтворюватися через Flash відеоплеєр із вбудованим веб-сервером :)


26
Натисніть кнопку "Джерело". Також той, хто прихильнив цього хлопця, є інструментом.
Ніколі

3
Це дає мені помилки .. як, наприклад, java.lang.UnsatisfiedLinkError: Не вдалося завантажити teaonly: findLibrary повернуто null .. Якщо хтось має рішення, будь ласка, поділіться ним. Дякую
anddev

1
@mpp: У додатку є код NDK. Ви можете скласти його самостійно або схопити файли .so з apk, який знаходиться в тому проекті Google Code в розділі "Завантаження".
Турнсол

1
Я також отримую java.lang.UnsatisfiedLinkError помилку. Коротко зазначте кроки щодо усунення цієї помилки.

1
Для тих, хто не розуміє UnsatisfiedLinkError: вам потрібно створити код C за допомогою NDK. Простіше кажучи, бігайте ndk-build. Для отримання додаткової інформації читайте документацію NDK .
Пол Ламмерцма

70

Взяв мене деякий час, але я нарешті встигаю зробити додаток, який робить саме це. Ознайомтеся з кодовою сторінкою Google, якщо вас цікавить: http://code.google.com/p/spydroid-ipcamera/ Я додав у свій код безліч коментарів (головним чином, подивіться на CameraStreamer.java), тож має бути досить зрозумілий. Важкою частиною було насправді зрозуміти RFC 3984 та реалізувати належний алгоритм процесу пакетизації. (Цей алгоритм фактично перетворює потік mpeg4 / h.264, що виробляється MediaRecorder, у приємний потік rtp, згідно з rfc)

До побачення


2
Дуже дякую! В даний час я не можу змусити його працювати правильно з h264 .. і я не можу змінити його на h263 (у мене немає поняття, як це зробити). все одно, дякую людино!
Йойт

1
Я використовую те ж саме, але коли мова йде про трансляцію на Android з rtsp, він говорить, що відео не вдалося відтворити. Я використовую VideoView. Чи можете ви допомогти?
Rohit Mandiwal

1
Чудово працює (поки що!) Я використовую його для передачі відео зі скла (після невеликої роботи / редагування / з'ясування), але поки що я можу змусити його підключитися лише через браузер на базі Windows (Chrome) із плагін vlc. VLC на Android / iPad або будь-якому іншому програвачі rtsp не збирає потоку (один з них виглядав добре, але намагався отримати потік на основі назви пристрою, який цей код повернув як 0 і, таким чином, не можна знайти). Все-таки отримання результатів після дня кодування завдяки вам, тож кудо!
MacD

@MacD Чи використовуєте ви код spydroid-ipcamera (весь проект чи лише деякі класи? Ви можете мені сказати?) Чи цю бібліотеку github.com/fyhertz/libstreaming для потокового передавання в Google Glass? Дуже дякую!!
Бае

Привіт, ви можете пояснити, як реалізувати цей проект у студії Android, я не можу його запустити
utdev

24

Я також розглядаю це, і, хоча у мене немає хорошого рішення для вас, мені вдалося викопати відео-код SIPDroid:

http://code.google.com/p/sipdroid/source/browse/trunk/src/org/sipdroid/sipua/ui/VideoCamera.java


Що вони там зробили, це те, що вони передають RTP-пакети на сервер. Тепер питання полягає в тому, що робиться на сервері? що означає транс-кодування та як воно передається в потоковому режимі
Azlam

Ні. Я не пішов на підхід SIPDroid, він був занадто складним. Потім я щось зробив з MJPEGServer
Azlam

19

Я створив SDK з відкритим кодом під назвою Kickflip, щоб зробити потокове відео з Android безболісним досвідом.

SDK демонструє використання MediaCodec API Android 4.3 для направлення пакетів апаратного кодування пристрою безпосередньо на FFmpeg для RTMP (з librtmp) або HLS- потоку H.264 / AAC. Він також демонструє ефекти OpenGL в режимі реального часу (заголовки, кольоровість клавіш, зникає) та фоновий запис.

Дякую ТАК, і особливо, зів’яла .


чи може він надсилати будь-який клієнт, що підтримує HLS (не лише до вашого сервера)?
4ntoine

4
@dbro Я намагаюся дізнатися про вашу послугу, але вам потрібна моя інформація про вхід, перш ніж я зможу побачити ваші ціни. Це так, ніби ви, хлопці, збираєте електронні адреси. Якщо це не ваш намір, ви повинні зробити доступною інформацію про ціни: так само, як це зробили Parse та App Engine та багато інших.
учень

Чи можливо відеокамера надіслати відео на Kickflip, тоді воно перейде на телефон Android? Якщо ви, який тип відеокамери для цього підходить
Lutaaya Huzaifah Idris

11

Ось повна стаття про передачу відео з камери Android на веб-сторінку.

Потокове відео з камери Android на веб-сторінку

  1. Використовується libstreaming в додатку для Android
  2. На стороні сервера Wowza Media Engine використовується для декодування відеопотоку
  3. Нарешті jWplayer використовується для відтворення відео на веб-сторінці.

Для цього використовуються компоненти із закритим кодом. Будь-які альтернативи з відкритим кодом?
Радж

Ви можете використовувати JavaCV для цього. Я використовував це в моєму проекті, щоб зробити пряму трансляцію з пристрою Android на медіа-сервер wowza, також ви можете використовувати github.com/begeekmyfriend/yasea
Chinthaka Devinda

чи вільні потоки безкоштовні?
Akrramo

чи можемо ми використовувати пристрій звукової карти як джерело вхідного аудіо, а не мікрофон у лібстрімінгу.
користувач2980181

5

Я можу надіслати відео з камери в реальному часі з мобільного на мій сервер. За допомогою цього посилання дивіться посилання

Перегляньте вище посилання. У цьому посиланні є зразок програми. Просто потрібно встановити службову URL-адресу в RecordActivity.class.

Приклад як: ffmpeg_link = "rtmp: // yourserveripaddress: 1935 / live / venkat";

ми можемо надсилати відео H263 та H264 за цим посиланням.


Я використав код за допомогою наведеного вище посилання, але не зміг навіть почати запис. отримуючи виняток "Немає відео в потік". Чи маєте ви якесь уявлення щодо цього?
Ахілеш Ск

@AkhileshSk, використовуючи вищевказаний код u, може надсилати пряме відео через url rtmp на ваш сервер. це не з метою запису. якщо ви хочете записати відео, вам потрібно записати його на стороні сервера.
Венкат

Гей @ Venkat, чи можна надіслати відео наживо з камери на телефон Android, чи є у вас якісь посилання на коди, як-от використання Youtube Live тощо
Lutaaya Huzaifah Idris

@LutaayaHuzaifahIdris так це можливо. Я над цим працював раніше.
Венкат

Привіт @Venkat, ви можете мені допомогти у цьому, не змогли знайти файл
RecordActivity.class


1

Перевірте бібліотеку Yasea

Yasea - потоковий клієнт Android. Він кодує дані YUV та PCM від камери та мікрофона до H.264 / AAC, інкапсулює у FLV та передає по RTMP.

Особливість:

  1. Android mini API 16.
  2. H.264 / AAC жорстке кодування.
  3. H.264 м'яке кодування.
  4. Потік RTMP з обробником зворотного виклику стану.
  5. Динамічна орієнтація портрету та пейзажу.
  6. Передня і задня камери гарячого вимикача.
  7. Запис у MP4 під час трансляції.

0

Мукс (моя компанія) має додаток для Android з відкритим кодом, який передає RTMP на сервер, включаючи налаштування камери та взаємодії користувачів. Він створений для передачі потоку в поточний API Mux, але може легко передавати в будь-яку точку входу RTMP.


-7

Залежно від бюджету, ви можете використовувати Raspberry Pi Camera, яка може надсилати зображення на сервер. Додаю сюди два навчальні посібники, де ви можете знайти ще багато деталей:

Цей підручник показує, як використовувати програму Raspberry Pi Camera та відображати зображення на пристрої Android

Це другий підручник, де ви можете знайти серію навчальних посібників про потокове відео в режимі реального часу між камерою та пристроєм Android


поза контекстом
Вікас Кандарі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.