linux h264有h264的客户端吗。linux h264如何连接H264的IP摄像头。

文档分类:
在线文档经过高度压缩,下载原文更清晰。
淘豆网网友近日为您收集整理了关于嵌入式Linux平台上H264实时流的传输与控制的文档,希望对您的工作和学习有所帮助。以下是文档介绍:嵌入式Linux平台上H264实时流的传输与控制 分类号TN919.85密级玺j重庆邮电大学硕士学位论文论文题目嵌入式Linux平台上n.264实时流的传输与控制英文题目ThetransmissionandcontrolofH.264real—timedatastreambasedontheembeddedLinuxOS硕士研究生指导教师学科专业薛萌李校林正高级工程师通信与信息系统论文提交日期丝旦:!:!论文评阅人论文答辩日期型!:!:坚答辩委员会主席丞渔生塑童童叁!笪鱼盔垦ⅫB年6月eEl.. ... ..独创性声明本人声明所呈交的学位论文是本人在导师指导下进行的研究工作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其它人已经发表或撰写过的研究成果,也不包含为获得重庞由E电太堂或其它教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示谢意。学位论文作撇:旃氓签字嗍M≥椭h学位论文版权使用授权书本学位论文作者完全了解重庭邮电太堂有关保留、使用学位论文的规定,有权保留并向国家有关部门或机构送交论文的复印(来源:淘豆网[/p-4403874.html])件和磁盘,允许论文被查阅和借阅。本人授权重麽邮电太堂可以将学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存、汇编学位论文。(保密的学位论文在解密后适用本授权书)导师签名:签字日期:、&日j庞月五名日荪1月酉钆名B签矽者作:文期论日位字学签.. ... ..摘要摘要随着人们对安全要求的不断提高与计算机处理速度、多媒体压缩技术的迅猛发展,实时化、高清化的视频监控系统应运而生。而该种系统在运行中会产生庞大的数据量,且对时延的容忍度较低,这都对目前的网络传输能力提出了新的要求。如何解决该问题,是提升视频监控系统整体质量的关键所在。本文基于嵌入式Linux环境与H.264视频压缩技术,研究了视频监控系统中传输模块与控制模块的设计,并在SEED.DVS6467T开发板上对其进行了实现。为解决多路视频的并发流处理,使用多线程技术,设计实现了实时流的处理模型。然后根据相关协议要求,对压缩后的视频数据进行单元分割,使其符合P网络上进行传输的要求。并以此为基础,围绕视(来源:淘豆网[/p-4403874.html])频信息的实时性等关键需求,选用RTP协议作为传输手段,结合H.264编码结构的RTP负载格式,进行实时流的打包发送。同时,为了实现对实时流的控制,编写了配套的RTCP交互线程。为确保系统实时性,采用UDP协议进行底层传输。但该方法会在传输过程中大量丢失数据包,造成视频质量下降,甚至完全无法观看。本文首先针对有线网络多发的拥塞性掉包及无线网络中较突出的时延现象,研究了RTCP传输控制协议的计算与实现方法,综合丢包率与到达间隔抖动等信息指标,获得了表征当前网络传输情况的评估参量。然后在该参量的基础上,设计了级差式的控制方法,给出了传输速率的调整建议。最后针对H.264实时流的特点,通过改变I帧间隔、帧率、分辨率或是转为本地存储等方法,完成对输出速率的控制,在不理想的网络环境下尽可能提高视频的质量,以满足监控系统的要求。为验证以上工作的有效性,设计了相应的测试方法:首先在局域网环境下进行多路D1视频传输,视频清晰连贯,达到预期目标。然后在WCDMA-ADSL外网测试环境下,将调整前后传输结果进行对比(来源:淘豆网[/p-4403874.html]),验证了本文中控制方法的有效性。关键字:视频监控,RTP/RTCP,H.264,实时流.. ... ..重庆邮电大学硕士论文II.. ... ..pressiontechnology,thereal·time,highdefinitionvideomonitoringsystememerges.worktransmissioncapacity,thesolutionofwhichisalsothecruxoftheoperationofimprovingtotalqualityofvideomonitoringsystem.ThisarticlestudiestransmissionmoduleandcontrolmodulesdesigningofvideomonitoringsystembasedonembeddedLinuxandH.pressiontechnology,thenintheSEED-DVS6467Tdevelopmentboardtoachieve.Inorde(来源:淘豆网[/p-4403874.html])rtoprocessconcurrentflowofmulti-channelvideo,thepaperhasdesignedandrealizedthereal—timestreamprocessingmodebyusingMultithreadingtechnology.worktransmission.Takingitasabasis,andconsideringthecriticalrequirementofvideoinformationreal-time,themethodchooseRTPprotocolasitswayoftransmission。thenrepackageanddistributethereal-biningRTPloadinH.264codingstructure.Atthesametime,patibleRTCPinteractionaltreadisgiven.Toensuresystemreal-time,theunderlyingtransport(来源:淘豆网[/p-4403874.html])basedonUDPprotocolisused.However,thismethodmakesnoguaranteetothecorrectnessorreliabilityofinformationcontent.Asaresult,workresourcecannotfulfilltheneedofthroughput,alargelossofpacketizationwillbecausedduringtransmission,whichmakevideoqualitydeclineorevenunabletowatch.Firstly,putationandrealizationmethodsinallusiontoqualityoftransmission,worklossratiowhichdeeplyinfluencesvideoquality,andjitter,andSOon.Onthebasisoftheseparameters,gradationtypecontroll(来源:淘豆网[/p-4403874.html])ingmeansaredesignedandtheadvicesofadjustingtransmissionratearegiven.Finally,accordingtothecharacteristicsofH.264livestream,plishestheoutputspeedcontrollingandimprovesvideoqualitytofulfilltherequirementsofmonitoredcontrolsystemasfaraspossibleinnon-workenvironmentthroughchangingIDRframeintrarate、III.. ... ..重庆邮电大学硕士论文framerate、resolutionratioorshifttolocal—storage.Inordertotesttheeffectivenessoftheabovework,specifictestmethodisdesigned:firstly,makingm(来源:淘豆网[/p-4403874.html])ultiplexD1videotransmissioninLANenvironment.ifvideoisclearandconsistent,thentheexpectedgoalisachieved.paretheresultsofboththeunadjustedandtheadjustedundertheenvironmentofWCDMA-environmenttoconfirmthevalidityofcontrollingmeansgiveninthisarticle.Keywords:videomonitor,RTP/RTCP,H.264,Real-timedatastreamIV.. ... ..目录目录摘要……………………………………………………………………………………………………………………IABSTRACT……………………………………………………………………………………………………..III第一章绪论……………………………………………………………………………11.1视频(来源:淘豆网[/p-4403874.html])监控发展现状……………………………………………………………….11.2课题研究背景及意义…………………………………………………………….21.3论文研究内容与组织结构……………………………………………………….3第二章实时流(视频)相关技术……………………………………………………52.1YUV视频数据格式………………………………………………………………52.1.1YUv数据存储结构………………………………………………………….52.1.2YUV结构的不同压缩比…………………………………………………….62.2H.264视频编码技术应用…………………………………………………………72.2.1H.264编码分层结构…………………………………………………………72.2.2H.264结构中的NAL单元………………………………………………….82.3RTP/I盯CP协议应用………………………………………………………………92.3.1RTP传输协议………………………………………………………………102.3(来源:淘豆网[/p-4403874.html]).2RTCP传输协议……………………………………………………………..112.4本章小结…………………………………………………………………………12第三章实时视频传输系统的设计与实现………………………………………….133.1数字视频服务器(DVS)系统设计概述………………………………………133.1.1DM6467特点…………………………………………………………………………………….143.1.2采集译码器TVP5158功能概述……………………………………………143.1.3CodecEngine及开发环境…………………………………………………。153.1.4C/S模型中DVS服务器的数据处理流程设计……………………………153.2实时流传输模块的设计与实现…………………………………………………173.2.1多线程的实时流处理设计…………………………………………………173.2.2多线程的交互设计…………………………………………………………173.2.3DVS6467T嵌入式环境下多线程数据(来源:淘豆网[/p-4403874.html])交互的实现……………………….183.2.4H.264视频的RTP封装与发送…………………………………………….203.2.5发送缓冲区…………………………………………………………………223.3RTCP传输控制协议的设计…………………………………………………….243.3.1I汀CP工作流程……………………………………………………………..24V.. ... ..重庆邮电大学硕士论文3.3.2RTCP发送间隔设置………………………………………………………..243.3.3RTCP交互方法……………………………………………………………..253.4本章小结…………………………………………………………………………26第四章实时流传输系统控制模块的设计与实现………………………………….274.1实时流传输中拥塞问题的研究…………………………………………………274。2实时流传输控制方法的设计……………………………………………………304.2.1RTCP协议类………………………………………………………………..304.2.2RTCP协议字段的数据解析与计算………………………………………..304.2.3基于RTCP协议的网络传输状况评估与调整…………………………….374.3针对H.264的数据流控制实现…………………………………………………414.3.1H.264视频帧的调整………………………………………………………..424.3.2视频分辨率格式的调整……………………………………………………464.3.3数字视频服务器端的录像………………………………………………….494.3.4整体调控模型示意…………………………………………………………524.4本章小结…………………………………………………………………………54第五章测试验证…………………………………………………………………….555.1测试内容及测试目标……………………………………………………………555.2测试方法及步骤…………………………………………………………………555.2.1测试网络环境搭建…………………………………………………………555.2.2测试参数……………………………………………………………………565.3测试结果与分析…………………………………………………………………575.4本章小结…………………………………………………………………………60第六章总结与展望………………………………………………………………….616.1本文总结…………………………………………………………………………6l6.2对于下一步工作的展望…………………………………………………………61致谢…………………………………………………………………………………………………………………63参考文献……………………………………………………………………………….65攻读硕士学位期间从事的科研工作………………………………………………….69vI.. ... ..第一章绪论第一章绪论’、移动通信及视频压缩等信息技术迅猛发展的今天,多媒体信息越来越广泛地被应用于生产、生活中的各个方面。从2011中国网络视听产业论坛获悉【l】:2011年我国的在线视频用户量达3.94亿人,预计2012年将达到4.45亿人,超过美国成为最大的单一国家视频用户群体。据国家广电总局网络视听节目管理司统计,2011年我国三网融合试点地区的IPTV用户已经达350万户,其中作为最早的三网融合试点城市之一的上海已经成为世界上IP电视用户最大的城市。2011年我国手机视频用户达到1.13亿,2012年翻了一倍达2.82亿。因此,视频市场应用前景广阔。特别是在传统的安防监控领域中,人们不再满足于模拟信号的传输质量及磁带式的录像方式。在结合了新技术后,这个行业也正经历着前所未有的变革。·删ii瓣十:鬯誊嚣_篙:霎l’芸娑蒜!‘筹器篓鬻÷隧澎』匕’::+DVRl雌冀){1.1视频监控发展现状图1.1监控应用的发展视频监控技术按照主流设备发展过程,可以分为3个大的阶段,即20世纪70年代开始的模拟视频监控阶段、20世纪90年代开始的数字视频阶段及近几年兴起的智能网络视频监控阶段【2]。第一代视频监控系统,即模拟视频监控系统,TV(ClosedCircuitTelevision),顾名思义,其一般的构成部分只有摄像设备与监视器。摄像头采集视频信号之后,经由一条单一的数据线路,传输到对应的监视器上,由监视器端手动切换,选择不同的监控点图像。中间采用同轴电缆进行传输,没有对信号进行处理。虽然随着各种微处理机,视频还原技术的发展,该种系统在功能及可靠性上有了提高,但是仍然有很大的局限性。其主要缺点如下:.. ... ..重庆邮电大学硕士论文(1)由于模拟信号的特性,当长途传输时,同轴电缆上的信号极其容易产生衰耗及干扰,使得图像质量严重下降。这就决定了模拟视频监控仅适用于较小的范围,如单个楼层,小型超市等。(2)组网方式单一,无法联网,只能以点对点的方式进行。所以布设线路工作量巨大,扩展能力差。(3)一般使用录像带作为存储方式,不仅存储容量有限,成本也较高。且存储的数据已经被证明会随着时间而逐渐损失。随着数字技术及视频技术的广泛应用,人们开始使用性能强大的计算机进行图像信号的采集与处理,这极大地提高了视频质量,这种基于PC的系统即第二代的数字化视频监控系统,其核心是包含了音视频编码、视频存储、网络传输于一体的硬盘录像机(DVRDigitalVideoRecorder)。在架构方式、可靠性等方面都发生了很大的变化,人机交互界面更为友好。但由于网络传输技术和视频压缩技术的局限,系统较为封闭,例如同时采用MPEG.4方式进行编码的不同厂家产品,由于优化方式不同,编解码设备很可能无法相互通用,更无法建立较为大型的监控系统。到了20世纪90年代末,随着网络带宽增加、计算机处理能力迅速提高和存储容量的增大,以及各种实用视频信息处理技术的出现,视频监控进入了全数字化的网络时代,称为第三代远程视频监控系统,即全数字视频监控系统或网络数字视频监控系统【3】。同时,嵌入式技术在硬件和软件方面都有了较大发展,能够满足更加复杂和灵活的应用需求。利用嵌入式技术、视频压缩编码技术和网络传输控制技术为核心实现网络视频监控,在稳定性、实时性、处理速度、功能、价格、扩展性等方面和传统的视频监控系统相比都有着突出的优势【4】。而随着各地“平安城市”工程的推进,大型、综合、智能的网络化数字视频监控系统正在从理论逐步转化为现实。为了满足生产和生活中日渐增长的安全、管理等需求,新一代的视频监控系统,必将得到更为广泛的推广和应用。1.2课题研究背景及意义视频监控是安全防范系统的重要组成部分,它以其信息准确、实时性强、内容直观而被广泛应用于各种场合。近些年来,得益于网络、图像、信息等技术的迅猛发展,视频监控系统也正向着数字化、实时化及高清化方向发展。虽然视频压缩技术及传输带宽有了长足进步,但考虑到高清视频的数据量,完成其在Intemet上的实时传输,仍然是一个巨大挑战。我finn道传统的Intemet提供的是一种“尽力而为”(Besteffort)的通信服务【5】。主要的交付手段有面向连接的2.. ... ..播放器加载中,请稍候...
该用户其他文档
下载所得到的文件列表嵌入式Linux平台上H264实时流的传输与控制.pdf
文档介绍:
嵌入式Linux平台上H264实时流的传输与控制 分类号TN919.85密级玺j重庆邮电大学硕士学位论文论文题目嵌入式Linux平台上n.264实时流的传输与控制英文题目ThetransmissionandcontrolofH.264real—timedatastreambasedontheembeddedLinuxOS硕士研究生指导教师学科专业薛萌李校林正高级工程师通信与信息系统论文提交日期丝旦:!:!...
内容来自淘豆网转载请标明出处.Android 的视频编码 H263 MP4V H264的代码实现_Linux编程_Linux公社-Linux系统门户网站
你好,游客
Android 的视频编码 H263 MP4V H264的代码实现
来源:Linux社区&
作者:zblue78
这里只用HTC的G7做了H264的程序,谅解!
共同探讨,啥也不说的 直接上码
下载在Linux公社的1号FTP服务器里,下载地址:
在 2011年\4月\ 的视频编码 H263 MP4V H264的代码实现
下载方法见
AndroidManifest.xml
&version="1.0"&encoding="utf-8"&&
&xmlns:android="/apk/res/android"&&
&&&&&&package="com.zjzhang"&&
&&&&&&android:versionCode="1"&&
&&&&&&android:versionName="1.0"&&
&&&&&android:icon="@drawable/icon"&android:label="@string/app_name"&android:debuggable="true"&&
&&&&&&&&&android:name=".VideoCameraActivity"&&
&&&&&&&&&&&&&&&&&android:screenOrientation="landscape"&&
&&&&&&&&&&&&&&&&&&android:label="@string/app_name"&&
&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&android:name="android.intent.action.MAIN"&&&
&&&&&&&&&&&&&&&&&android:name="android.intent.category.LAUNCHER"&&&
&&&&&&&&&&&&&&
&&&&&&&&&&
&&&&android:minSdkVersion="3"&&&
&&&&&android:name="android.permission.INTERNET"&&
&&&&&android:name="android.permission.CAMERA"&&
&&&&&android:name="android.permission.RECORD_VIDEO"&&
&&&&&android:name="android.permission.RECORD_AUDIO"&&
&&&&&android:name="android.permission.WRITE_EXTERNAL_STORAGE"&&
&version="1.0"&encoding="utf-8"&&
&xmlns:android="/apk/res/android"&&
&&&&android:orientation="vertical"&&
&&&&android:layout_width="fill_parent"&&
&&&&android:layout_height="fill_parent"&&
&&&&&&&&&&&&android:id="@+id/surface_camera"&&
&&&&&&&&&&&&android:layout_width="176px"&&
&&&&&&&&&&&&android:layout_height="144px"&&
&&&&&&&&&&&&android:layout_alignParentRight="true"&&
&&&&&&&&&&&&android:layout_alignParentTop="true"&&
package&com. &&
import&java.io.DataInputS &&
import&java.io.F &&
import&java.io.IOE &&
import&java.io.InputS &&
import&java.io.RandomAccessF &&
import&android.app.A &&
import&android.content.C &&
import&android.os.B &&
import&android.graphics.PixelF &&
import&android.media.MediaR &&
import&android.net.LocalServerS &&
import&android.net.LocalS &&
import&android.net.LocalSocketA &&
import&android.util.L &&
import&android.view.SurfaceH &&
import&android.view.SurfaceV &&
import&android.view.V &&
import&android.view.W &&
import&android.view.WindowM &&
public&class&VideoCameraActivity&extends&Activity&implements&&
&&&&&&&&SurfaceHolder.Callback,&MediaRecorder.OnErrorListener, &&
&&&&&&&&MediaRecorder.OnInfoListener&{ &&
&&&&private&static&final&int&mVideoEncoder&=MediaRecorder.VideoEncoder.H264; &&
&&&&private&static&final&String&TAG&=&"VideoCamera"; &&
&&&&LocalSocket&receiver,& &&
&&&&LocalServerSocket& &&
&&&&private&MediaRecorder&mMediaRecorder&=&null; &&
&&&&boolean&mMediaRecorderRecording&=&false; &&
&&&&private&SurfaceView&mSurfaceView&=&null; &&
&&&&private&SurfaceHolder&mSurfaceHolder&=&null; &&
&&&&Thread&t; &&
&&&&Context&mContext&=&this; &&
&&&&RandomAccessFile&raf&=&null; &&
&&&&@Override&&
&&&&public&void&onCreate(Bundle&savedInstanceState)&{ &&
&&&&&&&&super.onCreate(savedInstanceState); &&
&&&&&&&&getWindow().setFormat(PixelFormat.TRANSLUCENT); &&
&&&&&&&&requestWindowFeature(Window.FEATURE_NO_TITLE); &&
&&&&&&&&getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, &&
&&&&&&&&&&&&&&&&WindowManager.LayoutParams.FLAG_FULLSCREEN); &&
&&&&&&&&setContentView(R.layout.main); &&
&&&&&&&&mSurfaceView&=&(SurfaceView)&this.findViewById(R.id.surface_camera); &&
&&&&&&&&SurfaceHolder&holder&=&mSurfaceView.getHolder(); &&
&&&&&&&&holder.addCallback(this); &&
&&&&&&&&holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); &&
&&&&&&&&mSurfaceView.setVisibility(View.VISIBLE); &&
&&&&&&&&receiver&=&new&LocalSocket(); &&
&&&&&&&&try&{ &&
&&&&&&&&&&&&lss&=&new&LocalServerSocket("VideoCamera"); &&
&&&&&&&&&&&&receiver.connect(new&LocalSocketAddress("VideoCamera")); &&
&&&&&&&&&&&&receiver.setReceiveBufferSize(<FONT color=#c); &&
&&&&&&&&&&&&receiver.setSendBufferSize(<FONT color=#c); &&
&&&&&&&&&&&&sender&=&lss.accept(); &&
&&&&&&&&&&&&sender.setReceiveBufferSize(<FONT color=#c); &&
&&&&&&&&&&&&sender.setSendBufferSize(<FONT color=#c); &&
&&&&&&&&}&catch&(IOException&e)&{ &&
&&&&&&&&&&&&finish(); &&
&&&&&&&&&&&&return; &&
&&&&&&&&} &&
&&&&@Override&&
&&&&public&void&onStart()&{ &&
&&&&&&&&super.onStart(); &&
&&&&@Override&&
&&&&public&void&onResume()&{ &&
&&&&&&&&super.onResume(); &&
&&&&@Override&&
&&&&public&void&onPause()&{ &&
&&&&&&&&super.onPause(); &&
&&&&&&&&if&(mMediaRecorderRecording)&{ &&
&&&&&&&&&&&&stopVideoRecording(); &&
&&&&&&&&&&&&try&{ &&
&&&&&&&&&&&&&&&&lss.close(); &&
&&&&&&&&&&&&&&&&receiver.close(); &&
&&&&&&&&&&&&&&&&sender.close(); &&
&&&&&&&&&&&&}&catch&(IOException&e)&{ &&
&&&&&&&&&&&&&&&&e.printStackTrace(); &&
&&&&&&&&&&&&} &&
&&&&&&&&} &&
&&&&&&&&finish(); &&
&&&&private&void&stopVideoRecording()&{ &&
&&&&&&&&Log.d(TAG,&"stopVideoRecording"); &&
&&&&&&&&if&(mMediaRecorderRecording&||&mMediaRecorder&!=&null)&{ &&
&&&&&&&&&&&&if&(t&!=&null) &&
&&&&&&&&&&&&&&&&t.interrupt(); &&
&&&&&&&&&&&&try&{ &&
&&&&&&&&&&&&&&&&raf.close(); &&
&&&&&&&&&&&&}&catch&(IOException&e)&{ &&
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&e.printStackTrace(); &&
&&&&&&&&&&&&} &&
&&&&&&&&&&&&releaseMediaRecorder(); &&
&&&&&&&&} &&
&&&&private&void&startVideoRecording()&{ &&
&&&&&&&&Log.d(TAG,&"startVideoRecording"); &&
&&&&&&&&(t&=&new&Thread()&{ &&
&&&&&&&&&&&&public&void&run()&{ &&
&&&&&&&&&&&&&&&&int&frame_size&=&<FONT color=#c; &&
&&&&&&&&&&&&&&&&byte[]&buffer&=&new&byte[<FONT color=#c&*&64]; &&
&&&&&&&&&&&&&&&&int&num,&number&=&0; &&
&&&&&&&&&&&&&&&&InputStream&fis&=&null; &&
&&&&&&&&&&&&&&&&try&{ &&
&&&&&&&&&&&&&&&&&&&&fis&=&receiver.getInputStream(); &&
&&&&&&&&&&&&&&&&}&catch&(IOException&e1)&{ &&
&&&&&&&&&&&&&&&&&&&&return; &&
&&&&&&&&&&&&&&&&} &&
&&&&&&&&&&&&&&&&try&{ &&
&&&&&&&&&&&&&&&&&&&&Thread.currentThread().sleep(<FONT color=#c); &&
&&&&&&&&&&&&&&&&}&catch&(InterruptedException&e1)&{ &&
&&&&&&&&&&&&&&&&&&&&e1.printStackTrace(); &&
&&&&&&&&&&&&&&&&} &&
&&&&&&&&&&&&&&&&number&=&0; &&
&&&&&&&&&&&&&&&&releaseMediaRecorder(); &&
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&while&(true)&{ &&
&&&&&&&&&&&&&&&&&&&&try&{ &&
&&&&&&&&&&&&&&&&&&&&&&&&num&=&fis.read(buffer,&number,&frame_size); &&
&&&&&&&&&&&&&&&&&&&&&&&&number&+=& &&
&&&&&&&&&&&&&&&&&&&&&&&&if&(num&&&frame_size)&{ &&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&break; &&
&&&&&&&&&&&&&&&&&&&&&&&&} &&
&&&&&&&&&&&&&&&&&&&&}&catch&(IOException&e)&{ &&
&&&&&&&&&&&&&&&&&&&&&&&&break; &&
&&&&&&&&&&&&&&&&&&&&} &&
&&&&&&&&&&&&&&&&} &&
&&&&&&&&&&&&&&&& &&
&&&&&&&&&&&&&&&&initializeVideo(); &&
&&&&&&&&&&&&&&&&number&=&0; &&
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&DataInputStream&dis=new&DataInputStream(fis); &&
&&&&&&&&&&&&&&&& &&
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&try&{ &&
&&&&&&&&&&&&&&&&&&&&dis.read(buffer,0,32); &&
&&&&&&&&&&&&&&&&}&catch&(IOException&e1)&{ &&
&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&e1.printStackTrace(); &&
&&&&&&&&&&&&&&&&} &&
&&&&&&&&&&&&&&&& &&
&&&&&&&&&&&&&&&& &&
&&&&&&&&&&&&&&&&try&{ &&
&&&&&&&&&&&&&&&&&&&&File&file&=&new&File("/sdcard/stream.h264"); &&
&&&&&&&&&&&&&&&&&&&&if&(file.exists()) &&
&&&&&&&&&&&&&&&&&&&&&&&&file.delete(); &&
&&&&&&&&&&&&&&&&&&&&raf&=&new&RandomAccessFile(file,&"rw"); &&
&&&&&&&&&&&&&&&&}&catch&(Exception&ex)&{ &&
&&&&&&&&&&&&&&&&&&&&Log.v("System.out",&ex.toString()); &&
&&&&&&&&&&&&&&&&}&&&&&&&&&&&&&&& &&
&&&&&&&&&&&&&&&& &&
&&&&&&&&&&&&&&&& &&
&&&&&&&&&&&&&&&& &&
&&&&&&&&&&&&&&&& &&
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&byte[]&h264sps={<FONT color=#c,<FONT color=#c,<FONT color=#c,<FONT color=#cC,(byte)&<FONT color=#c,<FONT color=#c,<FONT color=#cB,<FONT color=#c,(byte)&<FONT color=#c}; &&
&&&&&&&&&&&&&&&&byte[]&h264pps={<FONT color=#c,(byte)&0xCE,<FONT color=#c,(byte)&<FONT color=#c}; &&
&&&&&&&&&&&&&&&&byte[]&h264head={0,0,0,1}; &&
&&&&&&&&&&&&&&&&try&{ &&
&&&&&&&&&&&&&&&&&&&&raf.write(h264head); &&
&&&&&&&&&&&&&&&&&&&&raf.write(h264sps); &&
&&&&&&&&&&&&&&&&&&&&raf.write(h264head); &&
&&&&&&&&&&&&&&&&&&&&raf.write(h264pps); &&
&&&&&&&&&&&&&&&&}&catch&(IOException&e1)&{ &&
&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&e1.printStackTrace(); &&
&&&&&&&&&&&&&&&&} &&
&&&&&&&&&&&&&&&&while&(true) &&
&&&&&&&&&&&&&&&&{ &&
&&&&&&&&&&&&&&&&&&&&try&{ &&
&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&int&h264length=dis.readInt(); &&
&&&&&&&&&&&&&&&&&&&&&&&&number&=0; &&
&&&&&&&&&&&&&&&&&&&&&&&&raf.write(h264head); &&
&&&&&&&&&&&&&&&&&&&&&&&&while(number&h264length) &&
&&&&&&&&&&&&&&&&&&&&&&&&{ &&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&int&lost=h264length- &&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&num&=&fis.read(buffer,0,frame_size&lost?frame_size:lost); &&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&Log.d(TAG,String.format("H264&%d,%d,%d",&h264length,number,num)); &&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&number+= &&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&raf.write(buffer,&0,&num); &&
&&&&&&&&&&&&&&&&&&&&&&&&} &&
&&&&&&&&&&&&&&&&&&&&}&catch&(IOException&e)&{ &&
&&&&&&&&&&&&&&&&&&&&&&&&break; &&
&&&&&&&&&&&&&&&&&&&&} &&
&&&&&&&&&&&&&&&&} &&
&&&&&&&&&&&&} &&
&&&&&&&&}).start(); &&
&&&&private&boolean&initializeVideo()&{ &&
&&&&&&&&if&(mSurfaceHolder==null) &&
&&&&&&&&&&&&return&false; &&
&&&&&&&&mMediaRecorderRecording&=&true; &&
&&&&&&&&if&(mMediaRecorder&==&null) &&
&&&&&&&&&&&&mMediaRecorder&=&new&MediaRecorder(); &&
&&&&&&&&else&&
&&&&&&&&&&&&mMediaRecorder.reset(); &&
&&&&&&&&mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); &&
&&&&&&&&mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); &&
&&&&&&&&mMediaRecorder.setVideoFrameRate(20); &&
&&&&&&&&mMediaRecorder.setVideoSize(<FONT color=#c,&<FONT color=#c); &&
&&&&&&&&mMediaRecorder.setVideoEncoder(mVideoEncoder); &&
&&&&&&&&mMediaRecorder.setPreviewDisplay(mSurfaceHolder.getSurface()); &&
&&&&&&&&mMediaRecorder.setMaxDuration(0); &&
&&&&&&&&mMediaRecorder.setMaxFileSize(0); &&
&&&&&&&&mMediaRecorder.setOutputFile(sender.getFileDescriptor()); &&
&&&&&&&&try&{ &&
&&&&&&&&&&&&mMediaRecorder.setOnInfoListener(this); &&
&&&&&&&&&&&&mMediaRecorder.setOnErrorListener(this); &&
&&&&&&&&&&&&mMediaRecorder.prepare(); &&
&&&&&&&&&&&&mMediaRecorder.start(); &&
&&&&&&&&}&catch&(IOException&exception)&{ &&
&&&&&&&&&&&&releaseMediaRecorder(); &&
&&&&&&&&&&&&finish(); &&
&&&&&&&&&&&&return&false; &&
&&&&&&&&} &&
&&&&&&&&return&true; &&
&&&&private&void&releaseMediaRecorder()&{ &&
&&&&&&&&Log.v(TAG,&"Releasing&media&recorder."); &&
&&&&&&&&if&(mMediaRecorder&!=&null)&{ &&
&&&&&&&&&&&&if&(mMediaRecorderRecording)&{ &&
&&&&&&&&&&&&&&&&try&{ &&
&&&&&&&&&&&&&&&&&&&&mMediaRecorder.setOnErrorListener(null); &&
&&&&&&&&&&&&&&&&&&&&mMediaRecorder.setOnInfoListener(null); &&
&&&&&&&&&&&&&&&&&&&&mMediaRecorder.stop(); &&
&&&&&&&&&&&&&&&&}&catch&(RuntimeException&e)&{ &&
&&&&&&&&&&&&&&&&&&&&Log.e(TAG,&"stop&fail:&"&+&e.getMessage()); &&
&&&&&&&&&&&&&&&&} &&
&&&&&&&&&&&&&&&&mMediaRecorderRecording&=&false; &&
&&&&&&&&&&&&} &&
&&&&&&&&&&&&mMediaRecorder.reset(); &&
&&&&&&&&&&&&mMediaRecorder.release(); &&
&&&&&&&&&&&&mMediaRecorder&=&null; &&
&&&&&&&&} &&
&&&&@Override&&
&&&&public&void&surfaceChanged(SurfaceHolder&holder,&int&format,&int&w,&int&h)&{ &&
&&&&&&&&Log.d(TAG,&"surfaceChanged"); &&
&&&&&&&&mSurfaceHolder&=& &&
&&&&&&&&if&(!mMediaRecorderRecording)&{ &&
&&&&&&&&&&&&initializeVideo(); &&
&&&&&&&&&&&&startVideoRecording(); &&
&&&&&&&&} &&
&&&&@Override&&
&&&&public&void&surfaceCreated(SurfaceHolder&holder)&{ &&
&&&&&&&&Log.d(TAG,&"surfaceCreated"); &&
&&&&&&&&mSurfaceHolder&=& &&
&&&&@Override&&
&&&&public&void&surfaceDestroyed(SurfaceHolder&holder)&{ &&
&&&&&&&&Log.d(TAG,&"surfaceDestroyed"); &&
&&&&&&&&mSurfaceHolder&=&null; &&
&&&&@Override&&
&&&&public&void&onInfo(MediaRecorder&mr,&int&what,&int&extra)&{ &&
&&&&&&&&switch&(what)&{ &&
&&&&&&&&case&MediaRecorder.MEDIA_RECORDER_INFO_UNKNOWN: &&
&&&&&&&&&&&&Log.d(TAG,&"MEDIA_RECORDER_INFO_UNKNOWN"); &&
&&&&&&&&&&&&break; &&
&&&&&&&&case&MediaRecorder.MEDIA_RECORDER_INFO_MAX_DURATION_REACHED: &&
&&&&&&&&&&&&Log.d(TAG,&"MEDIA_RECORDER_INFO_MAX_DURATION_REACHED"); &&
&&&&&&&&&&&&break; &&
&&&&&&&&case&MediaRecorder.MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED: &&
&&&&&&&&&&&&Log.d(TAG,&"MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED"); &&
&&&&&&&&&&&&break; &&
&&&&&&&&} &&
&&&&@Override&&
&&&&public&void&onError(MediaRecorder&mr,&int&what,&int&extra)&{ &&
&&&&&&&&if&(what&==&MediaRecorder.MEDIA_RECORDER_ERROR_UNKNOWN)&{ &&
&&&&&&&&&&&&Log.d(TAG,&"MEDIA_RECORDER_ERROR_UNKNOWN"); &&
&&&&&&&&&&&&finish(); &&
&&&&&&&&} &&
相关资讯 & & &
& (08/11/:27)
& (05/06/:13)
& (03/13/:31)
& (05/31/:15)
& (04/02/:07)
& (02/17/:49)
图片资讯 & & &
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款
www.muu.cc 发表于 www.muu.cc
(0) aa 发表于 aaa

我要回帖

更多关于 ip摄像头客户端 的文章

 

随机推荐