怎么得到Flash中的视频流—— C++

「已注销」 2011-08-02 07:28:54
现在就是想通过Flash打开摄像头,或者打开一个flv文件,然后显示在flash播放界面上,再把这个视频数据流发送给C++处理,再发送到服务器,不想用他原来的 rtmp 格式 (这个格式会把分辨率变小的),只要能得到flash中的原始数据就可以了,主要是要本地跟服务器同步。
Flash中能用socket发送原始数据么?求帮忙,谢谢!
...全文
248 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2011-10-25
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 havakey 的回复:]
兄弟,c++代码能不能再详细点,谢谢
[/Quote]

StretchDIBits 自己查API函数啊,不过图像是对角数据调换的,自己要纠正下当时我只能到CPU占用0--2,希望你能有突破
lmee_ 2011-10-25
  • 打赏
  • 举报
回复
兄弟,c++代码能不能再详细点,谢谢
lmee_ 2011-10-25
  • 打赏
  • 举报
回复
great!!!帮了我的大忙
「已注销」 2011-08-08
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jha334201553 的回复:]
实现代码~~~~

JScript code

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
……
[/Quote]

需要加入Google的as3corelib库文件,才能编译通过~~~
「已注销」 2011-08-08
  • 打赏
  • 举报
回复
在C\C++中显示
		StretchDIBits( 
hdcVideo, rect.left, rect.top,
rect.right - rect.left, rect.bottom - rect.top,
0, 0, pBitMapInfo->bmiHeader.biWidth, pBitMapInfo->bmiHeader.biHeight,
pBuf,
(BITMAPINFO*)pBitMapInfo,
DIB_RGB_COLORS,
SRCCOPY );
「已注销」 2011-08-08
  • 打赏
  • 举报
回复
实现代码~~~~
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" creationComplete="init()">

<fx:Script>
<![CDATA[
import flash.display.BitmapData;
import flash.net.Socket;

import com.adobe.images.JPGEncoder;

private var socket:Socket;


//初始化 8080端口发送socket数据
private function init():void {
socket = new Socket();

socket.addEventListener(ProgressEvent.SOCKET_DATA,
readSocketData);
socket.connect("127.0.0.1", 5555);

var timer:Timer = new Timer(20);

timer.addEventListener(TimerEvent.TIMER, function(e:Event):void{
SendVideo();
});

var cam:Camera = Camera.getCamera();
cam.setMode(400,300,30);

idVideoDisplay.attachCamera( cam ) ;

timer.start();
}
private function readSocketData(progressEvent:ProgressEvent):void
{
trace(progressEvent.bytesLoaded);
var ba:ByteArray = new ByteArray();
trace(socket.readBytes(ba));
}


private var imageSource:BitmapData= new BitmapData(400,300);
public function SendVideo():void
{


var matrix:Matrix=new Matrix();
var bytes:ByteArray;
imageSource.draw(idVideoDisplay,matrix);
bytes = imageSource.getPixels(imageSource.rect);//得到位图二进制数据

socket.writeBytes(bytes);
socket.flush();
}

]]>
</fx:Script>
<mx:VideoDisplay x="5" y="10" width="390" height="296" id="idVideoDisplay"/>

</s:Application>
k1988 2011-08-04
  • 打赏
  • 举报
回复
1、我不记得rtmp格式会把视频分辨率弄小啊?
2、socket是可以用。
3、但是一边播一边取二进制数据,这个好像有点难度。。

2,275

社区成员

发帖
与我相关
我的任务
社区描述
多媒体/设计/Flash/Silverlight 开发 Flash流媒体开发
社区管理员
  • Flash流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧