169 похожих чатов

Всем привет!  Снова прошу консультации у сообщества) Задача - написать простенький прототип

для стриминга видео с телефона на сервер. 


Поскольку хотелось обойтись без больших временный затрат, мы сначала нашли модуль для nginx, который позволяет стримить видео в HLS формате (https://github.com/arut/nginx-ts-module). Попробовали записывать видео на телефоне сразу в формате mp2t при помощи MediaRecorder, но, насколько я понял, этот формат поддерживается только с API 26. ffmpeg решили пока не затягивать, попробовать обойтись просто Android sdk. 

По поводу RTCP - серверные ребята сказали, что они бы не хотели с ним заморачиваться. 


Поэтому мы решили попробовать записывать коротенькие видео (секунд по 10) и отправлять их на сервер, потом их склеивать и отправлять клиентам. Опять же, метод, который позволяет на лету поменять файл, куда записывает MediaRecorder, появился только в API 26. Пытались использовали два MediaRecorder и менять их поочередно. Но так появилась задержка между кусочками.

Сейчас вот пытаемся уменьшить задержку. Появилась идея брать поток байтов с превью камеры (из callback-а Camera.PreviewCallback), прогонять через MediaCodec, записывать в файл и отправлять на сервер. Пока у меня что-то не получается разобраться, как правильно, собственно, прогнать поток байтов =/ 


Собственно, мои вопросы к знатокам:

- Подскажите, в правильную сторону ли я двигаюсь, или это "какая-то дичь"? 

- Будет ли задача проще, если пробовать стримить видео по RTCP? Я видел библиотеку libstreaming, кто-нибудь пользовался? 

- Может кто-нибудь знает, как вообще правильно решать подобную задачу?.. 


Заранее спасибо за ответы! Буду рад любым советам. 

1 ответов

11 просмотров

когда нам нужно было стримить (но у нас были свои специфические задачи), мы делали набор картинок + аудио, запаковывали кусочками в пакеты и отправляли по UDP с HTTP header. в хедере был номер пакета. сервер получал пакеты и сортировал их и отдавал обратно на клиент. на клиенте распаковывали и склеивали. в итоге получилось норм, но работы там много, чтобы сделать нормально. если бы вернуть время назад, взяли бы wowza и не мучались.. скоро будем делать стрим опять. собираемся делать с kurento, webrtc streaming

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Карта сайта