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

286

Я видел много информации о том, как транслировать видео с сервера на устройство Android, но не о другом, аля Qik. Может ли кто-нибудь указать мне правильное направление или дать совет, как к этому подойти?

JCL
источник
9
Я бы тоже хотел увидеть ответ на этот вопрос. Вы что-нибудь еще придумали?
Джереми Уайт
Нет, отказался от потоковой передачи. Просто победить API MediaRecorder в подаче было достаточно сложно. Вы можете проверить код sipdroid, хотя, кажется, он получил его работу.
JCL
Видеокода нет в исходном коде Sipdroid онлайн :(
Донал Рафферти,
1
Вы можете посмотреть на ffserver компонент в ffmpeg.
Vinay
1
У меня есть вопрос, связанный с этим, который может быть интересен и вам. Это касается передачи видеопотока через 3g, как только вы закончите захват видео и контейнерную часть. bit.ly/vYpWGy
Майкл,

Ответы:

123

Я принимал проект с открытым исходным кодом для включения телефона Android в IP-камеру:

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

Необработанные видеоданные извлекаются из LocalSocket, и перед потоковой передачей проверяется MDAT MOOV MP4. Живое видео упаковано в формате FLV и может быть воспроизведено через Flash Video Player со встроенным веб-сервером :)

Чжоу Чанг
источник
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 (я понятия не имею, как это сделать). в любом случае, спасибо, мужик!
Yotes
1
Я использую то же самое, но когда дело доходит до потоковой передачи на Android с rtsp, он говорит, что видео не может быть воспроизведено. Я использую VideoView. Можете ли вы помочь?
Рохит Мандивал
1
Прекрасно работает (пока!) Я использую его для потоковой передачи видео из Glass (после небольшой работы / редактирования / выяснения), но до сих пор я могу получить его только для подключения из браузера на основе Windows (Chrome) с VLC плагин. VLC на Android / iPad или любом другом rtsp-плеере не будет принимать поток (один из них выглядел хорошо, но пытался получить поток на основе имени устройства, которое этот код возвратил как 0 и, следовательно, невозможно найти). Тем не менее, получение результатов после дня кодирования благодаря вам, так что слава!
MacD
@MacD Используете ли вы код spydroid-ipcamera (весь проект или только некоторые классы? Можете ли вы сказать мне?) Или эту библиотеку github.com/fyhertz/libstreaming для потоковой передачи в Google Glass? Большое спасибо!!
Bae
Привет, не могли бы вы объяснить, как реализовать этот проект в Android Studio? Я не могу заставить его работать
utdev
24

Я тоже в этом разбираюсь, и, хотя у меня нет подходящего для вас решения, мне все-таки удалось откопать видеокод SIPDroid:

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

ObsidianX
источник
Что они там сделали, так это то, что они транслируют RTP-пакеты на сервер. Теперь вопрос в том, что делается на сервере? что означает транскодирование и как оно транслируется
Azlam
Нет ... Я не использовал подход SIPDroid, он был слишком сложным ... Затем я сделал что-то с MJPEGServer
Azlam
19

Я создал SDK с открытым исходным кодом под названием Kickflip, чтобы сделать потоковое видео с Android безболезненным.

SDK демонстрирует использование MediaCodec API Android 4.3 для направления пакетов аппаратного кодировщика устройства непосредственно в FFmpeg для RTMP (с librtmp) или потоковой передачи HLS H.264 / AAC. Он также демонстрирует эффекты OpenGL в реальном времени (заголовки, хроматический ключ, затухание) и фоновую запись.

Спасибо ТАК, и особенно, Fadden .

dbro
источник
он может передавать на любой HLS-совместимый клиент (не только на ваш сервер)?
4
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
libs потоковое бесплатно?
Акррамо
Можем ли мы использовать устройство звуковой карты в качестве входного источника звука, а не микрофон в libstreaming.
user2980181
5

Я могу отправить видео с камеры в реальном времени с мобильного на мой сервер. С помощью этой ссылки см. Ссылку

См. Ссылку выше. В этой ссылке приведен пример приложения. Просто вам нужно установить URL вашего сервиса в RecordActivity.class.

Пример как: ffmpeg_link = "rtmp: // yourserveripaddress: 1935 / live / venkat";

по этой ссылке мы можем отправлять видео типа H263 и H264.

Venkat
источник
Я использовал код, используя вышеуказанную ссылку, но не смог даже начать запись. получить исключение «Нет видео для потоковой передачи». У вас есть идеи по этому поводу?
Akhilesh Sk
@AkhileshSk, используя приведенный выше код, вы можете отправить видео в реальном времени через 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

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

Яэфф
источник
-7

В зависимости от вашего бюджета, вы можете использовать камеру Raspberry Pi, которая может отправлять изображения на сервер. Я добавляю сюда два урока, где вы можете найти много больше деталей:

Из этого туториала Вы узнаете, как использовать камеру Raspberry Pi и отображать изображения на устройстве Android.

Это второй учебник, где вы можете найти серию учебников о потоковой передаче видео в режиме реального времени между камерой и устройством Android

EZU
источник
вне контекста
Викас Кандари