加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

flash actionscript 3.0 发布H264的视频流

发布时间:2020-12-15 18:37:43 所属栏目:百科 来源:网络整理
导读:NetStream.publish捕捉摄像头的图像,并coded-后发送到:FMS的服务器。闪光灯11终于支持发布H264的流。因为推送H264的流,需要flash播放器能编码H264格式视频,在闪存播放器11加入了H264编码器。 官方参考: http://help.adobe.com/en_US/FlashPlatform/refe

NetStream.publish捕捉摄像头的图像,并coded-后发送到:FMS的服务器。闪光灯11终于支持发布H264的流。因为推送H264的流,需要flash播放器能编码H264格式视频,在闪存播放器11加入了H264编码器。

官方参考:

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/media/H264VideoStreamSettings.html

编写推送h164的作为程序,必须要较高版本的SDK,之前使用的Flex SDK的4.1的flash播放器版本是10.0,不能用来编写这个程序,。

下载的Flex SDK:

http://www.adobe.com/devnet/flex/flex-sdk-download.html


H264和H263对比图(同样的码率和分辨率):



AS3.0代码:

[JAVASCRIPT]? 认为平原 副本
  1. ??
  2. {??
  3. ????导入?fl.controls.Button;??
  4. ????导入?fl.controls.CheckBox;??
  5. 进口?fl.controls.ComboBox;??
  6. 导入?fl.controls.Label;??
  7. 导入?fl.controls.TextInput;??
  8. ??????
  9. 导入?flash.display.Sprite;??
  10. 导入?flash.display.StageAlign;??
  11. 进口?flash.display.StageScaleMode;??
  12. 导入?flash.events.Event;??
  13. 导入?flash.events.MouseEvent;??
  14. 导入?flash.events.NetStatusEvent;??
  15. 导入?flash.media.Camera;??
  16. 导入?flash.media.H264Profile;??
  17. 进口?flash.media.H264VideoStreamSettings;??
  18. 导入?flash.media.Microphone;??
  19. 进口?flash.media.Video;??
  20. 导入?flash.net.NetConnection;??
  21. 导入?flash.net.NetStream;??
  22. 公共??H264Publisher的??扩展?雪碧??
  23. ????{?????
  24. ????????公共的?功能?H264Publisher()??
  25. ????????{??
  26. ????????????阶段==??){??
  27. ????????????????this.addEventListener(Event.ADDED_TO_STAGE,?this.onAddedToStage);??
  28. ????????????}??
  29. ????????????其他{??
  30. ????????????????这一点。onAddedToStage();??
  31. ????????????}??
  32. ????????}??
  33. ??????????
  34. 的私人的?功能?onAddedToStage(EVT:事件):无效{??
  35. stage.align = StageAlign.TOP_LEFT;??
  36. Stage.scaleMode的= StageScaleMode.NO_SCALE;??
  37. ??????????????
  38. VAR??urlPanel:雪碧=???雪碧();??
  39. 。addUrlPanel(urlPanel,onMouseClickStartPublish,onMouseClickStopPublish);??
  40. ??????????????
  41. VAR??cameraPanel:雪碧=???雪碧();??
  42. 。addCameraPanel(cameraPanel);??
  43. VAR??encodingPanel:雪碧=??。addEncodingPanel(encodingPanel);??
  44. ????????????urlPanel.x = 10;??
  45. ????????????urlPanel.y = 10;??
  46. ????????????cameraPanel.x = urlPanel.x;??
  47. ????????????cameraPanel.y = urlPanel.y + 30;??
  48. ????????????encodingPanel.x = cameraPanel.x;??
  49. ????????????encodingPanel.y = cameraPanel.y + 30;??
  50. ????????????视频=???影片();??
  51. ????????????video.x = encodingPanel.x;??
  52. ????????????video.y = encodingPanel.y + 30;??
  53. 。的AddChild(urlPanel);??
  54. 。的AddChild(cameraPanel);??
  55. 。的AddChild(encodingPanel);??
  56. 。的AddChild(视频);??
  57. 私人?VAR??fmsUrl:字符串;??
  58. ????????VAR??fmsStream:字符串;??
  59. 私人的?功能?discoveryFmsUrl():VAR??参数url:String = txtUrl.text;??
  60. 如果(url.toLowerCase()。的indexOf(“RTMP :/ /”?)<0){??
  61. ????????????????跟踪(“[错误]的URL必须开始与RTMP :/ /” ,“?错误”?);??
  62. 返回;??
  63. ????????????/ /删除启动RTMP :/ /??
  64. ????????????(url.toLowerCase()的indexOf(URL = url.substr?“RTMP :/ /”?)+??“RTMP :/ /”的长度。);??
  65. VAR??服务器:字符串= url.substr(0,url.indexOf(“/”?));??
  66. ????????????的URL url.substr(url.indexOf的(“/”?)+ 1);??
  67. VAR??端口:字符串=??“1935”?;??
  68. (server.indexOf(?“:”?)> = 0){??
  69. ????????????????端口= server.substr(server.indexOf(?“:”?)+1)的;??
  70. ????????????????服务器= server.substr(0,server.indexOf(?“:”???));
  71. VAR??appIndex:INT??= -1;??
  72. ?I:?= 0;我<??这个。cbAppLevel.selectedIndex + 1;我+){??
  73. (url.indexOf(“/”?,appIndex + 1)<0){??
  74. ????????????????????打破;??
  75. ????????????????}??
  76. ??????????????????
  77. ????????????????appIndex = url.indexOf(“/”?,appIndex + 1);??
  78. VAR??应用程序:字符串= url.substr(,appIndex);??
  79. VAR??流:字符串= url.substr(appIndex + 1);??
  80. ????????????/ /如果用户输入的IP地址,设置服务器,否则,虚拟主机设置。??
  81. VAR??serverIsIPAddress:布尔=??TRUE?;??
  82. VAR??serverItems:阵列= server.split(?“。”?);??
  83. (I = 0; <serverItems.length;我+){??
  84. (的isNaN(编号(serverItems [I]))){??
  85. ????????????????????serverIsIPAddress =??虚假的;??
  86. ????????????????}??
  87. ????????????fmsUrl =??“RTMP :/ /”??+服务器+??“:”??+端口+??“/”??+应用程序;??
  88. ????????????fmsStream =流;??
  89. 私营?功能?buildEncodingParameters(publishStream:NetStream的,C:摄像机,M:麦克风):VAR??x264profile:字符串=(cbX264Profile.selectedLabel ==。?“?主”)?H264Profile.MAIN:H264Profile.BASELINE;??
  90. VAR??x264level:字符串=??cbX264Level.selectedLabel;??
  91. VAR??x264KeyFrameInterval:INT??=??INT?。cbX264KeyFrameInterval.selectedIndex + 1);??
  92. var?cameraWidth:int?=?int(this.cbCameraSize.selectedLabel.substr(0,153); background-color:inherit; font-weight:bold">this.cbCameraSize.selectedLabel.indexOf("x")));??
  93. +1));??
  94. VAR??cameraFps:数=(cbCameraFps.selectedLabel。);??
  95. VAR??cameraBitrate:。cbCameraBitrate.selectedLabel);??
  96. VAR??cameraQuality:INT??= 85;??
  97. VAR??microEncodeQuality:INT??= 8;??
  98. VAR的?microRate:int??= 22;??/ / 22 === 22050赫兹??
  99. ????????????跟踪(“[发布] H.264(X264)编码参数:???
  100. ????????????????+??“个人资料=”??+ x264profile???
  101. ????????????????+??“级=”??+ x264level??
  102. ????????????????+??“,keyFrameInterval(GOP)=”??+ x264KeyFrameInterval??
  103. ????????????????+??“;视频(摄像头)宽=”??+ cameraWidth??
  104. ????????????????+??“,高度=”??+ cameraHeight??
  105. ????????????????+??“,FPS =”??+ cameraFps??
  106. ????????????????+??“,码率=”??+ cameraBitrate??
  107. ????????????????+??“,质量=”??+ cameraQuality??
  108. ????????????????+??“;音频(麦克风)encodeQuality的的=”??+ microEncodeQuality??
  109. ????????????????+??“,率=”??+ microRate??“的(22050Hz的)”??
  110. ????????????);??
  111. VAR??h264Settings:H264VideoStreamSettings =??H264VideoStreamSettings();??
  112. / /我们必须设置其值,然后设置NetStream.videoStreamSettings,它会不断的起源值。??
  113. ????????????h264Settings.setProfileLevel“(x264profile x264level);???
  114. ????????????publishStream.videoStreamSettings = h264Settings;??
  115. / / setKeyFrameInterval / setMode / setQuality的使用相机设置。??
  116. / /??
  117. / /注意:此功能将在未来版本的Flash Player和AIR的支持下,目前,用于相机参数。??
  118. / * h264Settings.setKeyFrameInterval(4);?
  119. ????????????h264Settings.setMode(800,600,15);?
  120. ????????????h264Settings.setQuality(500,0)* /;??
  121. / /设置摄像头和麦克风。??
  122. / / setKeyFrameInterval的(keyFrameInterval:INT):无效??
  123. / / keyFrameInterval的:int - 一个值,指定全面传播视频帧(关键帧),而不是被???
  124. / /插入的视频压缩算法。值1表示每帧是关键帧,价值3手段???
  125. / /每三帧是关键帧,依此类推。可接受的值是1到48。??
  126. ????????????c.setKeyFrameInterval(x264KeyFrameInterval);??
  127. / / setMode(宽度:INT,高度:INT,FPS:编号,favorArea:布尔=真):无效??
  128. / /宽度:INT - 请求的捕获宽度,以像素为单位。默认值是160。??
  129. / /高度:INT - 请求的捕获高度,以像素为单位。默认值是120。??
  130. / / FPS:编号 - 相机捕捉帧每秒的数据,请求的速率。默认值是15。??
  131. ????????????c.setMode的(cameraWidth,cameraHeight,cameraFps);??
  132. / / setQuality的(带宽:INT,质量:INT):无效??
  133. / /带宽:int - 指定的最大带宽量,当前输出视频输入可以使用字节每秒,。???
  134. / /指定的视频可以使用的带宽,需要保持质量的价值,通过对带宽的0。???
  135. / /默认值是16384。??
  136. / /质量:int - 一个整数,指定所需的画面质量水平,如压缩量确定???
  137. / /被应用到每个视频帧。可接受值的范围从1(最低品质,最大压缩)到100???
  138. / /(最高品质,无压缩)。要指定画面质量可以有所不同,以避免超出带宽,???
  139. / /通过质量0。??
  140. / / winlin:??
  141. / /带宽是在BPS不kbps的。500 * 1000 = 500kbps的。??
  142. / /质量= 1是最低的质量,100是最高的质量。??
  143. ????????????c.setQuality(cameraBitrate * 1000,cameraQuality);??
  144. / /如果没有麦克风,donot设置的params。??
  145. 如果(M ==??/ /使用Speex编解码器时,编码的语音质量。可能的值是从0到10。默认值是6。较高的数字???
  146. / /代表更高的质量,但需要更多的带宽,如下表所示。所列出的比特率值代表???
  147. / /净比特率,不包括打包开销。??
  148. ????????????m.encodeQuality = microEncodeQuality;??
  149. / /麦克风捕捉声音千赫,利率。可接受的值是5,8,11,22和44。默认值是8 kHz???
  150. / /如果您的声音捕获设备支持此值。否则,默认值是高于8 kHz下一个可用捕获级别???
  151. / /你的声音捕获设备支持,通常为11 kHz。??
  152. ????????????m.rate = microRate;??
  153. ????????}??
  154. ??????????
  155. VAR??publishStream:NetStream的;??
  156. VAR??publishConnection:NetConnection对象;??
  157. 功能?onMouseClickStartPublish(EVT:为MouseEvent):无效{??
  158. / /如果出版,donothing??
  159. (publishStream!=??){??
  160. 返回;??
  161. btnStartPublish.enabled =。??;??
  162. btnStopPublish.enabled =。??真实;??
  163. 本的。discoveryFmsUrl();??
  164. ????????????publishConnection =???的NetConnection();??
  165. VAR??列出的NetConnection = publishConnection;??
  166. ????????????conn.client = {};??
  167. ????????????conn.client.onBWDone =??函数():无效{};??
  168. ????????????conn.addEventListener(NetStatusEvent.NET_STATUS,??功能(EVT:NetStatusEvent): ????????????????跟踪(“[发布] [连接]的代码:”??+ evt.info.code);??
  169. ??????????????????
  170. 开关(evt.info.code){??
  171. ?????????????????????“NetConnection.Connect.Success”?:??
  172. ????????????????????????publishStream =???的NetStream(CONN);??
  173. ????????????????????????/ /麦克风和摄像头??
  174. ????????????????????????VAR??M:麦克风= Microphone.getMicrophone(cbMicrophone.selectedIndex);??
  175. / /注:该名称是该指数!??
  176. VAR??C:相机= Camera.getCamera(字符串(cbCamera.selectedIndex)的);??
  177. ????????????????????????(C ==?? ????????????????????????????跟踪(“[发布] [错误]无法打开相机(名称=”??+字符串(cbCamera.selectedIndex)+??):“??+ cbCamera.selectedLabel,?“?错误”?);??
  178. ????????????????????????????cleanupPublishedStream();??
  179. ???????????????????????????? ????????????????????????}??
  180. 否则,?如果(c.muted){??
  181. ????????????????????????????跟踪(“[发布] [错误]打开相机(名称=”??+字符串(cbCamera.selectedIndex)+??“)失败,这是静音:”??+ cbCamera.selectedLabel,?“?错误”?);??
  182. ????????????????????????????cleanupPublishedStream();??
  183. ????????????????????????????打破;??
  184. ????????????????????????}??
  185. ??????????????????????????
  186. ????????????????????????buildEncodingParameters(publishStream,C,M);??
  187. ????????????????????????publishStream.addEventListener(NetStatusEvent.NET_STATUS,?? ????????????????????????????跟踪(“[发布] [NetStreamStatus]”??+ evt.info.code);??
  188. ??????????????????????????????
  189. 开关(evt.info.code){??
  190. ?????????????????????????????????“NetStream.Publish.Start”?:??
  191. ????????????????????????????????????VAR??H264:H264VideoStreamSettings =作为H264VideoStreamSettings的publishStream.videoStreamSettings;??
  192. ????????????????????????????????????跟踪(“[发布]视频编解码器:”??+ h264.codec???
  193. ????????????????????????????????????????+??“,个人资料=”??+ h264.profile??
  194. ????????????????????????????????????????+??“级=”??+ h264.level??
  195. ????????????????????????????????????????+??“,质量=”??+ h264.quality??
  196. ????????????????????????????????????????+??“,FPS =”??+ h264.fps??
  197. ????????????????????????????????????????+??“,GOP =”??+ h264.keyFrameInterval??
  198. ????????????????????????????????????????+??“,带宽=”??+ h264.bandwidth??
  199. ????????????????????????????????????????+??“,大小=”??+ h264.width +??“X”??+ h264.height);??
  200. ???????????????????????????????????? ????????????????????????????????情况?:??
  201. ????????????????????????????????????cleanupPublishedStream();??
  202. ????????????????????????????}??
  203. ????????????????????????});??
  204. ????????????????????????publishStream.publish(fmsStream);??
  205. ????????????????????????/ /将视频和音频。??
  206. ????????????????????????跟踪(“[发布] [调试]开始发布,使用摄像头(名称=”??+字符串(cbCamera.selectedIndex)+??):“??+ c.name);??
  207. ????????????????????????publishStream.attachCamera(C);??
  208. (M =???&& m.muted的){??
  209. ????????????????????????????跟踪(“[发布] [调试]开始发布,使用麦克风(名称=”??+字符串(cbMicrophone.selectedIndex)+??“):”??+ m.name);??
  210. ????????????????????????????publishStream.attachAudio(米);??
  211. ????????????????????????restartPlayback();??
  212. ?“NetConnection.Connect.Rejected”?:??
  213. ?“NetConnection.Connect.Failed的”?:??
  214. ????????????????????????cleanupPublishedStream();??
  215. ????????????});??
  216. ????????????conn.connect(fmsUrl);??
  217. 功能?cleanupPublishedStream():。publishStream!=??本的。publishStream.close();??
  218. 。publishConnection!=??本的。publishConnection.close();??
  219. publishStream =。??;??
  220. VAR??流:NetStream的;??
  221. VAR??CONN:NetConnection对象;??
  222. VAR??视频:视频;??
  223. 功能?restartPlayback():/ /流播放,恢复它。??
  224. 。流!=??本的。stream.close();??
  225. ????????????CONN =?? ????????????conn.client = {};??
  226. ????????????conn.client.onBWDone =??无效{};??
  227. ????????????????跟踪(“[连接]代码:”??+ evt.info.code +??“DESC:”??+ evt.info.description);??
  228. ????????????????????????=??的NetStream流??(CONN);??
  229. ????????????????????????video.attachNetStream(流);??
  230. ??????????????????????????
  231. / / stream.bufferTime = 3;??
  232. ????????????????????????stream.addEventListener(NetStatusEvent.NET_STATUS,?? ????????????????????????????跟踪(“[NetStreamStatus]”??+ evt.info.code +??“DESC:”??+ evt.info.description);??
  233. ????????????????????????});??
  234. ????????????????????????stream.client = {};??
  235. ????????????????????????stream.client.onMetaData,??功能?onMetadata(元数据对象):{??
  236. VAR??O:对象= {};??
  237. VAR??关键:字符串???的元数据){??
  238. ?????????????????????????????????[关键] =元数据[关键];??
  239. ????????????????????????????????跟踪(“元数据”??+??“键?+?“值=“?+键??“??+ O [关键]);??
  240. ????????????????????????????}??
  241. (metadata.width ==未定义){??
  242. ????????????????????????????????metadata.width = 10;??
  243. ????????????????????????????????跟踪(“[警告] metadata.width undefied,设置为10”?);??
  244. (metadata.height ==未定义){??
  245. ????????????????????????????????metadata.height = 10;??
  246. ????????????????????????????????跟踪(“[警告] metadata.height undefied,设置为10”?);??
  247. ??????????????????????????????
  248. ????????????????????????????video.width = metadata.width;??
  249. ????????????????????????????video.height = metadata.height;??
  250. ????????????????????????};??
  251. 如果(cbIsLive.selected){??
  252. ????????????????????????????stream.play(fmsStream,0);??
  253. 其他{??
  254. ????????????????????????????stream.play(fmsStream);??
  255. ????????????????????????stream.close();??
  256. ????????????????????????流=??;??
  257. ????????????});??
  258. 功能?onMouseClickStopPublish(EVT:为MouseEvent):本的。cleanupPublishedStream();??
  259. VAR??txtUrl:TextInput的;??
  260. VAR??btnStartPublish:按钮;??
  261. VAR??btnStopPublish:按钮;??
  262. VAR??cbAppLevel:ComboBox的;??
  263. VAR??cbIsLive:CheckBox的;??
  264. 功能?addUrlPanel的(??
  265. ????????????面板:雪碧,???
  266. ????????????的onMouseClickStartPublish:功能,onMouseClickStopPublish的功能??
  267. ????????):VAR??lblUrl:标签???标签();??
  268. ????????????lblUrl.text =??“RTMP URL:”?;??
  269. ????????????lblUrl.width = 50;??
  270. ????????????panel.addChild(lblUrl);??
  271. ????????????txtUrl =???的TextInput();??
  272. ????????????txtUrl.width = 380;??
  273. ????????????txtUrl.x = lblUrl.x + lblUrl.width + 3;??
  274. ????????????panel.addChild(txtUrl);??
  275. ????????????cbIsLive =???的CheckBox();??
  276. ????????????cbIsLive.selected =??;??
  277. ????????????cbIsLive.label =??“ ??活”?;??
  278. ????????????cbIsLive.width = 53;??
  279. ????????????cbIsLive.x = txtUrl.x + txtUrl.width + 0;??
  280. ????????????panel.addChild(cbIsLive);??
  281. ????????????cbAppLevel =???组合框();??
  282. ????????????cbAppLevel.addItem({标签:??“1级应用”?});??
  283. ????????????cbAppLevel.addItem({标签:??“2级应用”?});??
  284. ????????????cbAppLevel.addItem({标签:??“3级应用”?});??
  285. ????????????cbAppLevel.addItem({标签:??“4级应用”?});??
  286. ????????????cbAppLevel.width = 70;??
  287. ????????????cbAppLevel.x = cbIsLive.x + cbIsLive.width + 0;??
  288. ????????????panel.addChild(cbAppLevel);??
  289. ????????????btnStartPublish =???按钮();??
  290. ????????????btnStartPublish.label =??“ ??发布流”?;??
  291. ????????????btnStartPublish.width = 60;??
  292. ????????????btnStartPublish.x = cbAppLevel.x + cbAppLevel.width + 3;??
  293. ????????????btnStartPublish.addEventListener(MouseEvent.CLICK,onMouseClickStartPublish)的;??
  294. ????????????panel.addChild(btnStartPublish);??
  295. ????????????btnStopPublish =???按钮();??
  296. ????????????btnStopPublish.label =??“ ??停止发布”?;??
  297. ????????????btnStopPublish.width = 60;??
  298. ????????????btnStopPublish.enabled =??
  299. ????????????btnStopPublish.x = btnStartPublish.x + btnStartPublish.width + 3;??
  300. ????????????btnStopPublish.addEventListener(MouseEvent.CLICK,onMouseClickStopPublish)的;??
  301. ????????????panel.addChild(btnStopPublish);??
  302. VAR??cbX264Profile:ComboBox的;??
  303. VAR??cbX264Level:ComboBox的;??
  304. VAR??cbX264KeyFrameInterval:ComboBox的;??
  305. VAR??cbCameraSize:ComboBox的;??
  306. VAR??cbCameraFps:ComboBox的;??
  307. VAR??cbCameraBitrate:ComboBox的;??
  308. 功能?addEncodingPanel的(??
  309. ????????????面板:雪碧??
  310. ????????):VAR??lblX264Profile:标签???标签();??
  311. ????????????lblX264Profile.text =??“简介:”?;??
  312. ????????????lblX264Profile.width = 38;??
  313. ????????????lblX264Profile.y = 2;??
  314. ????????????panel.addChild(lblX264Profile);??
  315. ????????????cbX264Profile =???的ComboBox();??
  316. ????????????cbX264Profile.width = 72;??
  317. ????????????cbX264Profile.x = lblX264Profile.x + lblX264Profile.width + 0;??
  318. ????????????panel.addChild(cbX264Profile);??
  319. ????????????cbX264Profile.addItem({标签:“基准”?});??
  320. ????????????cbX264Profile.addItem({标签:“主”?});??
  321. VAR??lblX264Level:标签?? ????????????lblX264Level.text =??“等级:”?;??
  322. ????????????lblX264Level.width = 32;??
  323. ????????????lblX264Level.y = 2;??
  324. ????????????lblX264Level.x = cbX264Profile.x + cbX264Profile.width + 1;??
  325. ????????????panel.addChild(lblX264Level);??
  326. ????????????cbX264Level =?? ????????????cbX264Level.width = 45;??
  327. ????????????cbX264Level.x = lblX264Level.x + lblX264Level.width + 1;??
  328. ????????????panel.addChild(cbX264Level);??
  329. VAR??x264Levels:阵列= [?“1”?,??“1B”?,??“1.1”?,??“1.2”?,??“1.3”?,??“2”?,?“2.1”?,??“2.2”?,??“3”?,??“3.1”?,??“3.2”?,??“4”?,??“4.1”?“4.2”?,??“5”?,??“5.1”?];??
  330. ?= 0;我<x264Levels.length;我+){??
  331. ????????????????cbX264Level.addItem({标签:x264Levels [I]});??
  332. ????????????cbX264Level.selectedIndex = 8;??
  333. VAR??lblX264KeyFrameInterval:标签?? ????????????lblX264KeyFrameInterval.text =??“共和党”?;??
  334. ????????????lblX264KeyFrameInterval.width = 29;??
  335. ????????????lblX264KeyFrameInterval.y = 2;??
  336. ????????????lblX264KeyFrameInterval.x = cbX264Level.x + cbX264Level.width + 1;??
  337. ????????????panel.addChild(lblX264KeyFrameInterval);??
  338. ????????????cbX264KeyFrameInterval =???的ComboBox();??
  339. ????????????cbX264KeyFrameInterval.width = 87;??
  340. ????????????cbX264KeyFrameInterval.x = lblX264KeyFrameInterval.x + lblX264KeyFrameInterval.width + 1;??
  341. ????????????panel.addChild(cbX264KeyFrameInterval);??
  342. (I = 0; I <48; I + +){??
  343. ????????????????cbX264KeyFrameInterval.addItem({标签:字符串(I + 1)+??“秒”?});??
  344. ????????????cbX264KeyFrameInterval.selectedIndex = 3;??
  345. VAR??lblCameraSize:标签?? ????????????lblCameraSize.text =??“大小:”?;??
  346. ????????????lblCameraSize.width = 30;??
  347. ????????????lblCameraSize.y = 2;??
  348. ????????????lblCameraSize.x = cbX264KeyFrameInterval.x + cbX264KeyFrameInterval.width + 1;??
  349. ????????????panel.addChild(lblCameraSize);??
  350. ????????????cbCameraSize =?? ????????????cbCameraSize.width = 82;??
  351. ????????????cbCameraSize.x = lblCameraSize.x + lblCameraSize.width + 1;??
  352. ????????????panel.addChild(cbCameraSize);??
  353. VAR??大小:阵列=
  354. (I = 0; <sizes.length;我+){??
  355. ????????????????cbCameraSize.addItem({标签:大小[I]});??
  356. ????????????cbCameraSize.selectedIndex = 1;??
  357. VAR??lblCameraFps:标签=?? ????????????lblCameraFps.text =??“的FPS:”?;??
  358. ????????????lblCameraFps.width = 28;??
  359. ????????????lblCameraFps.y = 2;??
  360. ????????????lblCameraFps.x = cbCameraSize.x + cbCameraSize.width + 1;??
  361. ????????????panel.addChild(lblCameraFps);??
  362. ????????????cbCameraFps =?? ????????????cbCameraFps.width = 58;??
  363. ????????????cbCameraFps.x = lblCameraFps.x + lblCameraFps.width + 1;??
  364. ????????????panel.addChild(cbCameraFps);??
  365. VAR??fpses:阵列=
  366. (I = 0; <fpses.length;我+){??
  367. ????????????????cbCameraFps.addItem({标签:fpses [I]});??
  368. ????????????cbCameraFps.selectedIndex = 8;??
  369. VAR??lblCameraBitrate:标签?? ????????????lblCameraBitrate.text =??“比特率”?;??
  370. ????????????lblCameraBitrate.width = 40;??
  371. ????????????lblCameraBitrate.y = 2;??
  372. ????????????lblCameraBitrate.x = cbCameraFps.x + cbCameraFps.width + 1;??
  373. ????????????panel.addChild(lblCameraBitrate);??
  374. ????????????cbCameraBitrate =?? ????????????cbCameraBitrate.width = 58;??
  375. ????????????cbCameraBitrate.x = lblCameraBitrate.x + lblCameraBitrate.width + 1;??
  376. ????????????panel.addChild(cbCameraBitrate);??
  377. VAR??比特率:阵列=
  378. (I = 0; <bitrates.length;我+){??
  379. ????????????????cbCameraBitrate.addItem({标签:比特率[I]});??
  380. ????????????cbCameraBitrate.selectedIndex = 3;??
  381. VAR??cbCamera:ComboBox的;??
  382. VAR??cbMicrophone:ComboBox的;??
  383. 功能?addCameraPanel的(??
  384. ????????????面板:雪碧??
  385. / /摄像头??
  386. VAR??lblCamera:标签?? ????????????lblCamera.text =??“可用的摄像头:”?;??
  387. ????????????lblCamera.width = 100;??
  388. ????????????panel.addChild(lblCamera);??
  389. ????????????cbCamera =???组合框();??
  390. ????????????cbCamera.width = 160;??
  391. ????????????cbCamera.x = lblCamera.x + lblCamera.width + 3;??
  392. ????????????panel.addChild(cbCamera);??
  393. VAR??相机:阵列= Camera.names;??
  394. ?= 0;我<cameras.length;我+){??
  395. ????????????????cbCamera.addItem({标签:相机[I]});??
  396. / /麦克风??
  397. VAR??lblMicrophone:标签?? ????????????lblMicrophone.text =??“可用的麦克风:”?;??
  398. ????????????lblMicrophone.width = 120;??
  399. ????????????lblMicrophone.x = cbCamera.x + cbCamera.width + 10;??
  400. ????????????panel.addChild(lblMicrophone);??
  401. ????????????cbMicrophone =?? ????????????cbMicrophone.width = 180;??
  402. ????????????cbMicrophone.x = lblMicrophone.x + lblMicrophone.width + 3;??
  403. ????????????panel.addChild(cbMicrophone);??
  404. VAR??麦克风:阵列= Microphone.names;??
  405. (I = 0; <microphones.length;我+){??
  406. ????????????????cbMicrophone.addItem({标签:麦克风[I]});??
  407. ????}??
  408. }??

其中用到了FlashCS5的控件,可以将C:程序文件(x86) Adob??e 的Adobe Flash CS5的 配置组件用户Interface.fla打开后导出SWC,然后在的ActionScript3项目大全 - 宜配网引用这个SWC就可以了。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读