`
guolang2116
  • 浏览: 73047 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

边录边播代码

阅读更多
<?xml version="1.0" encoding="utf-8"?>  
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()">  
    <mx:Script>  
        <![CDATA[  
            import mx.controls.Alert;   
            private var nc:NetConnection = null;  
            private var ns:NetStream = null;  
            private var video:Video = null;  
            private var camera:Camera = null;//定义一个摄像头   
            private var mic:Microphone; //定义一个麦克风   
              
            private var rtmp_url:String = "rtmp://localhost/SOSample";  //录像的地址
              
            private var play_url:String = "rtmp://localhost/SOSample";  //播放的地址
            
            private var nc_play:NetConnection = null;  //连接
            private var ns_play:NetStream = null;  //媒体流
            private var video_play:Video = null;  //录像
              
            private var videoName:String = ""; //录像的名字  
              
            private function init():void{  
                setupCameraAndMic();   
            }  
              
            private function setupCameraAndMic():void{  
                camera = Camera.getCamera();  
                if(camera != null){ 
                    camera.addEventListener(StatusEvent.STATUS,cameraStatus);  
                    camera.setMode(128,96,12);  
                    camera.setQuality(0,100);  
                    video = new Video();  
                    video.width = 128;  
                    video.height = 96;  
                    video.attachCamera(camera);  
                    recordVideo.addChild(video);  
                }  
                mic = Microphone.getMicrophone();   
                if(mic != null){   
                    mic.addEventListener(StatusEvent.STATUS,micStatus);  
                    mic.setSilenceLevel(0,-1); //设置麦克风保持活动状态并持续接收集音频数据   
                    mic.gain = 80; //设置麦克风声音大小   
                }   
            }  
              
            private function cameraStatus(event:StatusEvent):void{  
                if(!camera.muted){  
                    begin.enabled = true;  
                }
            }  
              
            // 麦克风 
            private function micStatus(event:StatusEvent):void{  
                if(!mic.muted){  
                    begin.enabled = true;  
                }
            }  
              
            //点击开始录像按钮 
            private function clickStartRecord():void{  
                nc = new NetConnection();  
                nc.addEventListener(NetStatusEvent.NET_STATUS,nsHandler);  
                nc.connect(rtmp_url); //连接red5  
                              
            }  
              
            private function nsHandler(evt:NetStatusEvent):void{
                if(evt.info.code == "NetConnection.Connect.Success"){ //如果连接成功  
                    recordText.text = "连接成功,正在录制中...";
                    doRecord();  
                }else{  
                    Alert.show("连接失败");
                }  
            }  
              
            //开始录像 
            private function doRecord():void{  
                if(video != null){  
                    video.clear();  
                    recordVideo.removeChild(video);  
                    video = new Video();  
                    video.width = 128;  
                    video.height = 96;  
                    video.attachCamera(camera);  
                    recordVideo.addChild(video);  
                }  
                ns = new NetStream(nc);  
                ns.attachCamera(camera);  
                ns.attachAudio(mic);  
                videoName = "video_"+Math.random()+getTimer();  
                ns.publish(videoName,"record");  
                begin.enabled = false;  
                end.enabled = true;
                //一边录像一边播放  
                doPlay();     
            }  
              
              //播放
            function doPlay():void{  
                nc_play = new NetConnection();  
                nc_play.addEventListener(NetStatusEvent.NET_STATUS,ncPlayHandler);  
                nc_play.connect(play_url);  
            }  
              
              
            private function ncPlayHandler(evt:NetStatusEvent):void{  
                if(evt.info.code == "NetConnection.Connect.Success"){ 
                    error_text.text = "连接成功,正在播放中...";  
                    ns_play = new NetStream(nc_play);  
                    ns_play.play(videoName);   
                    video_play = new Video();  
                    video_play.width = 320;  
                    video_play.height = 240;  
                    video_play.attachNetStream(ns_play);  
                    playVideo.addChild(video_play);  
                }else{  
                    Alert.show("连接失败");  
                }  
            }  
              
              //结束录像和播放
            private function clickend():void{  
                ns.close();  
                video.clear();  
                ns_play.close();  
                video_play.clear();  
                recordVideo.removeChild(video);  
                begin.enabled = true;  
                end.enabled = false; 
                error_text.text=""; 
                recordText.text="";
                  
                init(); //这里一定记得要重新初始化Camera
            }  
        ]]>  
    </mx:Script>  
    
   
        
     <!--播放-->   
    <mx:Panel x="73" y="47" width="358" height="307" layout="absolute">  
        <mx:VideoDisplay x="9" y="10" width="320" height="240" id="playVideo"/>  
    </mx:Panel>  
    <mx:Text x="163" y="371" id="error_text" text="" width="183" height="35.6" fontSize="12" color="red"/>  
    <mx:Button x="120" y="424.6" enabled="false" label="开始视频" fontSize="12" id="begin" click="clickStartRecord()"/>  
    <mx:Button x="289" y="424.6" enabled="false" label="结束视频" fontSize="12" id="end" click="clickend()"/>  
    
    
     <!--录制-->
    <mx:Panel x="527" y="47" width="167" height="157.6" layout="absolute">  
        <mx:VideoDisplay x="9" y="10" width="128" height="96" id="recordVideo"/>  
    </mx:Panel>
    <mx:Text id="recordText" x="541" y="236" width="143" fontSize="12" color="red"/>
  
</mx:Application>

顺便介绍一款上网加速器利器,程序员必备!自己一直在用,有需要的朋友可以试试!
http://honx.in/i/VIFTbc6vD2Sxigzt

 

分享到:
评论

相关推荐

    Android 边录边播 apk源码

    这个源码可以作为Android开发者学习边录边播功能的实践案例,通过阅读和理解代码,可以深入掌握Android多媒体框架的使用,提升在音视频开发领域的专业技能。同时,对性能优化和权限管理也有很好的学习价值。

    开机自动边录音边播放的例子

    综上所述,实现“开机自动边录音边播放”功能涉及了Android服务、BroadcastReceiver、MediaRecorder、MediaPlayer等多个核心组件和概念,需要综合运用这些知识点,结合具体代码实现,才能达到预期效果。在实际开发...

    QT音频录音和播放

    QT框架是Qt公司开发的一款强大的跨平台应用程序开发框架,它被广泛用于创建桌面、移动以及嵌入式设备上的用户...不过,需要注意的是,由于描述中提到的“还没有整理”,这意味着提供的代码可能需要进一步完善和优化。

    iOS使用AudioUnit实现音频边下边播以及均衡器压缩器混响器实现

    1、demo实现了音频流播放(边下边播)、解码、转码、... 3、本demo只对边下边播进行了非常粗略的控制,就是先让音频下载2秒才开始播放音频,并假定播放的速度低于下载速度,精细控制会使用大量额外代码作为demo没有必要。

    Android视频点播的实现代码(边播边缓存)

    在Android平台上实现视频点播(VOD)时,边播边缓存的技术是提高用户体验的重要手段。这种技术允许用户在观看视频的同时,将内容缓存到本地,避免了因网络不稳定而频繁卡顿的问题,同时也方便了用户离线观看。本文将...

    视频边下边播播,把播放器播放过的数据流缓存到本地,支持拖动采用avplayer.zip

    "视频边下边播"(也称为“渐进式下载”)是一种优化用户体验的技术,允许用户在视频数据下载的同时进行播放,无需等待整个文件完全下载完毕。这种技术的关键在于缓存机制,它能够将播放器播放过的数据流存储到本地,...

    基于C语言的录音播放程序--源代码

    部分代码: int main() { creat_file&#40;&#41;; //新建文件,原文件数据被删除 RecordWave(); //录音函数 simplest_pcm16le_to_wave("NocturneNo2inEflat_44.1k_s16le.pcm", 1, 44100, "output_nocture.wav"); //将...

    录制电脑播放的声音工具

    - **oggds.dll、vorbis.dll、macdll.dll、vorbisenc.dll**:这些动态链接库文件分别与Ogg Vorbis编码和解码有关,Ogg Vorbis是一种开放源代码的音频压缩格式,提供比MP3更高的音质,尤其是在相同比特率下。...

    抖音直播录制工具,,支持通过 直播间链接、直播间分享短链、主播主页 的方式添加监测房间

    支持无人值守自动监测和录制多个主播的直播。 支持录制弹幕。 未知直播间地址时,也可以通过主播主页来监测直播,因此可以监测没开过直播的、开播时间阴间导致从未赶上直播的主播。 支持自动获取 cookie,并在 ...

    安卓拍照上传录像监控录屏相关-实现Android本机视频录制播放边录边放.rar

    本压缩包“安卓拍照上传录像监控录屏相关-实现Android本机视频录制播放边录边放.rar”提供了一些相关的源代码和资源,可能包含了以下几个关键知识点: 1. **Android 视频录制**: - 使用`MediaRecorder`类:这是...

    Java声音播放程序源代码.zip

    本资源“Java声音播放程序源代码.zip”提供了一套完整的Java源代码,可以帮助开发者理解和实现音频播放功能。下面将详细介绍这个压缩包中的内容以及相关Java音频处理的知识点。 首先,`readme.md`文件通常包含项目...

    长周期备忘录代码下载

    从给定的文件标题“长周期备忘录代码下载”以及描述“可作为长周期性备忘录使用,用作各种管理系统”,我们可以看出这是一段用于实现长周期性备忘录功能的代码,旨在帮助用户在不同的管理系统中记录并管理定时任务或...

    avi播放软件代码,可以播放avi文件的代码

    在IT领域,特别是软件开发中,能够理解和编写播放器代码是一项重要的技能。本知识点将深入探讨如何使用代码来实现AVI文件的播放功能,以"avi播放软件代码"为例,我们将详细讲解AVI播放器的基本原理和编程技术。 AVI...

    记录视频播放时间.rar

    上述代码解决了以下问题: 视频播放:读取和播放视频文件。 帧数记忆:通过读取和写入文件来记录视频播放的当前帧数,使得下次播放可以从上次停止的地方继续播放。 实时控制:允许用户通过按键(如'q'键)来停止视频...

    pcm录制及播放

    6. **代码实现**: - `main.c`是项目的主程序文件,包含主要的逻辑实现。在这个案例中,它会调用waveIn和waveOut函数来处理音频数据的录制和播放。 总结起来,这个项目是通过VC++6和Windows API来处理PCM音频数据...

    录音与播放源代码,实现音频文件的播放

    本项目提供的源代码主要关注录音与播放功能,通过实现这些功能,开发者可以创建自己的音频处理软件,例如音乐播放器或者录音工具。下面将详细介绍这个项目所涉及的知识点。 首先,项目的标题"录音与播放源代码,实现...

    jquery带拖动的进度条播放停止代码.zip

    在这个“jquery带拖动的进度条播放停止代码”中,我们可以期待找到一个实现媒体播放(如音频或视频)时带有可拖动进度条功能的代码示例。这个功能通常用于多媒体播放器,让用户能够控制播放进度,暂停或停止媒体的...

    谷歌浏览器selenium-ide插件,录制脚本可以转换各种形式代码,如python,java等

    谷歌浏览器selenium-ide插件,录制脚本可以转换各种形式代码,如python,java等 使用方法:直接将此谷歌浏览器插件拖到谷歌浏览器里安装(拖拽到扩展程序页面),然后就可以跟火狐浏览器ide工具一样录制脚本,运行...

    视频刻录源代码

    本文将深入探讨视频刻录源代码的相关知识点,基于你提供的标题和描述,我们可以假设这是一个关于如何利用编程语言实现视频刻录功能的源代码实例。 首先,我们需要理解视频刻录的基本原理。视频刻录是指将数字视频...

    刻字源代码-UG直接运行(工具-操作记录-播放)DrawText

    nxopen开发ug ,刻字源代码-UG直接运行(工具-操作记录-播放)DrawText.vb

Global site tag (gtag.js) - Google Analytics