Улучшения MJPEG

Я получил этот код отсюда Android и MJPEG для загрузки и потоковой передачи Mjpeg. Он выглядит и работает нормально для одного видео.

Однако, когда я пытаюсь транслировать несколько видео MJpeg одновременно и отображать их на экране, производительность значительно снижается.

Может ли кто-нибудь порекомендовать лучший способ сделать это для нескольких потоков или какие-либо улучшения, которые они могут реализовать для повышения производительности. На данный момент это довольно медленно и неприемлемо.


person Jared    schedule 05.07.2011    source источник
comment
Зачем вам несколько потоков? Android — это платформа, которая работает на устройствах с очень небольшой памятью/мощностью процессора, поэтому вы должны использовать их с умом.   -  person Lukas Knuth    schedule 06.07.2011
comment
Я согласен с вами, однако мне нужно, чтобы несколько потоков отображались одновременно ... поэтому я и спрашивал, есть ли у кого-нибудь какие-либо идеи, чтобы помочь. Будет ли размещение каждого потока в отдельном потоке для их отображения подходящим способом?   -  person Jared    schedule 06.07.2011
comment
Я не уверен, как вы хотите отображать их в отдельных потоках, но загрузка каждого в один поток была бы подходящей. Хотя, я думал, ты это уже сделал.   -  person Lukas Knuth    schedule 06.07.2011
comment
спасибо Лукас за помощь. Чтобы уточнить эту многопоточную потоковую передачу. У меня был бы отдельный поток для загрузки и обновления каждого Mjpeg и один основной поток, отвечающий только за отрисовку. Должен ли я использовать обработчики для отправки сообщений между ними, чтобы поток пользовательского интерфейса знал об изменениях? если вы могли бы быть так любезны, чтобы указать мне или написать простой пример, даже используя псевдокод, это нормально.   -  person Jared    schedule 07.07.2011
comment
Вы тоже хотите показать их все сразу? Или просто загрузить несколько потоков и отобразить один из них?   -  person Lukas Knuth    schedule 07.07.2011
comment
Я загружаю четыре потока и отображаю их все сразу. прямо сейчас я использую SurfaceView, расширяющий SurfaceView.callback, и у меня есть один основной поток пользовательского интерфейса, который прямо сейчас отвечает за обновление, а затем рисование. Он обновляет их все, а затем рисует их. Мне нужно, чтобы каждый из них обновлялся и рисовал одновременно. Я понимаю, что на экран выводится несколько потоков, но в конечном итоге, если одна камера не загружается, ни одна из них не будет отображаться до тех пор, пока она не завершится, что нехорошо. еще раз спасибо, что остаетесь со мной здесь.   -  person Jared    schedule 07.07.2011
comment
Простой совет: не делайте этого. Создайте showStream-Activity для загрузки и отображения одного пара. Это намного лучше для использования памяти/процессора и времени автономной работы.   -  person Lukas Knuth    schedule 07.07.2011
comment
Лукас, спасибо, это именно то, что я ищу, а именно совет и руководство. Однако важно, чтобы у меня было четыре потока, отображаемых в одном действии, это делает проект или ломает его. В настоящее время у меня есть четыре потока в сетке 2x2, и они довольно быстро обновляются и рисуются. но мне нужно разделить их так, чтобы каждый был независим от другого. Это означает, что он не ждет загрузки, а затем рисует все четыре, а загружает и рисует их одновременно. Любые мысли о том, как это сделать, а не альтернативы тому, что мне нужно?   -  person Jared    schedule 08.07.2011
comment
@ Джаред, я думаю, ты что-то понял, когда спросил об использовании отдельного потока. Вы никогда не должны выполнять интенсивные задачи в своем основном потоке. Основной поток всегда должен быть зарезервирован для пользовательского интерфейса. Хотя я не слишком знаком с движением jpeg, кажется, что было бы более уместно разгрузить как можно больше из основного потока каждый в свой собственный поток. Взгляните на это, модифицированную версию с использованием asynctask: stackoverflow.com/questions/10550139/   -  person Badams    schedule 09.03.2013