HLS流媒体协议简介

1、工作原理

HLS协议的工作原理是把整个流分成一个个小的基于HTTP的文件来下载,每次只下载一些。

2、简述

在服务器端,流媒体文件被切割成一个一个的小分片,这些小分片有着相同的时长(常用10s),每一个小分片是一个ts文件。同时 产生一个索引文件(m3u8),索引文件里存放了ts文件的URL。

客户端请求方式分两种,一种是点播(vod),一种是直播(live)

vod:客户端一次获取整个m3u8文件,按照里面的URL获取ts文件,采用HTTP协议。

live:由于M3u8文件时实时更新的,所以客户端每隔一段时间获取m3u8文件,再根据里面的URL获取ts文件,采用HTTP协议。

3、HLS的请求流程

  • 1 http 请求 m3u8 的 url。
  • 2 服务端返回一个 m3u8 的播放列表,这个播放列表是实时更新的,一般一次给出5段数据的 url。
  • 3 客户端解析 m3u8 的播放列表,再按序请求每一段的 url,获取 ts 数据流。

4、索引文件(m3u8)格式

(1)主索引

#EXTM3U //每一个m3u8文件的第一句必须是这个tag,起标示作用

#EXT-X-VERSION:3 // 用于标示协议版本

#EXT-X-STREAM-INF : [attribute=value][,attribute=value]*

标签的属性列表中直接指明当前流是VIDEO还是AUDIO

属性 :

BANDWIDTH 指定码率

PROGRAM-ID 唯一ID (这个属性在后面的协议版本废除了)

CODECS 指定流的编码类型

#EXT-X-STREAM-INF:PROGRAM-ID=1,PUBLISHEDTIME=1462118775,CURRENTTIME=1462155858,BANDWIDTH=400000,RESOLUTION=854x480

30647_JIjP2_400/index.m3u8?Dnion_vsnae=30647_JIjP2

 

(2)子索引

#EXTM3U

#EXT-X-VERSION:3

// 每一个media URI 在 PlayList中只有唯一的序号,相邻之间序号+1

(上面那个URL, 不断请求的过程中能不断获取子索引, 每一次获取下来的都能发现EXT-X-MEDIA-SEQUENCE会不断增大)

#EXT-X-MEDIA-SEQUENCE:5647 //指明了出现在播放列表文件中的第一个URL的序列号

//每一份媒体文件的时间, 以秒为单位, 这里是10秒一份

#EXT-X-TARGETDURATION:10

//#EXTINF ,</span></p> <p><span style="color:#86ca5e;">// 每一份媒体文件的详细信息, duration : 媒体持续时间, 应该四舍五入为整数,上面的例子,9.560就是这一份媒体文件以秒为单位的持续时间</span></p> <p><span style="color:#86ca5e;">//title : 1462167932532_1462167932532.ts?Dnion_vsnae=30647_JIjP2这个是这一份媒体文件的URL地址,</span></p> <p>#EXTINF:9.560,1462167932532_1462167932532.ts?Dnion_vsnae=30647_JIjP2</p> <p>#EXTINF:6.520,1462167942133_1462167942133.ts?Dnion_vsnae=30647_JIjP2</p> <p>#EXTINF:9.960,1462167948685_1462167948685.ts?Dnion_vsnae=30647_JIjP2</p> <p> </p> <p>写清楚一点就是如下:</p> <p></p> <blockquote> <p>#EXTM3U m3u文件头</p> <p>#EXT-X-MEDIA-SEQUENCE 第一个TS分片的序列号</p> <p>#EXT-X-TARGETDURATION 每个分片TS的最大的时长</p> <p>#EXT-X-ALLOW-CACHE 是否允许cache</p> <p>#EXT-X-ENDLIST m3u8文件结束符</p> <p>#EXTINF 指定每个媒体段(ts)的持续时间(秒),仅对其后面的URI有效 mystream-12.ts</p> <p></p> </blockquote> <p></p> </div> </div> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1304617044477513728"></div> <script type="text/javascript" src="/views/front/js/chanyan.js"></script> <!-- 文章页-底部 动态广告位 --> <div class="youdao-fixed-ad" id="detail_ad_bottom"></div> </div> <div class="col-md-3"> <div class="row" id="ad"> <!-- 文章页-右侧1 动态广告位 --> <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_1"> </div> </div> <!-- 文章页-右侧2 动态广告位 --> <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_2"></div> </div> <!-- 文章页-右侧3 动态广告位 --> <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_3"></div> </div> </div> </div> </div> </div> </div> <div class="container"> <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(音视频)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1833393506530455552.htm" title="2023-07-25《优势教养》127" target="_blank">2023-07-25《优势教养》127</a> <span class="text-muted">每天坚持</span> <div>20230725四点三十五星期二《优势教养》127昨天晚上睡得早,我八点五十多就到家了,催着孩子们睡觉,孩子们睡的就早,我在水里边洗了一会,拉了几下单杠,顺着老路回来了,昨天温度比较低,感觉能听进去音视频。昨天下午没有怎么睡着,晚上也感觉没有精神。昨天下午老婆带着儿女去收拾牙,我在家没事,也没有写文章,昨天上午去姐家看她家修水,耽误昨天的两千字的电子日记也没有完成,昨天的作业打卡还没有设计好,昨天</div> </li> <li><a href="/article/1833361033603936256.htm" title="音视频编解码技术(二):AAC 音频编码技术" target="_blank">音视频编解码技术(二):AAC 音频编码技术</a> <span class="text-muted">音视频开发老马</span> <a class="tag" taget="_blank" href="/search/%E9%9F%B3%E8%A7%86%E9%A2%91%E5%BC%80%E5%8F%91/1.htm">音视频开发</a><a class="tag" taget="_blank" href="/search/%E6%B5%81%E5%AA%92%E4%BD%93%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">流媒体服务器</a><a class="tag" taget="_blank" href="/search/Android%E9%9F%B3%E8%A7%86%E9%A2%91%E5%BC%80%E5%8F%91/1.htm">Android音视频开发</a><a class="tag" taget="_blank" href="/search/%E8%A7%86%E9%A2%91%E7%BC%96%E8%A7%A3%E7%A0%81/1.htm">视频编解码</a><a class="tag" taget="_blank" href="/search/%E9%9F%B3%E8%A7%86%E9%A2%91/1.htm">音视频</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%8D%8F%E8%AE%AE/1.htm">网络协议</a><a class="tag" taget="_blank" href="/search/%E5%AE%9E%E6%97%B6%E9%9F%B3%E8%A7%86%E9%A2%91/1.htm">实时音视频</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a> <div>一、AAC编码概述AAC是高级音频编码(AdvancedAudioCoding)的缩写,出现于1997年,最初是基于MPEG-2的音频编码技术,目的是取代MP3格式。2000年,MPEG-4标准出台,AAC重新集成了其它技术包括SBR或PS特性,目前AAC可以定义为⼀种由MPEG-4标准定义的有损音频压缩格式二、AAC编码规格简述AAC共有9种规格,以适应不同的场合的需要:MPEG-2AACLC低</div> </li> <li><a href="/article/1833358389023961088.htm" title="ffplay音视频同步分析" target="_blank">ffplay音视频同步分析</a> <span class="text-muted">攻城狮百里</span> <a class="tag" taget="_blank" href="/search/%E9%9F%B3%E8%A7%86%E9%A2%91/1.htm">音视频</a><a class="tag" taget="_blank" href="/search/%E9%9F%B3%E8%A7%86%E9%A2%91/1.htm">音视频</a><a class="tag" taget="_blank" href="/search/C%2B%2B/1.htm">C++</a><a class="tag" taget="_blank" href="/search/ffplay/1.htm">ffplay</a> <div>ffplay默认也是采用的这种同步策略。主流程ffplay中将视频同步到音频的主要方案是,如果视频播放过快,则重复播放上一帧,以等待音频;如果视频播放过慢,则丢帧追赶音频。这一部分的逻辑实现在视频输出函数video_refresh中,分析代码前,我们先来回顾下这个函数的流程图:在这个流程中,“计算上一帧显示时长”这一步骤至关重要。先来看下代码:staticvoidvideo_refresh(voi</div> </li> <li><a href="/article/1833321206091182080.htm" title="音视频入门基础:WAV专题(5)——FFmpeg源码中解码WAV Header的实现" target="_blank">音视频入门基础:WAV专题(5)——FFmpeg源码中解码WAV Header的实现</a> <span class="text-muted">cuijiecheng2018</span> <a class="tag" taget="_blank" href="/search/FFmpeg%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90/1.htm">FFmpeg源码分析</a><a class="tag" taget="_blank" href="/search/%E9%9F%B3%E8%A7%86%E9%A2%91%E6%8A%80%E6%9C%AF/1.htm">音视频技术</a><a class="tag" taget="_blank" href="/search/%E9%9F%B3%E8%A7%86%E9%A2%91/1.htm">音视频</a><a class="tag" taget="_blank" href="/search/ffmpeg/1.htm">ffmpeg</a> <div>=================================================================音视频入门基础:WAV专题系列文章:音视频入门基础:WAV专题(1)——使用FFmpeg命令生成WAV音频文件音视频入门基础:WAV专题(2)——WAV格式简介音视频入门基础:WAV专题(3)——FFmpeg源码中,判断某文件是否为WAV音频文件的实现音视频入门基础:W</div> </li> <li><a href="/article/1833087688450863104.htm" title="OpenHarmony 5.0 纯血鸿蒙系统" target="_blank">OpenHarmony 5.0 纯血鸿蒙系统</a> <span class="text-muted">ejinxian</span> <a class="tag" taget="_blank" href="/search/harmonyos/1.htm">harmonyos</a><a class="tag" taget="_blank" href="/search/%E5%8D%8E%E4%B8%BA/1.htm">华为</a> <div>OpenHarmony-v5.0-Beta1版本已于2024-06-20发布。OpenHarmony5.0Beta1版本标准系统能力持续完善,ArkUI完善了组件通过CAPI调用的能力;应用框架细化了生命周期管理能力,完善了应用拉起、跳转的能力;分布式软总线连接能力和规格进一步增强;媒体完善了框架能力、视频编解码能力、音视频的应用能力,媒体库丰富了使用场景,提供更好的使用体验。OpenHarmon</div> </li> <li><a href="/article/1833018210677518336.htm" title="即时通讯项目" target="_blank">即时通讯项目</a> <span class="text-muted">NingDream816</span> <a class="tag" taget="_blank" href="/search/%E5%8D%B3%E6%97%B6%E9%80%9A%E8%AE%AF%E9%A1%B9%E7%9B%AE/1.htm">即时通讯项目</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/%E7%BC%93%E5%AD%98/1.htm">缓存</a><a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a> <div>即时通讯项目需求分析功能约束可行解更优解高性能接入层优化存储层优化消息时序一致性高可用需求分析功能添加好友聊天会话列表单聊AB群聊多设备登录消息漫游消息已读,查看已读/未读列表视频通话(学音视频技术时补上)语音通话约束DAU(DailyActiveUsers,日活跃用户数量)10亿假设每人平均每天发100条消息,1000Mli*100/86400=12MliQPS(Queriespersecond</div> </li> <li><a href="/article/1832841469266849792.htm" title="MediaStream 的媒体流对象 (stream) 和流媒体轨道 (track) 详解" target="_blank">MediaStream 的媒体流对象 (stream) 和流媒体轨道 (track) 详解</a> <span class="text-muted">Wu Youlu</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a> <div>navigator.mediaDevices.getUserMedia和MediaStream是实时音视频处理的重要API。通过这些API,可以从摄像头、麦克风或其他设备捕获音视频流,应用于视频通话、录制等场景。本文将介绍navigator.mediaDevices.getUserMedia的参数配置、MediaStream的传参、属性和方法,配合详细的代码示例,特别是如何动态添加和移除音视频轨道</div> </li> <li><a href="/article/1832555662278750208.htm" title="ffmpeg一些基本用法" target="_blank">ffmpeg一些基本用法</a> <span class="text-muted">980205</span> <a class="tag" taget="_blank" href="/search/ffmpeg/1.htm">ffmpeg</a><a class="tag" taget="_blank" href="/search/%E6%B5%81%E5%AA%92%E4%BD%93/1.htm">流媒体</a> <div>来源:ffmpeg一些基本用法|王石头的博客(iwangsen.com)音视频操作,几乎绕不开ffmpeg,因为市面上绝大多数音视频播放软件、转码软件,内核都是它。它非常的强大,轻松几条命令就可以顺利完成你想做的工作我来汇总一些经常使用的命令首先在cmd窗口进入到ffmpeg目录里面最简单的视频格式转换ffmpeg-iD:\Media\IMG_0873.MOV-ccopyD:\Media\outp</div> </li> <li><a href="/article/1832549439101825024.htm" title="走自己的路,随自己的心" target="_blank">走自己的路,随自己的心</a> <span class="text-muted">减读</span> <div>“走自己的路,让别人去说吧”,就是一种人生态度。别人去说,是在浪费他自己的时间,而你只管活好自己的生活。被大家熟知的超级演说家总冠军刘媛媛曾经在她的抖音视频中说:“不喜欢我的人,为啥不是你改是我改,你让别人改,别人不改,然后你就会很痛苦。”最后一句“你不喜欢我,你自己改吧。”未尝不是一种只随我心的人生态度。还记得那位今年在《脱口秀大会》上爆火的北大女生李雪琴吗?她看起一脸“丧”劲儿,凭着自己的智慧</div> </li> <li><a href="/article/1832451665609977856.htm" title="抖音视频去水印,获取无水印原视频的方法及过程分析。附上代码截图,很简单,主要是分析过程废了些时间。" target="_blank">抖音视频去水印,获取无水印原视频的方法及过程分析。附上代码截图,很简单,主要是分析过程废了些时间。</a> <span class="text-muted">liqizheng_</span> <a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a><a class="tag" taget="_blank" href="/search/php/1.htm">php</a> <div>抖音视频去水印获取原视频地址的方法及过程分析。附上代码截图,很简单,主要是分析过程废了些时间.前言:抖音视频自己保存的都带有抖音的logo和视频片尾,让一些做自媒体和搬运工的朋友感到不爽,想要搬运还有水印,于是网上出现好多视频无水印解析的网站,包括微信小程序和公众号都在做,引流也确实可以,但是大部分都是调用的其它网站提供的解析接口,往往一些还要付费,或者不稳定各种问题。,因为他们都不是从最原始的代</div> </li> <li><a href="/article/1832444974633938944.htm" title="抖音视频怎么去水印保存到手机上" target="_blank">抖音视频怎么去水印保存到手机上</a> <span class="text-muted">Java搬砖组长</span> <a class="tag" taget="_blank" href="/search/%E9%9F%B3%E8%A7%86%E9%A2%91/1.htm">音视频</a> <div>抖音已经成为人们日常消遣的主要平台之一。无论是搞笑的视频、感人的短片,还是充满创意的短视频,抖音总能给人带来无限的欢乐与惊喜。有时候我们可能会想要将喜欢的视频保存到手机上,方便离线观看或与朋友分享,但这些视频通常会带有抖音的水印。这篇文章将向大家介绍如何去除抖音视频的水印并保存到手机上。1.使用第三方工具网站去水印许多第三方应用程序和网站可以帮助用户去除抖音视频的水印。例如,“视频解析器(www.</div> </li> <li><a href="/article/1832070066338885632.htm" title="FFmpeg任意文件读取漏洞分析" target="_blank">FFmpeg任意文件读取漏洞分析</a> <span class="text-muted">音视频开发老马</span> <a class="tag" taget="_blank" href="/search/ffmpeg/1.htm">ffmpeg</a> <div>背景介绍FFmpeg是一套目前非常流行的可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。它提供了录制、转换以及流化音视频的完整解决方案。目前有非常多的视音频软件或是视频网站、手机APP都采用了这个库,但是这个库历史上曝出的漏洞也非常之多。这次的漏洞是利用了ffmpeg可以处理HLS播放列表的功能,在AVI文件中的GAB2字幕块中嵌入了一个HLS文件,然后提供给ffmpeg进行转</div> </li> <li><a href="/article/1832039561476272128.htm" title="rk3588音视频硬件编解码介绍" target="_blank">rk3588音视频硬件编解码介绍</a> <span class="text-muted">三十度角阳光的问候</span> <a class="tag" taget="_blank" href="/search/%E9%9F%B3%E8%A7%86%E9%A2%91/1.htm">音视频</a> <div>目录ffmpegrk3588系列芯片编程方法最终的输出结果ffmpeg示例程序ffmpeg音视频处理中通常是用ffmpeg进行软件音视频编解码aac/h264编码,但其运行速度过慢消耗cpu占用率。因此需要寻找音视频硬件编解码方法。rk3588系列芯片自带音视频硬件编解码框架ffmedia或者mpp,其内部原理是配合内部硬件rga内存,把音视频数据读入内部rga内存中进行Mpp硬件编解码计算,包括</div> </li> <li><a href="/article/1831735356047847424.htm" title="OpenglEs之EGL环境搭建" target="_blank">OpenglEs之EGL环境搭建</a> <span class="text-muted">FlyerGo</span> <a class="tag" taget="_blank" href="/search/Opengl/1.htm">Opengl</a><a class="tag" taget="_blank" href="/search/%E9%9F%B3%E8%A7%86%E9%A2%91/1.htm">音视频</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/opengl/1.htm">opengl</a> <div>前言前面我们发布了一系列的入门教程,例如C++系列的指针扫盲、多线程的使用等,JNI入门系列,ffmpeg入门系列等,有感兴趣的童鞋们可以关注往回自行查阅。今天我们的主题依然是音视频开发的范畴,做过音视频开发的都知道Opengl也是音视频开发中的一项重要技能,特别是涉及到视频录制、特效处理、画质渲染细分功能。因此后续笔者打算再出一系列的OpenglES的学习笔记,希望能与大家共同温故知新。因为前面</div> </li> <li><a href="/article/1831578158088941568.htm" title="FFmpeg的入门实践系列七(滤镜)" target="_blank">FFmpeg的入门实践系列七(滤镜)</a> <span class="text-muted">星海逐愿</span> <a class="tag" taget="_blank" href="/search/ffmpeg/1.htm">ffmpeg</a><a class="tag" taget="_blank" href="/search/ffmpeg/1.htm">ffmpeg</a> <div>欢迎诸位来阅读在下的博文~在这里,在下会不定期发表一些浅薄的知识和经验,望诸位能与在下多多交流,共同努力文章目录前期博客一、滤镜过滤器filter的简介FFmpeg编程的四大结构体1.滤镜AVFilter2.滤镜图AVFilterGraph3.滤镜实例AVFilterContext4.滤镜输入输出参数AVFilterInOut二、使用滤镜加工音视频前期博客FFmpeg的入门实践系列一(环境搭建)F</div> </li> <li><a href="/article/1831575636024586240.htm" title="Linux 编译 qtav,QtAV 1.3.3 发布,跨平台音视频播放库" target="_blank">Linux 编译 qtav,QtAV 1.3.3 发布,跨平台音视频播放库</a> <span class="text-muted">丶本心灬</span> <a class="tag" taget="_blank" href="/search/Linux/1.htm">Linux</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E8%AF%91/1.htm">编译</a><a class="tag" taget="_blank" href="/search/qtav/1.htm">qtav</a> <div>QtAV1.3.3发布-支持调用NVIDIA的cuvid库进行CUDA硬解。支持平台:windows,linux。(是linux上第一个支持cuda硬解的么?)。有些视频播放会抖动,目前原因还不清楚。4k硬解画面貌似有点花,效果不如lavfilters好。-OpenGL和OpenGLES2支持16-bit的YUV渲染,包括9,10,12,14,16bit的little/bigendian的yuv。</div> </li> <li><a href="/article/1831575383401656320.htm" title="ffmpeg命令详解" target="_blank">ffmpeg命令详解</a> <span class="text-muted">weixin_42178492</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%9F%BA%E7%A1%80/1.htm">基础</a><a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C%E7%9B%B8%E5%85%B3/1.htm">工作相关</a><a class="tag" taget="_blank" href="/search/%E7%BB%8F%E9%AA%8C%E9%9B%86%E9%94%A6/1.htm">经验集锦</a> <div>ffmpeg命令详解(转)FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。[百度百科]ffmpeg使用语法ffmpeg使用语法:ffmpeg[[o</div> </li> <li><a href="/article/1831552318630359040.htm" title="cdn缓存服务器有网站图片,cdn缓存服务器上传图片" target="_blank">cdn缓存服务器有网站图片,cdn缓存服务器上传图片</a> <span class="text-muted">贝尼玛</span> <a class="tag" taget="_blank" href="/search/cdn%E7%BC%93%E5%AD%98%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%9C%89%E7%BD%91%E7%AB%99%E5%9B%BE%E7%89%87/1.htm">cdn缓存服务器有网站图片</a> <div>cdn缓存服务器上传图片内容精选换一换图片组件作为一个基本组件,用于展示图片。用户可以通过属性“图片地址”,来选择图片。体验馆提供了各场景下的无服务器构造方案,指导您端到端地构建一个无服务器案例。对于每个案例都介绍了如下内容,包含的案例如表1所示。动态展示案例架构图。动态展示案例的实际效果。使用动图分步骤演示构建过程。cdn缓存服务器上传图片相关内容IM系统如何提升用户发送、浏览图片和音视频消息的</div> </li> <li><a href="/article/1831389313313632256.htm" title="Android 音视频开发:详讲 AudioTrack 播放PCM音频【附源码】" target="_blank">Android 音视频开发:详讲 AudioTrack 播放PCM音频【附源码】</a> <span class="text-muted">小驰行动派</span> <a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/%E9%9F%B3%E8%A7%86%E9%A2%91/1.htm">音视频</a><a class="tag" taget="_blank" href="/search/pcm/1.htm">pcm</a> <div>一、AudioTrack基本使用AudioTrack类可以完成Android平台上音频数据的输出任务。AudioTrack有两种数据加载模式(MODE_STREAM和MODE_STATIC),对应的是数据加载模式和音频流类型,对应着两种完全不同的使用场景。MODE_STREAM:在这种模式下,通过write一次次把音频数据写到AudioTrack中。这和平时通过write系统调用往文件中写数据类似</div> </li> <li><a href="/article/1831312559957962752.htm" title="基于发布-订阅模型的音视频流分发框架" target="_blank">基于发布-订阅模型的音视频流分发框架</a> <span class="text-muted">静止了 所有的花开</span> <a class="tag" taget="_blank" href="/search/%E9%9F%B3%E8%A7%86%E9%A2%91/1.htm">音视频</a> <div>有时需要同时网络推流和把流封装为某格式,或做一些其它操作。这就需要一个分发流的机制,把同一路流分发给多个使用者去操作,下面实现了一个简易的线程安全的音视频流分发框架。代码如下:avStreamHub.h#ifndefSTREAMHUB_H#defineSTREAMHUB_H#include#includetypedefvoid(*AVStreamCallback)(void*data,size_t</div> </li> <li><a href="/article/1831226727108538368.htm" title="音视频开发—FFmpeg打开麦克风,采集音频数据" target="_blank">音视频开发—FFmpeg打开麦克风,采集音频数据</a> <span class="text-muted">Trump. yang</span> <a class="tag" taget="_blank" href="/search/%E9%9F%B3%E8%A7%86%E9%A2%91%E5%BC%80%E5%8F%91/1.htm">音视频开发</a><a class="tag" taget="_blank" href="/search/%E9%9F%B3%E8%A7%86%E9%A2%91/1.htm">音视频</a><a class="tag" taget="_blank" href="/search/ffmpeg/1.htm">ffmpeg</a> <div>文章目录1.使用命令行实现采集PCM数据2.使用代码实现3.播放PCM4.PCM转换为WAV1.使用命令行实现采集PCM数据确保你的系统有FFmpeg安装。你可以通过在终端运行ffmpeg-version来检查是否已安装。找出你的麦克风设备名。在Linux中,你可以使用arecord-l命令列出所有的音频录制设备。使用FFmpeg录制音频。下面是一个基本的命令示例,它使用FFmpeg从麦克风捕获音</div> </li> <li><a href="/article/1831167474188513280.htm" title="Qt/C++ 音视频开发 - FFmpeg保存裸流" target="_blank">Qt/C++ 音视频开发 - FFmpeg保存裸流</a> <span class="text-muted">鱼弦</span> <a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD%E6%97%B6%E4%BB%A3/1.htm">人工智能时代</a><a class="tag" taget="_blank" href="/search/qt/1.htm">qt</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/%E9%9F%B3%E8%A7%86%E9%A2%91/1.htm">音视频</a> <div>Qt/C++音视频开发-FFmpeg保存裸流介绍FFmpeg是一个开源的多媒体框架,能够处理音频、视频及其他多媒体文件和流。裸流指的是未经封装处理的原始音视频数据。使用FFmpeg保存裸流,可以通过高效的方式处理并存储音视频数据。应用使用场景实时流媒体传输:在没有时间进行复杂封装的情况下,将音视频数据直接传输。低延迟应用:减少因为封装产生的冗余数据和延迟。数据分析:对原始音视频数据进行深入分析时,</div> </li> <li><a href="/article/1830968314814361600.htm" title="GB/T28181规范和JT1078交通部标差异" target="_blank">GB/T28181规范和JT1078交通部标差异</a> <span class="text-muted">音视频牛哥</span> <a class="tag" taget="_blank" href="/search/GB28181%E6%8E%A5%E5%85%A5/1.htm">GB28181接入</a><a class="tag" taget="_blank" href="/search/SmartGBD/1.htm">SmartGBD</a><a class="tag" taget="_blank" href="/search/GB28181%E5%AE%89%E5%8D%93%E7%AB%AF/1.htm">GB28181安卓端</a><a class="tag" taget="_blank" href="/search/GB28181/1.htm">GB28181</a><a class="tag" taget="_blank" href="/search/SDK/1.htm">SDK</a><a class="tag" taget="_blank" href="/search/GB28181%E5%B9%B3%E5%8F%B0/1.htm">GB28181平台</a><a class="tag" taget="_blank" href="/search/JT1078/1.htm">JT1078</a><a class="tag" taget="_blank" href="/search/GB28181/1.htm">GB28181</a><a class="tag" taget="_blank" href="/search/JT1078/1.htm">JT1078</a><a class="tag" taget="_blank" href="/search/GB28181%E5%AF%B9%E6%8E%A5/1.htm">GB28181对接</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E7%89%9B%E7%9B%B4%E6%92%ADSDK/1.htm">大牛直播SDK</a> <div>技术背景好多开发者区分不太清楚GB/T28181和JT1078规范,实际上,二者在规范定义、技术特点、过检认证以及应用场景等方面均存在显著差异。两者各有其适用领域和优势,但在某些特定场景下也可能需要相互协作以实现更全面的监控和管理。规范定义与适用范围GB28181:全称为《公共安全视频监控联网系统信息传输、交换、控制技术要求》,是我国音视频领域的一项关键标准,由公安部科技信息化局提出,并由全国安全</div> </li> <li><a href="/article/1830910331828924416.htm" title="抖音视频如何下载保存到相册:详细教程" target="_blank">抖音视频如何下载保存到相册:详细教程</a> <span class="text-muted">Java搬砖组长</span> <a class="tag" taget="_blank" href="/search/%E9%9F%B3%E8%A7%86%E9%A2%91/1.htm">音视频</a> <div>随着抖音的风靡,越来越多的人沉浸在短视频的世界中,观看各种搞笑、有趣、甚至感人的视频。很多用户都希望能够将喜欢的抖音视频保存到自己的手机相册中,方便随时观看或分享给朋友。本文将详细介绍如何下载抖音视频并保存到相册的方法。一、官方直接下载方法抖音本身就提供了一种简单直接的保存视频的方法,但仅适用于部分公开视频。打开抖音:确保你已经安装了最新版本的抖音应用,并登录你的账户。寻找你想下载的视频:在抖音的</div> </li> <li><a href="/article/1830812079565664256.htm" title="哪里可以找到配音演员,怎么找配音视频" target="_blank">哪里可以找到配音演员,怎么找配音视频</a> <span class="text-muted">配音就业圈</span> <div>一、配音演员的找到方式寻找配音演员可以通过以下途径:兼职副业推荐公众号,配音新手圈,声优配音圈,新配音兼职圈,配音就业圈,鼎音副业,有声新手圈,每天更新各种远程工作与在线兼职,职位包括:写手、程序开发、剪辑、设计、翻译、配音、无门槛、插画、翻译、等等。。。每日更新兼职。1.在线平台:可以通过各类配音演员招聘网站或社交媒体平台发布招聘信息,并筛选合适的候选人。2.媒体公司:可以联系专业的媒体公司,他</div> </li> <li><a href="/article/1830696140505444352.htm" title="不同声线配音台词素材女,单人配音视频3分钟左右素材" target="_blank">不同声线配音台词素材女,单人配音视频3分钟左右素材</a> <span class="text-muted">声优配音圈</span> <div>一、不同声线配音台词素材女的常规文章类大纲声线配音是声优们的一项重要技能,不同声线能为不同角色注入不同的个性和特点。以下是一些适合女性声线的台词素材:兼职副业推荐公众号,配音新手圈,声优配音圈,新配音兼职圈,配音就业圈,鼎音副业,有声新手圈,每天更新各种远程工作与在线兼职,职位包括:写手、程序开发、剪辑、设计、翻译、配音、无门槛、插画、翻译、等等。。。每日更新兼职。明朗欢快的台词:“阳光明媚,鸟语</div> </li> <li><a href="/article/1830543912498982912.htm" title="HDC2021技术分论坛:吐司盒子?芝士码?HarmonyOS音视频测试来啦" target="_blank">HDC2021技术分论坛:吐司盒子?芝士码?HarmonyOS音视频测试来啦</a> <span class="text-muted">HarmonyOS开发者</span> <a class="tag" taget="_blank" href="/search/HDC%E6%8A%80%E6%9C%AF%E5%88%86%E8%AE%BA%E5%9D%9B/1.htm">HDC技术分论坛</a><a class="tag" taget="_blank" href="/search/%E5%8D%8E%E4%B8%BA/1.htm">华为</a><a class="tag" taget="_blank" href="/search/%E9%9F%B3%E8%A7%86%E9%A2%91/1.htm">音视频</a><a class="tag" taget="_blank" href="/search/HarmonyOS/1.htm">HarmonyOS</a> <div>作者:lifusheng,用户体验技术专家当下,音视频无处不在,很多设备和应用都涉及音视频。因而,对于HarmonyOS开发者们来说,如何对鸿蒙生态产品进行音视频测试是一个非常重要的问题。华为HarmonyOS生态整机测试能力中心——DevEcoTesting,为生态合作伙伴接入HarmonyOS生态提供专业的测试服务。DevEcoTesting推出的音视频测试服务,为HarmonyOS整机提供音</div> </li> <li><a href="/article/1830478002589364224.htm" title="FFmpeg源码解析系列(一)目录和编译" target="_blank">FFmpeg源码解析系列(一)目录和编译</a> <span class="text-muted">头快撑不住了</span> <a class="tag" taget="_blank" href="/search/FFmpeg/1.htm">FFmpeg</a><a class="tag" taget="_blank" href="/search/%E6%BA%90%E7%A0%81%E8%A7%A3%E6%9E%90/1.htm">源码解析</a><a class="tag" taget="_blank" href="/search/ffmpeg/1.htm">ffmpeg</a><a class="tag" taget="_blank" href="/search/%E9%9F%B3%E8%A7%86%E9%A2%91/1.htm">音视频</a><a class="tag" taget="_blank" href="/search/%E8%A7%86%E9%A2%91%E7%BC%96%E8%A7%A3%E7%A0%81/1.htm">视频编解码</a><a class="tag" taget="_blank" href="/search/%E5%AE%9E%E6%97%B6%E9%9F%B3%E8%A7%86%E9%A2%91/1.htm">实时音视频</a><a class="tag" taget="_blank" href="/search/%E5%9B%BE%E5%83%8F%E5%A4%84%E7%90%86/1.htm">图像处理</a> <div>引言当我们欣赏一部电影、观看一段视频或者享受一首音乐时,很少有人会停下来思考这一切是如何呈现在我们眼前的。然而,在每一帧的画面、每一秒的声音背后,有着一个不可思议的技术世界这个充满音视频的世界的核心之一,就是FFmpeg。FFmpeg是一个强大而复杂的多媒体处理工具,它为视频和音频编解码、流媒体传输、格式转换等提供了优秀的解决方案。在这个系列博客中,我们将深入探讨FFmpeg源码,解析它的工作原理</div> </li> <li><a href="/article/1830466021211860992.htm" title="ffplay源码分析(五)包缓存队列和帧缓存队列" target="_blank">ffplay源码分析(五)包缓存队列和帧缓存队列</a> <span class="text-muted">头快撑不住了</span> <a class="tag" taget="_blank" href="/search/ffplay/1.htm">ffplay</a><a class="tag" taget="_blank" href="/search/%E6%BA%90%E7%A0%81%E8%A7%A3%E6%9E%90/1.htm">源码解析</a><a class="tag" taget="_blank" href="/search/ffplay/1.htm">ffplay</a><a class="tag" taget="_blank" href="/search/ffmpeg/1.htm">ffmpeg</a><a class="tag" taget="_blank" href="/search/%E9%9F%B3%E8%A7%86%E9%A2%91/1.htm">音视频</a> <div>在音视频处理流程中,ffplay的有两种队列,包缓存队列(PacketBufferQueue)和帧缓存队列(FrameBufferQueue)。这两个队列的存在,是为了适应音视频数据处理过程中的多线程架构——包括收包线程、解码线程和渲染线程。具体来说,收包线程负责从网络或文件中读取数据并将其放入包缓存队列中;解码线程从包缓存队列中取出数据进行解码,然后将解码后的数据放入帧缓存队列中;最后,渲染线程</div> </li> <li><a href="/article/1830445099503415296.htm" title="HLS点播实现(H.264和AAC码流)" target="_blank">HLS点播实现(H.264和AAC码流)</a> <span class="text-muted">辉辉岁月</span> <div>前言VideoToolbox硬编码H.264使用AudioToolbox编码AAC使用AudioToolbox播放AAC在前面我们介绍了从麦克风采集声音并用AudioToolbox编码成AAC码流和从摄像头采集图像并用VideoToolbox编码成H.264码流,这次我们不使用VideoToolbox和AudioToolbox播放音视频,而是把这两个格式的文件打包成TS流,并用通过HLS协议在浏览</div> </li> <li><a href="/article/105.htm" title="Js函数返回值" target="_blank">Js函数返回值</a> <span class="text-muted">_wy_</span> <a class="tag" taget="_blank" href="/search/js/1.htm">js</a><a class="tag" taget="_blank" href="/search/return/1.htm">return</a> <div>一、返回控制与函数结果,语法为:return 表达式;作用: 结束函数执行,返回调用函数,而且把表达式的值作为函数的结果 二、返回控制语法为:return;作用: 结束函数执行,返回调用函数,而且把undefined作为函数的结果 在大多数情况下,为事件处理函数返回false,可以防止默认的事件行为.例如,默认情况下点击一个<a>元素,页面会跳转到该元素href属性</div> </li> <li><a href="/article/232.htm" title="MySQL 的 char 与 varchar" target="_blank">MySQL 的 char 与 varchar</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a> <div> 今天发现,create table 时,MySQL 4.1有时会把 char 自动转换成 varchar 测试举例: CREATE TABLE `varcharLessThan4` ( `lastName` varchar(3) ) ; mysql> desc varcharLessThan4; +----------+---------+------+-</div> </li> <li><a href="/article/359.htm" title="Quartz——TriggerListener和JobListener" target="_blank">Quartz——TriggerListener和JobListener</a> <span class="text-muted">eksliang</span> <a class="tag" taget="_blank" href="/search/TriggerListener/1.htm">TriggerListener</a><a class="tag" taget="_blank" href="/search/JobListener/1.htm">JobListener</a><a class="tag" taget="_blank" href="/search/quartz/1.htm">quartz</a> <div>转载请出自出处:http://eksliang.iteye.com/blog/2208624 一.概述 listener是一个监听器对象,用于监听scheduler中发生的事件,然后执行相应的操作;你可能已经猜到了,TriggerListeners接受与trigger相关的事件,JobListeners接受与jobs相关的事件。   二.JobListener监听器  j</div> </li> <li><a href="/article/486.htm" title="oracle层次查询" target="_blank">oracle层次查询</a> <span class="text-muted">18289753290</span> <a class="tag" taget="_blank" href="/search/oracle%EF%BC%9B%E5%B1%82%E6%AC%A1%E6%9F%A5%E8%AF%A2%EF%BC%9B%E6%A0%91%E6%9F%A5%E8%AF%A2/1.htm">oracle;层次查询;树查询</a> <div>.oracle层次查询(connect  by) oracle的emp表中包含了一列mgr指出谁是雇员的经理,由于经理也是雇员,所以经理的信息也存储在emp表中。这样emp表就是一个自引用表,表中的mgr列是一个自引用列,它指向emp表中的empno列,mgr表示一个员工的管理者, select   empno,mgr,ename,sal  from e</div> </li> <li><a href="/article/613.htm" title="通过反射把map中的属性赋值到实体类bean对象中" target="_blank">通过反射把map中的属性赋值到实体类bean对象中</a> <span class="text-muted">酷的飞上天空</span> <a class="tag" taget="_blank" href="/search/javaee/1.htm">javaee</a><a class="tag" taget="_blank" href="/search/%E6%B3%9B%E5%9E%8B/1.htm">泛型</a><a class="tag" taget="_blank" href="/search/%E7%B1%BB%E5%9E%8B%E8%BD%AC%E6%8D%A2/1.htm">类型转换</a> <div>使用过struts2后感觉最方便的就是这个框架能自动把表单的参数赋值到action里面的对象中 但现在主要使用Spring框架的MVC,虽然也有@ModelAttribute可以使用但是明显感觉不方便。 好吧,那就自己再造一个轮子吧。 原理都知道,就是利用反射进行字段的赋值,下面贴代码 主要类如下:   import java.lang.reflect.Field; imp</div> </li> <li><a href="/article/740.htm" title="SAP HANA数据存储:传统硬盘的瓶颈问题" target="_blank">SAP HANA数据存储:传统硬盘的瓶颈问题</a> <span class="text-muted">蓝儿唯美</span> <a class="tag" taget="_blank" href="/search/HANA/1.htm">HANA</a> <div>SAPHANA平台有各种各样的应用场景,这也意味着客户的实施方法有许多种选择,关键是如何挑选最适合他们需求的实施方案。 在 《Implementing SAP HANA》这本书中,介绍了SAP平台在现实场景中的运作原理,并给出了实施建议和成功案例供参考。本系列文章节选自《Implementing SAP HANA》,介绍了行存储和列存储的各自特点,以及SAP HANA的数据存储方式如何提升空间压</div> </li> <li><a href="/article/867.htm" title="Java Socket 多线程实现文件传输" target="_blank">Java Socket 多线程实现文件传输</a> <span class="text-muted">随便小屋</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/socket/1.htm">socket</a> <div>        高级操作系统作业,让用Socket实现文件传输,有些代码也是在网上找的,写的不好,如果大家能用就用上。 客户端类:   package edu.logic.client; import java.io.BufferedInputStream; import java.io.Buffered</div> </li> <li><a href="/article/994.htm" title="java初学者路径" target="_blank">java初学者路径</a> <span class="text-muted">aijuans</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>学习Java有没有什么捷径?要想学好Java,首先要知道Java的大致分类。自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE</div> </li> <li><a href="/article/1121.htm" title="APP推广" target="_blank">APP推广</a> <span class="text-muted">aoyouzi</span> <a class="tag" taget="_blank" href="/search/APP/1.htm">APP</a><a class="tag" taget="_blank" href="/search/%E6%8E%A8%E5%B9%BF/1.htm">推广</a> <div>一,免费篇 1,APP推荐类网站自主推荐 最美应用、酷安网、DEMO8、木蚂蚁发现频道等,如果产品独特新颖,还能获取最美应用的评测推荐。PS:推荐简单。只要产品有趣好玩,用户会自主分享传播。例如足迹APP在最美应用推荐一次,几天用户暴增将服务器击垮。 2,各大应用商店首发合作 老实盯着排期,多给应用市场官方负责人献殷勤。 3,论坛贴吧推广 百度知道,百度贴吧,猫扑论坛,天涯社区,豆瓣(</div> </li> <li><a href="/article/1248.htm" title="JSP转发与重定向" target="_blank">JSP转发与重定向</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/jsp/1.htm">jsp</a><a class="tag" taget="_blank" href="/search/servlet/1.htm">servlet</a><a class="tag" taget="_blank" href="/search/Java+Web/1.htm">Java Web</a><a class="tag" taget="_blank" href="/search/jsp%E8%BD%AC%E5%8F%91/1.htm">jsp转发</a> <div>  在servlet和jsp中我们经常需要请求,这时就需要用到转发和重定向;   转发包括;forward和include     例子;forwrad转发;  将请求装法给reg.html页面   关键代码;    req.getRequestDispatcher("reg.html</div> </li> <li><a href="/article/1375.htm" title="web.xml之jsp-config" target="_blank">web.xml之jsp-config</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/web.xml/1.htm">web.xml</a><a class="tag" taget="_blank" href="/search/servlet/1.htm">servlet</a><a class="tag" taget="_blank" href="/search/jsp-config/1.htm">jsp-config</a> <div>1.作用:主要用于设定JSP页面的相关配置。 2.常见定义: <jsp-config> <taglib> <taglib-uri>URI(定义TLD文件的URI,JSP页面的tablib命令可以经由此URI获取到TLD文件)</tablib-uri> <taglib-location> TLD文件所在的位置 </div> </li> <li><a href="/article/1502.htm" title="JSF2.2 ViewScoped Using CDI" target="_blank">JSF2.2 ViewScoped Using CDI</a> <span class="text-muted">sunjing</span> <a class="tag" taget="_blank" href="/search/CDI/1.htm">CDI</a><a class="tag" taget="_blank" href="/search/JSF+2.2/1.htm">JSF 2.2</a><a class="tag" taget="_blank" href="/search/ViewScoped/1.htm">ViewScoped</a> <div>JSF 2.0 introduced annotation @ViewScoped; A bean annotated with this scope maintained its state as long as the user stays on the same view(reloads or navigation - no intervening views). One problem w</div> </li> <li><a href="/article/1629.htm" title="【分布式数据一致性二】Zookeeper数据读写一致性" target="_blank">【分布式数据一致性二】Zookeeper数据读写一致性</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/zookeeper/1.htm">zookeeper</a> <div>很多文档说Zookeeper是强一致性保证,事实不然。关于一致性模型请参考http://bit1129.iteye.com/blog/2155336    Zookeeper的数据同步协议 Zookeeper采用称为Quorum Based Protocol的数据同步协议。假如Zookeeper集群有N台Zookeeper服务器(N通常取奇数,3台能够满足数据可靠性同时</div> </li> <li><a href="/article/1756.htm" title="Java开发笔记" target="_blank">Java开发笔记</a> <span class="text-muted">白糖_</span> <a class="tag" taget="_blank" href="/search/java%E5%BC%80%E5%8F%91/1.htm">java开发</a> <div>1、Map<key,value>的remove方法只能识别相同类型的key值   Map<Integer,String> map = new HashMap<Integer,String>(); map.put(1,"a"); map.put(2,"b"); map.put(3,"c"</div> </li> <li><a href="/article/1883.htm" title="图片黑色阴影" target="_blank">图片黑色阴影</a> <span class="text-muted">bozch</span> <a class="tag" taget="_blank" href="/search/%E5%9B%BE%E7%89%87/1.htm">图片</a> <div> .event{ padding:0;    width:460px;    min-width: 460px;    border:0px solid #e4e4e4;    height: 350px;    min-heig</div> </li> <li><a href="/article/2010.htm" title="编程之美-饮料供货-动态规划" target="_blank">编程之美-饮料供货-动态规划</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92/1.htm">动态规划</a> <div> import java.util.Arrays; import java.util.Random; public class BeverageSupply { /** * 编程之美 饮料供货 * 设Opt(V’,i)表示从i到n-1种饮料中,总容量为V’的方案中,满意度之和的最大值。 * 那么递归式就应该是:Opt(V’,i)=max{ k * Hi+Op</div> </li> <li><a href="/article/2137.htm" title="ajax大参数(大数据)提交性能分析" target="_blank">ajax大参数(大数据)提交性能分析</a> <span class="text-muted">chenbowen00</span> <a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/Ajax/1.htm">Ajax</a><a class="tag" taget="_blank" href="/search/%E6%A1%86%E6%9E%B6/1.htm">框架</a><a class="tag" taget="_blank" href="/search/%E6%B5%8F%E8%A7%88%E5%99%A8/1.htm">浏览器</a><a class="tag" taget="_blank" href="/search/prototype/1.htm">prototype</a> <div>近期在项目中发现如下一个问题 项目中有个提交现场事件的功能,该功能主要是在web客户端保存现场数据(主要有截屏,终端日志等信息)然后提交到服务器上方便我们分析定位问题。客户在使用该功能的过程中反应点击提交后反应很慢,大概要等10到20秒的时间浏览器才能操作,期间页面不响应事件。 根据客户描述分析了下的代码流程,很简单,主要通过OCX控件截屏,在将前端的日志等文件使用OCX控件打包,在将之转换为</div> </li> <li><a href="/article/2264.htm" title="[宇宙与天文]在太空采矿,在太空建造" target="_blank">[宇宙与天文]在太空采矿,在太空建造</a> <span class="text-muted">comsci</span> <div>     我们在太空进行工业活动...但是不太可能把太空工业产品又运回到地面上进行加工,而一般是在哪里开采,就在哪里加工,太空的微重力环境,可能会使我们的工业产品的制造尺度非常巨大....      地球上制造的最大工业机器是超级油轮和航空母舰,再大些就会遇到困难了,但是在空间船坞中,制造的最大工业机器,可能就没</div> </li> <li><a href="/article/2391.htm" title="ORACLE中CONSTRAINT的四对属性" target="_blank">ORACLE中CONSTRAINT的四对属性</a> <span class="text-muted">daizj</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/CONSTRAINT/1.htm">CONSTRAINT</a> <div>ORACLE中CONSTRAINT的四对属性 summary:在data migrate时,某些表的约束总是困扰着我们,让我们的migratet举步维艰,如何利用约束本身的属性来处理这些问题呢?本文详细介绍了约束的四对属性: Deferrable/not deferrable, Deferred/immediate, enalbe/disable, validate/novalidate,以及如</div> </li> <li><a href="/article/2518.htm" title="Gradle入门教程" target="_blank">Gradle入门教程</a> <span class="text-muted">dengkane</span> <a class="tag" taget="_blank" href="/search/gradle/1.htm">gradle</a> <div>一、寻找gradle的历程 一开始的时候,我们只有一个工程,所有要用到的jar包都放到工程目录下面,时间长了,工程越来越大,使用到的jar包也越来越多,难以理解jar之间的依赖关系。再后来我们把旧的工程拆分到不同的工程里,靠ide来管理工程之间的依赖关系,各工程下的jar包依赖是杂乱的。一段时间后,我们发现用ide来管理项程很不方便,比如不方便脱离ide自动构建,于是我们写自己的ant脚本。再后</div> </li> <li><a href="/article/2645.htm" title="C语言简单循环示例" target="_blank">C语言简单循环示例</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/c/1.htm">c</a> <div># include <stdio.h> int main(void) { int i; int count = 0; int sum = 0; float avg; for (i=1; i<=100; i++) { if (i%2==0) { count++; sum += i; } } avg</div> </li> <li><a href="/article/2772.htm" title="presentModalViewController 的动画效果" target="_blank">presentModalViewController 的动画效果</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/controller/1.htm">controller</a> <div>系统自带(四种效果): presentModalViewController模态的动画效果设置:     [cpp]  view plain copy   UIViewController *detailViewController = [[UIViewController al</div> </li> <li><a href="/article/2899.htm" title="java 二分查找" target="_blank">java 二分查找</a> <span class="text-muted">shuizhaosi888</span> <a class="tag" taget="_blank" href="/search/%E4%BA%8C%E5%88%86%E6%9F%A5%E6%89%BE/1.htm">二分查找</a><a class="tag" taget="_blank" href="/search/java%E4%BA%8C%E5%88%86%E6%9F%A5%E6%89%BE/1.htm">java二分查找</a> <div>需求:在排好顺序的一串数字中,找到数字T   一般解法:从左到右扫描数据,其运行花费线性时间O(N)。然而这个算法并没有用到该表已经排序的事实。 /** * * @param array * 顺序数组 * @param t * 要查找对象 * @return */ public stati</div> </li> <li><a href="/article/3026.htm" title="Spring Security(07)——缓存UserDetails" target="_blank">Spring Security(07)——缓存UserDetails</a> <span class="text-muted">234390216</span> <a class="tag" taget="_blank" href="/search/ehcache/1.htm">ehcache</a><a class="tag" taget="_blank" href="/search/%E7%BC%93%E5%AD%98/1.htm">缓存</a><a class="tag" taget="_blank" href="/search/Spring+Security/1.htm">Spring Security</a> <div>        Spring Security提供了一个实现了可以缓存UserDetails的UserDetailsService实现类,CachingUserDetailsService。该类的构造接收一个用于真正加载UserDetails的UserDetailsService实现类。当需要加载UserDetails时,其首先会从缓存中获取,如果缓存中没</div> </li> <li><a href="/article/3153.htm" title="Dozer 深层次复制" target="_blank">Dozer 深层次复制</a> <span class="text-muted">jayluns</span> <a class="tag" taget="_blank" href="/search/VO/1.htm">VO</a><a class="tag" taget="_blank" href="/search/maven/1.htm">maven</a><a class="tag" taget="_blank" href="/search/po/1.htm">po</a> <div>最近在做项目上遇到了一些小问题,因为架构在做设计的时候web前段展示用到了vo层,而在后台进行与数据库层操作的时候用到的是Po层。这样在业务层返回vo到控制层,每一次都需要从po-->转化到vo层,用到BeanUtils.copyProperties(source, target)只能复制简单的属性,因为实体类都配置了hibernate那些关联关系,所以它满足不了现在的需求,但后发现还有个很</div> </li> <li><a href="/article/3280.htm" title="CSS规范整理(摘自懒人图库)" target="_blank">CSS规范整理(摘自懒人图库)</a> <span class="text-muted">a409435341</span> <a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/UI/1.htm">UI</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a><a class="tag" taget="_blank" href="/search/%E6%B5%8F%E8%A7%88%E5%99%A8/1.htm">浏览器</a> <div>   刚没事闲着在网上瞎逛,找了一篇CSS规范整理,粗略看了一下后还蛮有一定的道理,并自问是否有这样的规范,这也是初入前端开发的人一个很好的规范吧。 一、文件规范 1、文件均归档至约定的目录中。 具体要求通过豆瓣的CSS规范进行讲解: 所有的CSS分为两大类:通用类和业务类。通用的CSS文件,放在如下目录中: 基本样式库 /css/core </div> </li> <li><a href="/article/3407.htm" title="C++动态链接库创建与使用" target="_blank">C++动态链接库创建与使用</a> <span class="text-muted">你不认识的休道人</span> <a class="tag" taget="_blank" href="/search/C%2B%2B/1.htm">C++</a><a class="tag" taget="_blank" href="/search/dll/1.htm">dll</a> <div>一、创建动态链接库 1.新建工程test中选择”MFC [dll]”dll类型选择第二项"Regular DLL With MFC shared linked",完成 2.在test.h中添加 extern “C” 返回类型 _declspec(dllexport)函数名(参数列表); 3.在test.cpp中最后写 extern “C” 返回类型 _decls</div> </li> <li><a href="/article/3534.htm" title="Android代码混淆之ProGuard" target="_blank">Android代码混淆之ProGuard</a> <span class="text-muted">rensanning</span> <a class="tag" taget="_blank" href="/search/ProGuard/1.htm">ProGuard</a> <div>Android应用的Java代码,通过反编译apk文件(dex2jar、apktool)很容易得到源代码,所以在release版本的apk中一定要混淆一下一些关键的Java源码。 ProGuard是一个开源的Java代码混淆器(obfuscation)。ADT r8开始它被默认集成到了Android SDK中。 官网: http://proguard.sourceforge.net/</div> </li> <li><a href="/article/3661.htm" title="程序员在编程中遇到的奇葩弱智问题" target="_blank">程序员在编程中遇到的奇葩弱智问题</a> <span class="text-muted">tomcat_oracle</span> <a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B/1.htm">编程</a><a class="tag" taget="_blank" href="/search/ide/1.htm">ide</a> <div>  现在收集一下:         排名不分先后,按照发言顺序来的。   1、Jquery插件一个通用函数一直报错,尤其是很明显是存在的函数,很有可能就是你没有引入jquery。。。或者版本不对 2、调试半天没变化:不在同一个文件中调试。这个很可怕,我们很多时候会备份好几个项目,改完发现改错了。有个群友说的好:   在汤匙</div> </li> <li><a href="/article/3788.htm" title="解决maven-dependency-plugin (goals "copy-dependencies","unpack") is not supported" target="_blank">解决maven-dependency-plugin (goals "copy-dependencies","unpack") is not supported</a> <span class="text-muted">xp9802</span> <a class="tag" taget="_blank" href="/search/dependency/1.htm">dependency</a> <div>解决办法:在plugins之前添加如下pluginManagement,二者前后顺序如下:   [html]  view plain copy   <build>           <pluginManagement</div> </li> </ul> </div> </div> </div> <div> <div class="container"> <div class="indexes"> <strong>按字母分类:</strong> <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a> </div> </div> </div> <footer id="footer" class="mb30 mt30"> <div class="container"> <div class="footBglm"> <a target="_blank" href="/">首页</a> - <a target="_blank" href="/custom/about.htm">关于我们</a> - <a target="_blank" href="/search/Java/1.htm">站内搜索</a> - <a target="_blank" href="/sitemap.txt">Sitemap</a> - <a target="_blank" href="/custom/delete.htm">侵权投诉</a> </div> <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved. <!-- <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>--> </div> </div> </footer> <!-- 代码高亮 --> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script> <link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/> <script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script> </body> </html>