#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 не может правильно поворачиваться в портретном режиме, пожалуйста, проголосуйте за ошибку здесь, и давайте попросим их исправить это:
Комментарии:
1. Совсем не так. Посмотрите на мой ответ. Я могу гарантировать, что это возможно, просто не из коробки.
Ответ №2:
К сожалению, вы не можете перехватить поток камеры, чтобы изменить его перед отправкой на сервер, это ошибка, которую, мы надеемся, Adobe исправит в следующей версии Air. Если для этого нет открытых билетов, вы должны открыть один.
Однако не все потеряно! То, что класс camera делает с NetStream, по сути, просто отправляет байты видео, которые вы снимаете камерой, и, конечно, есть алгоритм изменения качества в зависимости от пропускной способности. Вы могли бы попробовать сделать то же самое самостоятельно, однако алгоритм изменения качества было бы немного сложнее реализовать, но не невозможно.
По сути, поскольку вы где-то отображаете видео с камеры (может быть, класс Video?), вы могли бы взять эти растровые данные, преобразовать их в ByteArray и отправить по NetStream с помощью send
. Конечно, сервер (или другой клиент) должен знать, что с этим делать.
Нет гарантий, что это сработает хорошо, поскольку я никогда не пробовал, но это то, что я бы сделал. Другой способ сделать это — «сообщить» медиасерверу (я предполагаю, что вы используете его), что в данный момент вы находитесь в ландшафтном режиме (просто установите логический флаг), и тогда сервер сможет выполнить преобразование за вас и отправить его другому пользователю.
В любом случае, это будет непросто. Удачи.