Вращайте RAW CAMERA (не только видео) в эфире для Android - PullRequest
8 голосов
/ 25 апреля 2011

Я использую Flex Hero Pre-release 4.5, и это приложение Flex Mobile для Android.

У меня есть ситуация, когда на экране отображается необработанная камера, и она передается в сетевом потоке. По-видимому, прямо сейчас в AIR for android, если вы просто используете необработанную камеру в портретном режиме, она фактически не снимает камеру в портретной ориентации ... это 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... 

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

Ответы [ 2 ]

2 голосов
/ 28 апреля 2011

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

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

1 голос
/ 27 апреля 2011

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

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

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

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

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

...