Поворот КАМЕРЫ RAW (не только видео) в air для Android

#apache-flex #actionscript-3 #air #camera

#apache-flex #actionscript-3 #air #камера

Вопрос:

Я использую предварительную версию Flex Hero 4.5, и это мобильное приложение Flex для Android.

У меня возникла ситуация, когда камера raw отображается на экране и передается в netstream. Очевидно, что прямо сейчас в AIR для Android, если вы просто используете камеру raw в портретном режиме, камера фактически не снимает в portrait…it на 90 градусов в неправильном направлении. Итак, вот фрагмент кода, в котором я повернул видео, и оно отлично смотрится на телефоне. однако мне нужно подключить камеру к netstream и отправить ее … но она отправляет боковое видео, и я действительно не хочу настраивать его на дальнем конце. и я не могу прикрепить видео к netstream … У кого-нибудь есть идеи, что я мог бы сделать, а не просто ждать обновления AIR для этого?

 //i know i have width and height mixed up, its because im rotating it in a second and i dont want it to be stretched
                                nearVideo = new Video(near_video.height,near_video.width);

var m:Matrix = new Matrix();
//rotate here
m.rotate(Math.PI/2); 
this.nearVideo.transform.matrix = m;
//repositioning it so it looks like its fitting in the container correctly
nearVideo.x=near_video.width;
nearVideo.y=(near_video.height-near_video.height);

if (Camera.isSupported)
{
nearCam = Camera.getCamera();
}

nearCam.setMode(near_video.height,near_video.width,10);
nearVideo.attachCamera(nearCam);
near_video.addChild(nearVideo);

//now its all great on screen...but when this comes up

sendStream.attachCamera(nearCam);

//i’m sending sideways video... 
  

Редактировать: Я знаю, что мог бы сказать дальнему концу просто повернуть видеообъект, который он использует для отображения боковой камеры. но по многим причинам это не то решение, которое я хочу принять. Надеюсь, Adobe скоро это исправит. Но до тех пор мне просто любопытно, может быть, кто-нибудь знает, как я могу повернуть камеру и подключить ее к netstream.

Комментарии:

1. Вы должны спросить об этом на сайте предварительного выпуска.

2. Очевидно, я это сделал. нет ответа. итак, я пытаюсь распространить и посмотреть, смогу ли я связаться с кем-нибудь, у кого может быть некоторое представление об этой теме. Я также считаю, что проблема присутствует в предварительном просмотре burrito, который также открыт для публики.

Ответ №1:

Ну, для меня это выглядит как единственное реальное решение, кроме поворота видео на дальнем конце, — это просто заставить Adobe исправить камеру. Итак, если вы нашли эту страницу, потому что были разочарованы тем, что камера на Android не может правильно поворачиваться в портретном режиме, пожалуйста, проголосуйте за ошибку здесь, и давайте попросим их исправить это:

http://bugs.adobe.com/jira/browse/SDK-30317

Комментарии:

1. Совсем не так. Посмотрите на мой ответ. Я могу гарантировать, что это возможно, просто не из коробки.

Ответ №2:

К сожалению, вы не можете перехватить поток камеры, чтобы изменить его перед отправкой на сервер, это ошибка, которую, мы надеемся, Adobe исправит в следующей версии Air. Если для этого нет открытых билетов, вы должны открыть один.

Однако не все потеряно! То, что класс camera делает с NetStream, по сути, просто отправляет байты видео, которые вы снимаете камерой, и, конечно, есть алгоритм изменения качества в зависимости от пропускной способности. Вы могли бы попробовать сделать то же самое самостоятельно, однако алгоритм изменения качества было бы немного сложнее реализовать, но не невозможно.

По сути, поскольку вы где-то отображаете видео с камеры (может быть, класс Video?), вы могли бы взять эти растровые данные, преобразовать их в ByteArray и отправить по NetStream с помощью send . Конечно, сервер (или другой клиент) должен знать, что с этим делать.

Нет гарантий, что это сработает хорошо, поскольку я никогда не пробовал, но это то, что я бы сделал. Другой способ сделать это — «сообщить» медиасерверу (я предполагаю, что вы используете его), что в данный момент вы находитесь в ландшафтном режиме (просто установите логический флаг), и тогда сервер сможет выполнить преобразование за вас и отправить его другому пользователю.

В любом случае, это будет непросто. Удачи.