#android #video-streaming
#Android #потоковое видео
Вопрос:
Мне нужно отправить записанный видеопоток в веб-службу.
Я делаю кодирование видеопотока с использованием базы 64, но у меня заканчивается исключение из памяти. Поэтому я думаю о другом способе сделать это.
Я искал это, но не могу найти ни одной ссылки.
Есть ли другой способ отправки видео, который я могу использовать?
Комментарии:
1. SOAP основан на XML, поэтому вам придется кодировать видео (например, с помощью Base64) и отправлять его на ваш веб-сервис. Я ошибаюсь?
2. @Knickedi вы правы. я использую ту же кодировку, используя базу 64, но я получаю исключение из памяти. поэтому я думаю о другом способе сделать это… пожалуйста, скажите мне, есть ли у вас какие-либо идеи …. спасибо
3. Сжимать перед отправкой? Подойдет Base64
newSize = videoSize / 3 * 4
. Может быть, не используя веб-службу? Но вы должны указать, что все это в вашем вопросе, а не в комментарии…4. @Knickedi, я отредактировал вопрос. я не делаю никакого сжатия видео. Я отправляю видеопоток в виде закодированной строки в веб-службу. Пожалуйста, дайте мне, как сжать и отправить в веб-сервис. Спасибо
5. Я предполагаю, что необработанное видео представляет собой большой файл, поэтому я бы искал способ сжать / закодировать его перед отправкой (это должно быть вашей главной проблемой). Я никогда этого не делал, поэтому, к сожалению, я не могу дать вам больше советов.
Ответ №1:
Одно только кодирование Byte64 увеличивает размеры данных до 4/3 от их первоначального размера. Для видеофайла это исключительное количество накладных расходов. Скорее всего, вы не видели никаких ссылок на эту тему из-за невозможности использовать такое решение в любой текущей инфраструктуре.
Я настоятельно рекомендую вам начать поиск готовых решений для перекодирования для ваших нужд, пока вы не получите лучшего понимания этой проблемной области. В противном случае вам будет трудно найти людей, которые захотят ответить на ваши вопросы о stack overflow, опасаясь, что они будут отвергнуты, когда им придется объяснить вам, что вся ваша предпосылка ошибочна и может быть доказана математически.
Например, предположим, что вы пытаетесь передать видео стандартной четкости (640×480) со скоростью 30 кадров в секунду. Давайте также скажем, что видео в стандартном формате RGB с 8 битами на цветовую полосу, 24 бит на пиксель. Математика для этого будет:
ширина x высота x байты на пиксель x кадр в секунду x служебные данные Byte64 = байты в секунду
640 x 480 x 3 x 30 x 4/3 = 36 864 000
35 МБ в секунду
Помня, что большинство измерений пропускной способности измеряются в мегабитах в секунду, а не в мегабайтах в секунду, это переводится в 281,25 Мб / с. При таких потребностях в пропускной способности вам будет сложно найти беспроводное соединение, которое может удовлетворить ваши потребности в данных, и вы столкнетесь с вполне реальной угрозой насыщения проводного сетевого соединения. В настоящее время вам необходимо сжать ваши видеофайлы, и вам нужно использовать что-то другое, кроме soap, или использовать расширения SOAP, такие как MTOM, которые позволяют передавать потоковые данные.