vladpen / cams

Android mobile app

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Первый канал камеры явно пережат

OmlineEditor opened this issue · comments

При просмотре первого канала качество видео явно не соответствует оригиналу. Вы зачем видео пережимаете?
Прошу показывать оригинал без пережатия.

P.S. Я не путаю первый и второй канал. второй канал еще хуже, так что ошибки быть не может.

cams
real

commented

Сама программа ничего с потоками не делает, это может только камера. Значит, URL указан неверно. Например, мои камеры по адресу Channels/102/101 покажут канал низкого разрешения (см. #48)

Например, мои камеры по адресу Channels/102/101 покажут канал низкого разрешения

Все верно это второй канал у вас, а не первый, поэтому и низкого качества. нужно по адресу Channels/101 смотреть.
У меня похожая проблема была пока не обрезала url

Прошу посмотреть что делает плагин VLC внутри программы т.е. если переключиться на 2й канал там даже кирпичей не видно, порсто коричневое месиво. Программа переключает каналы, 1й и 2й поток отличаются, но 1й почему-то не полный и пережатый.

commented

Чудес не бывает. Проверьте, пожалуйста, по логам, по какому URL подключается камера. И что будет, если убрать каналы (оставить один URL).

что будет, если убрать каналы (оставить один URL).

Тоже самое, канал пережат и изображение не оригинльное. еще я заметила что пропорции изображения не верные в портретной ориентации телефона и в пейзажной, при повороте телефона меняется качество видео.

Судя по логам программа явно пережимает видео и уменьшает разрешение из-за какой-то ошибки
Исходное видео: 3840x2160, пережатое: 2432x1088
Ошибка:
libvlc window: request 1 not implemented
allocator 3.x is not supported
DequeueBuffer: dequeueBuffer failed
NdkMediaCodec: sf error code: -38

logCam2.txt

commented

2432x1088 это, случайно, не разрешение вашего устройства? Как вы вообще определили разрешение видео? Как воспроизводится эта камера этой же программой на других устройствах?

P.S. Насколько я вижу, 3840 / 2160 < 2432 / 1088. Могу предположить, что причина размытия именно в этом. Предлагаю проверить эту гипотезу.

2432x1088 это, случайно, не разрешение вашего устройства?

2432x1088 - на разрешение экрна ПОЧТИ похоже, оно немного отличается у меня 2340 x 1080.

Как вы вообще определили разрешение видео?

по логам что выдала программа, возможно ошибаюсь.

Как воспроизводится эта камера этой же программой на других устройствах?

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

вывод: сжатие есть и видео не оригинал, причина где-то внутри программы.

commented

намного лучше эта камера показывает на других устройствах

Можете выразиться точнее - на других устройствах в этой же программе?

Предлагаю простой эксперимент:

  1. Оставляем для этой камеры только 1-й канал
  2. Создаем группу из двух камер: этой и любой другой с разрешением FullHD
  3. Открываем группу, увеличиваем и смотрим на кирпичи. Заодно сравниваем размер в портретной и альбомной ориентации.

Если качество в норме и размеры фреймов совпали - ура, проблема концептуально решена, фиксируем размер фрейма на одиночном экране и выкатываем обновление. Если нет - всё плохо, разбираемся дальше.

P.S. В общем случае размытие не означает сжатие.

Можете выразиться точнее - на других устройствах в этой же программе?

Тестирую, и вот что вышло:
Ваша программа на телефоне - первый канал явно сжимает и это не оригинал
Ваша программа на старом планшете - неработает #51
VLC на телефоне - первый канал без пережатия, видео оригинал
VLC на компьютере - первый канал без пережатия, видео оригинал

Предлагаю простой эксперимент:

Его итоги:
В группе камера на 8 Mp 3840x2160 показывает точно также как и без группы - видео пережато и кирпичи видно плохо.
Камера в портретной ориентации показывает хуже чем в пейзажной ориентации, кирпичи видно по разному - в пейзажной немного лучше, но все равно не оригинал т.к. пережимает исходник всегда.

P.S. Пережатие потока в камере при недостаточной ширине канала выключено принудительно, т.е. камера отдает оригинал всегда.

commented

Спасибо, понятно. Это про 4к камеру. А с обычными full HD проблем не было?

А с обычными full HD проблем не было?

Точно сказать не могу, у меня нет таких камер. Тестировала на другой камере Full HD что временно дали доступ, там кажется все норм.

commented

Вердикт такой: на экране 2340x1080 увидеть 4к нельзя. Точнее, увеличивать картинку можно 3-мя способами:

  1. Масштабировать экран
  2. Увеличивать "поверхность" потока
  3. Масштабировать "поверхность" потока

Сейчас реализован вариант 1, т.к. 2 и 3 требуют вмешательства в libVLC и, соответственно, приводят к снижению отзывчивости интерфейса и увеличению потребления ресурсов процессора и памяти.

То есть в теории, если масштабировать сам поток, добиться лучшего качества увеличенного 4К на экране 2К можно, но платить за это будут пользователи обычных камер. Смысла в этом я не вижу и предлагаю для 4К просто рекомендовать использование устройств с высокой плотностью пикселей.

Вот допустим я старенькая бабушка, у меня экран 720x480 но камера 4к. Ко мне пришли люди или пенсию принести или жулики из СОБЕСа. Я бы могла увеличить картинку и посмотреть, как выглядят лица, но в место этого у меня 4к камера с 8 мегапикселями, на которую я потратила последнюю пенсию превратилась в камеру с разрешением 0,3 Мегапикселя, это потеря примерно в 26 раз. Вот тут явно такого быть не должно. Если делать, то делать хорошо, и камера должна масштабироваться как положено. Если смотреть далеко в будущее, то все пенсионеры будут иметь телефоны, это щас современная молодежь и у всех будут камеры с большим разрешением, этого сегодня 8 Мегапикселей много, а через пару лет будет и 32 Мегапикселя. Экраны телефонов явно не будут иметь такое разрешение. Терять качество картинки малоприятное занятие. И вмешиваться в libVLC вам не нужно. Опишите проблему разработчику библиотеки и скажите, что есть проблема и ее нужно исправить, подождем, когда поправят и вам почти ничего не нужно делать.

Кстати тикет откройте чтобы не забыть о проблеме.

commented

Боюсь, пока старенькой бабушке придется страдать. Вариант №2 не выполним - андроид не справляется с увеличенной поверхностью даже 2К (хотя этот метод, действительно, даёт четкую картинку на любом экране), а для №3 в API нет методов перемещения. Очень жаль, конечно. Возможно, поможет crop_window, но это появится только в 4.0.

Предлагаю подождать.