网络流媒体(五)———HLS

1. 简介

         HLS(HTTP Live Streaming)是苹果公司提出的基于HTTP的流媒体网络传输协议。HLS把整个流分成一个个小的基于 HTTP 的文件来下载,每次只下载一些。HLS 协议由三部分组成:HTTP、M3U8、TS。这三部分中,HTTP 是传输协议,M3U8 是索引文件,TS 是音视频的媒体信息。类似于MPEG-DASH,但是HLS更加简洁,它的基本原理也是服务端把文件或媒体流按照不同的码率切分成一个个小片段进行传输,客户端在播放码流时,可以根据自身的带宽及性能限制,在同一视频内容的不同码率的备用源中,选择合适码率的码流进行下载播放。在传输会话开始时,客户端首先需要下载描述不同码流元数据的M3U8索引文件(类似于DASH中的MPD文件)。
         优点:与基于UDP的RTP协议不同,HLS请求仅使用HTTP传输,因此可以穿过任何允许HTTP数据通过的防火墙或代理服务器。这也便于使用传统的HTTP服务器作为源,并广泛使用基于HTTP的内容分发网络来传输媒体流。HLS相对于RTMP来讲使用了标准的 HTTP 协议来传输数据,可以避免在一些特殊的网络环境下被屏蔽。HLS相比RTMP在服务器端做负载均衡要简单得多。因为HLS是基于无状态协议HTTP实现的,客户端只需要按照顺序使用下载存储在服务器的普通ts文件进行播放就可以。而RTMP是一种有状态协议,很难对视频服务器进行平滑扩展,因为需要为每一个播放视频流的客户端维护状态。HLS 协议本身实现了码率自适应,在不同带宽情况下,设备可以自动切换到最适合自己码率的视频播放。
         缺点:虽然HLS有上述优势,但也同时存在延迟过大的劣势。采用HLS直播的视频流延时一般在10秒以上,使用推荐配置时延迟大概在30s,而RTMP直播的延迟最低可达到3、4秒,因此,在对实时性要求较高的场合,如互动直播,就要慎用HLS了。
         HLS的格式可简单归结如下:
        网络协议: HTTP;
        封装格式: MEPG-2 TS;
        编码格式: 视频编码格式为H.264,音频编码格式为MP3、AAC、AC-3或EC-3;
        索引文件: M3U8。每一个.m3u8文件,分别对应若干个ts文件,这些ts文件才是真正存放视频的数据,m3u8文件只是存放了一些ts文件的配置信息和相关路径,当视频播放时,.m3u8是动态改变的,video标签会解析这个文件,并找到对应的ts文件来播放,所以一般为了加快速度,.m3u8 放在web服务器上,ts文件放在cdn 上。.m3u8 文件,其实就是以utf-8编码的m3u文件,这个文件本身不能播放,只是存放了播放信息的文本文件。
        需要说明的是,目前已有厂家实现了H.265的HLS编码。在封装层面,除了MPEG-2 TS封装外,在WWDC2016上,苹果宣布了HLS对分段MP4(fMP4)文件字节寻址的支持,为HLS向MPEG-DASH的兼容提供了可能。
        根据媒体流的生成及流向,HLS的结构可划分为如下几个部分(本图来自苹果官网):

网络流媒体(五)———HLS_第1张图片

        HLS有两级索引,第一级索引存放的是不同码率的HLS源的M3U8地址,也就是二级索引文件的地址;第二级索引则记录了同一码率下TS切片序列的下载地址。客户端获取一级M3U8文件后,根据自己的带宽,去下载相应码率的二级索引文件,然后再按二级索引文件的切片顺序下载并播放TS文件序列。
        一个典型的一级索引文件如下:

#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=500000, RESOLUTION=720x480
mid_video_index.M3U8
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=800000, RESOLUTION=1280x720
wifi_video_index.M3U8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=3000000,CODECS="avc1.4d001e,mp4a.40.5", RESOLUTION=1920x1080
h264main_heaac_index.M3U8
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=64000, CODECS="mp4a.40.5"
aacaudio_index.M3U8

        #EXTM3U:格式标签,标明该文件是一个Extended M3U播放列表文件,必须存在于一二级列表的第一行。
        #EXT-X-STREAM-INF:特定流标签,指示了该流的格式信息:PROGRAM-ID节目ID,一般不用考虑;BANDWIDTH:指定流的带宽;RESOLUTION:视频分辨率;如果存在音频分级,则需指定音频的编码格式CODECS,如上例中的最后两项;#EXT-X-STREAM-INF下面紧接的一行,如mid_video_index.m3u8则是对应流的二级索引文件地址,通过下载该二级索引文件,便可得到媒体切片的信息。
        二级索引文件格式如下:

       (1)VOD形式

#EXTM3U
#EXT-X-TARGETDURATION:10
#EXT-X-VERSION:3
#EXTINF:9.009,
http://media.example.com/first.ts
#EXTINF:9.009,
http://media.example.com/second.ts
#EXTINF:3.003,
http://media.example.com/third.ts
#EXT-X-ENDLIST

       仍然是以#EXTM3U开头。
       #EXT-X-TARGETDURATION: 表示切片的最大时长,单位是秒。#EXT-X-TARGETDURATION:10表示列表中表示的每个切片时长不超过10秒。
       #EXT-X-VERSION:表示协议兼容性版本。
       #EXTINF:切片的实际时长,若要求取整,则其数值不能大于EXT-X-TARGETDURATION的值。
       http://media.example.com/first.ts:对应的切片文件(路径),可以是绝对路径,也可以是相对路径。
       #EXT-X-ENDLIST:表示整个码流的结束,不再向后附加新的切片列表。
        (2) Live形式:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:8
#EXT-X-MEDIA-SEQUENCE:2680
#EXTINF:7.975,
https://priv.example.com/fileSequence2680.ts
#EXTINF:7.941,
https://priv.example.com/fileSequence2681.ts
#EXTINF:7.975,
https://priv.example.com/fileSequence2682.ts

       #EXT-X-MEDIA-SEQUENCE:媒体序列号,表示出现在当前M3U8文件中的第一个Segment的序列号。
       Live形式的M3U8一般用于直播,列表中的文件数有限制,推荐配置中是3个,服务端会实时更新该列表,删除最开始的Segment,并向后面添加新生成的Segment。因此,这种模式下,当网络带宽不足时,客户端来不及下载新的M3U8和对应的切片文件,会导致切片丢失,播放卡顿。

       (3) 加密形式:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:7794
#EXT-X-TARGETDURATION:15
#EXT-X-KEY:METHOD=AES-128,URI="https://priv.example.com/key.php?r=52"
#EXTINF:2.833,
http://media.example.com/fileSequence52-A.ts
#EXTINF:15.0,
http://media.example.com/fileSequence52-B.ts
#EXTINF:13.333,
http://media.example.com/fileSequence52-C.ts
#EXT-X-KEY:METHOD=AES-128,URI="https://priv.example.com/key.php?r=53"
#EXTINF:15.0,
http://media.example.com/fileSequence53-A.ts

        HLS可以被加密。客户端通过读取M3U8文件中的#EXT-X_KEY标签可以获取解密的密钥。EXT-X-KEY指示的密钥信息作用于当前EXT-X-KEY标签至下一个EXT-X-KEY标签(若没有下一个,则到最后一个Segment)之间的所有Segments。METHOD指示加密算法,可用的取值有NONE、AES-128和SAMPLE-AES,NONE表示不加密。URI指示获取密钥的路径,该项不可省略,除非METHOD为NONE。

2. 基础概念

2.1 Playlist file

       一个 m3u 的 Playlist 就是一个由多个独立行组成的文本文件,每行由回车/换行区分。每一行可以是一个 URI、空白行或是一个 以 "#" 号开头的字符串,并且空格只能存在于一行中不同元素间的分隔。
一个 URI 表示一个媒体段或是 "variant Playlist file"(最多支持一层嵌套,即一个 m3u8 文件中嵌套另一个 m3u8),以 "EXT" 开头的表示一个 "tag",否则表示注释,直接忽略。

2.2 Tags

① #EXTM3U:每个 m3u8 文件第一行必须是这个 tag,如上面的两个示例。
② #EXTINF:指定每个媒体段(ts)的持续时间,这个仅对其后面的 URI 有效,每两个媒体段URI间被这个tag分隔开,
其格式为:#EXTINF:,<br> •    duration:表示持续的时间(秒),"Durations MUST be integers if the protocol version of the Playlist file is less than 3",否则可以是浮点数。<br> ③ #EXT-X-BYTERANGE:表示媒体段是一个媒体URI资源中的一段,只对其后的media URI有效,<br> 格式为:#EXT-X-BYTERANGE:<n>[@o]<br> •    n:表示这个区间的大小<br> •    o:表示在 URI 中的 offset<br> •    The EXT-X-BYTERANGE tag appeared in version 4 of the protocol<br> ④ #EXT-X-TARGETDURATION:指定当前视频流中的单个切片(即ts)文件的最大时长(秒)。所以 #EXTINF 中指定的时间长度必须小于或是等于这个最大值。这个tag在整个 Playlist 文件中只能出现一次(在嵌套的情况下,一般有真正ts url的m3u8才会出现该tag)。</p> <h1 style="margin-left:0cm;">3  参考文献</h1> <p style="margin-left:0cm;">https://blog.csdn.net/DeliaPu/article/details/79065697</p> <p style="margin-left:0cm;">https://www.cnblogs.com/jimodetiantang/p/9133564.html</p> <p style="margin-left:0cm;">https://www.jianshu.com/p/32417d8ee5b6</p> <p style="margin-left:0cm;">https://segmentfault.com/a/1190000008810572</p> <p style="margin-left:0cm;">https://my.oschina.net/u/727148/blog/666824</p> </div> </div> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1305434839226290176"></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/1897681198495363072.htm" title="Linux音视频学习--音视频编解码相关基本概念介绍" target="_blank">Linux音视频学习--音视频编解码相关基本概念介绍</a> <span class="text-muted">文艺小少年</span> <a class="tag" taget="_blank" href="/search/IPC%E9%A1%B9%E7%9B%AE%E5%AE%9E%E8%B7%B5%E4%B9%8B%E9%9F%B3%E8%A7%86%E9%A2%91%E7%9B%B8%E5%85%B3%E6%95%B4%E7%90%86/1.htm">IPC项目实践之音视频相关整理</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/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/dsp/1.htm">dsp</a><a class="tag" taget="_blank" href="/search/isp/1.htm">isp</a> <div>一、引言二、ISP、DSP------>1、ISP------------>内置isp------>2、DSP三、编解码------>1、视频编码------------>各个格式(H264/H265)的编码------------>码率调节------>2、音频编码------>3、码流、采样率、比特率、采样点数概念介绍------>4、采样点数一、引言入职的事终于告一段落,现在要慢慢开始熟悉新</div> </li> <li><a href="/article/1896861041757843456.htm" title="【FFMPEG】各种音视频编解码学习详解 h264 ,mpeg4 ,aac 等所有音视频格式" target="_blank">【FFMPEG】各种音视频编解码学习详解 h264 ,mpeg4 ,aac 等所有音视频格式</a> <span class="text-muted">weixin_30906425</span> <a class="tag" taget="_blank" href="/search/ffmpeg/1.htm">ffmpeg</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a><a class="tag" taget="_blank" href="/search/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/1.htm">操作系统</a> <div>目录(?)[-]编解码学习笔记二codec类型编解码学习笔记三Mpeg系列Mpeg1和Mpeg2编解码学习笔记四Mpeg系列Mpeg4编解码学习笔记五Mpeg系列AAC音频编解码学习笔记六H26x系列编解码学习笔记七微软WindowsMedia系列编解码学习笔记八Real系列编解码学习笔记九QuickTime系列编解码学习笔记十Ogg系列编解码学习笔记十一FlashVideo系列编解码学习笔记十二</div> </li> <li><a href="/article/1894534384577474560.htm" title="如何省流量?视频高度压缩背后的预测技术" target="_blank">如何省流量?视频高度压缩背后的预测技术</a> <span class="text-muted">音视频开发老马</span> <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/%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/5G/1.htm">5G</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/H264/1.htm">H264</a><a class="tag" taget="_blank" href="/search/ffmpeg/1.htm">ffmpeg</a> <div>1、引言从20世纪90年代以来,数字音视频编解码技术迅速发展,一直是国内外研究的热点领域。随着5G的成熟和广泛商用,带宽已经越来越高,传输音视频变得更加容易。视频直播、视频聊天,已经完全融入了每个人的生活。视频为何如此普及呢?是因为通过视频能方便快捷地获取到大量信息。但视频数据量非常巨大,视频的网络传输也面临着巨大的挑战。于是视频编解码技术就出场了。具体到实时视频场景,不仅仅是数据量的问题,实时通</div> </li> <li><a href="/article/1890135566360571904.htm" title="FFmpeg音视频编解码优化" target="_blank">FFmpeg音视频编解码优化</a> <span class="text-muted">AI天才研究院</span> <a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97/1.htm">计算</a><a class="tag" taget="_blank" href="/search/AI%E5%A4%A7%E6%A8%A1%E5%9E%8B%E4%BC%81%E4%B8%9A%E7%BA%A7%E5%BA%94%E7%94%A8%E5%BC%80%E5%8F%91%E5%AE%9E%E6%88%98/1.htm">AI大模型企业级应用开发实战</a><a class="tag" taget="_blank" href="/search/DeepSeek/1.htm">DeepSeek</a><a class="tag" taget="_blank" href="/search/R1/1.htm">R1</a><a class="tag" taget="_blank" href="/search/%26amp%3B/1.htm">&</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AEAI%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD%E5%A4%A7%E6%A8%A1%E5%9E%8B/1.htm">大数据AI人工智能大模型</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/kotlin/1.htm">kotlin</a><a class="tag" taget="_blank" href="/search/golang/1.htm">golang</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E5%8E%82%E7%A8%8B%E5%BA%8F%E5%91%98/1.htm">大厂程序员</a><a class="tag" taget="_blank" href="/search/%E7%A1%85%E5%9F%BA%E8%AE%A1%E7%AE%97/1.htm">硅基计算</a><a class="tag" taget="_blank" href="/search/%E7%A2%B3%E5%9F%BA%E8%AE%A1%E7%AE%97/1.htm">碳基计算</a><a class="tag" taget="_blank" href="/search/%E8%AE%A4%E7%9F%A5%E8%AE%A1%E7%AE%97/1.htm">认知计算</a><a class="tag" taget="_blank" href="/search/%E7%94%9F%E7%89%A9%E8%AE%A1%E7%AE%97/1.htm">生物计算</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a><a class="tag" taget="_blank" href="/search/%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C/1.htm">神经网络</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a><a class="tag" taget="_blank" href="/search/AIGC/1.htm">AIGC</a><a class="tag" taget="_blank" href="/search/AGI/1.htm">AGI</a><a class="tag" taget="_blank" href="/search/LLM/1.htm">LLM</a><a class="tag" taget="_blank" href="/search/%E7%B3%BB%E7%BB%9F%E6%9E%B6%E6%9E%84%E8%AE%BE%E8%AE%A1/1.htm">系统架构设计</a><a class="tag" taget="_blank" href="/search/%E8%BD%AF%E4%BB%B6%E5%93%B2%E5%AD%A6/1.htm">软件哲学</a><a class="tag" taget="_blank" href="/search/Agent/1.htm">Agent</a><a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98%E5%AE%9E%E7%8E%B0%E8%B4%A2%E5%AF%8C%E8%87%AA%E7%94%B1/1.htm">程序员实现财富自由</a> <div>FFmpeg音视频编解码优化关键词FFmpeg音视频编解码优化策略性能测试实战案例摘要本文将围绕FFmpeg音视频编解码优化这一主题,详细介绍FFmpeg的基础知识、安装配置、音视频编解码原理、性能优化方法,以及实际应用中的实战案例。通过对FFmpeg的深入分析,读者将了解到如何高效地利用FFmpeg进行音视频处理,提升编解码性能,为音视频处理项目提供实用的优化方案。目录大纲第一部分:FFmpeg</div> </li> <li><a href="/article/1890130644802007040.htm" title="Linux 上使用 Rust、Golang 和 C++ 进行应用开发比较" target="_blank">Linux 上使用 Rust、Golang 和 C++ 进行应用开发比较</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/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/rust/1.htm">rust</a> <div>作为一名前音视频编解码工程师,最常使用的语言是c/c++,但是永久了总想尝试下其他语言。rust一直被宣传为未来取代c++的语言,所以这次总结下golang,rust,与c++在linux开发应用时各自的优缺点,方便以后作出选择。这里从内存安全、性能、并发模型、生态系统、跨平台、开发体验这几个方面进行比较。1.内存安全语言内存安全Rust✅最安全(所有权&借用检查)Golang✅自动垃圾回收(GC</div> </li> <li><a href="/article/1886426933885988864.htm" title="音视频多媒体编解码器基础-codec" target="_blank">音视频多媒体编解码器基础-codec</a> <span class="text-muted">硬件学长森哥</span> <a class="tag" taget="_blank" href="/search/%E5%B5%8C%E5%85%A5%E5%BC%8F%E8%BD%AF%E4%BB%B6/1.htm">嵌入式软件</a><a class="tag" taget="_blank" href="/search/%E5%BD%B1%E5%83%8F/1.htm">影像</a><a class="tag" taget="_blank" href="/search/%E5%B5%8C%E5%85%A5%E5%BC%8F%E9%A9%B1%E5%8A%A8/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/%E9%A9%B1%E5%8A%A8%E5%BC%80%E5%8F%91/1.htm">驱动开发</a><a class="tag" taget="_blank" href="/search/%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%A1%AC%E4%BB%B6/1.htm">嵌入式硬件</a> <div>如果要从事编解码多媒体的工作,需要准备哪些更为基础的内容,这里帮你总结完。因为数据类型不同所以编解码算法不同,分为图像、视频和音频三大类;因为流程不同,可以分为编码和解码两部分;因为编码器实现不同,分为硬编码和软编码;因为编解码硬件位置不同,可以分为片内、片外和独立编解码模块三类;软件常用的框架ffmpeg。音视频编解码(Audio-VideoCoding)是指将音频和视频信号进行压缩编码以及解码</div> </li> <li><a href="/article/1885746538001526784.htm" title="Android 音视频编解码 -- MediaCodec" target="_blank">Android 音视频编解码 -- MediaCodec</a> <span class="text-muted">消失的旧时光-1943</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/android/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> <div>引言如果我们只是简单玩一下音频、视频播放,那么使用MediaPlayer+SurfaceView播放就可以了,但如果想加个水印,加点其他特效什么的,那就不行了;学习Android自带的硬件码类–MediaCodec。MediaCodec介绍MediaCodec是从API16后引入的处理音视频编解码的类,它可以直接访问Android底层的多媒体编解码器,通常与MediaExtractor,Media</div> </li> <li><a href="/article/1883517453451980800.htm" title="freeswtch目录下modules.conf各个模块的介绍【freeswitch版本1.6.8】" target="_blank">freeswtch目录下modules.conf各个模块的介绍【freeswitch版本1.6.8】</a> <span class="text-muted">狂爱代码的码农</span> <a class="tag" taget="_blank" href="/search/VOIP%E9%82%A3%E4%BA%9B%E4%BA%8B/1.htm">VOIP那些事</a><a class="tag" taget="_blank" href="/search/freeswitch/1.htm">freeswitch</a> <div>应用模块(applications)mod_abstraction:为其他模块提供抽象层,有助于简化模块开发,让开发者能在统一框架下开发新功能,减少与底层系统的直接交互,提高代码可移植性和可维护性。mod_av:处理音频和视频相关操作,可用于音视频会议、流媒体播放等场景,支持多种音视频编解码格式,实现音视频数据的采集、处理和传输。mod_avmd:主要用于音频和视频元数据处理,能提取、分析和管理音</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/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/1827406508946714624.htm" title="FFmpeg和SDL的关系" target="_blank">FFmpeg和SDL的关系</a> <span class="text-muted">星海逐愿</span> <a class="tag" taget="_blank" href="/search/%E9%9A%8F%E7%AC%94/1.htm">随笔</a><a class="tag" taget="_blank" href="/search/ffmpeg/1.htm">ffmpeg</a> <div>SDL(SimpleDirectMediaLayer)和FFmpeg是两个在多媒体开发中常用的开源库,但它们各自的功能和用途有所不同,通常一起使用以实现完整的多媒体处理和播放解决方案。1.FFmpeg的作用FFmpeg是一个强大的多媒体框架,用于录制、转换和流式传输音视频。它包含了大量的音视频编解码器和格式支持,可以处理几乎所有已知的多媒体格式。FFmpeg主要用于:视频解码和编码:将视频文件解码</div> </li> <li><a href="/article/1769082359577116672.htm" title="qt+ffmpeg 实现音视频播放(一)" target="_blank">qt+ffmpeg 实现音视频播放(一)</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/Qt/1.htm">Qt</a><a class="tag" taget="_blank" href="/search/ffmpeg/1.htm">ffmpeg</a><a class="tag" taget="_blank" href="/search/qt/1.htm">qt</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>一、ffmpeg下载官网:点击跳转二、模块介绍1.libavcodec:音视频编解码库,提供了多种编解码器,可以支持多种音视频格式的编解码操作。2.libavformat:音视频封装和解封装库,提供了多种封装格式的支持,可以读取和写入多种音视频文件格式。3.libavfilter:音视频过滤器库,提供了多种音视频过滤器,可以对音视频流进行各种处理,如添加水印、调整亮度、对比度等。4.libavde</div> </li> <li><a href="/article/1753804825625116672.htm" title="替代MP4Info, MP4explore的软件MP4inspector" target="_blank">替代MP4Info, MP4explore的软件MP4inspector</a> <span class="text-muted">固执的你</span> <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/%E8%A7%86%E9%A2%91%E7%BC%96%E8%A7%A3%E7%A0%81/1.htm">视频编解码</a> <div>这两天在学音视频编解码,看到了MP4封装各式,寻找网上推荐的分析软件,MP4Info,MP4explore,都没有找到。然后找到了替代的软件。MP4inspector,网址:MP4inspector如果要用,我也上传资源。我发现CSDN把我免费上传的资料用来收取积分,不可忍受,所以我要把网盘链接也贴出来。链接:https://pan.baidu.com/s/1yP_pFSY0eAJEKt-PSWI</div> </li> <li><a href="/article/1753420504233951232.htm" title="C++ 音视频流媒体浅谈" target="_blank">C++ 音视频流媒体浅谈</a> <span class="text-muted">4399.9855</span> <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>C++流媒体开发今天就浅浅聊一下C++流媒体开发流媒体开发中最常见的是FFmpeg(编解码器)业务逻辑主要是播放器了(如腾旭视频爱奇艺等等)FFmpeg是一个开源的音视频处理工具集,可以用于处理、转换和流媒体传输音视频文件。它包含了一系列的库和命令行工具,提供了强大的音视频编解码、格式转换、过滤器应用等功能。以下是一些主要特点和功能:格式支持广泛:FFmpeg支持几乎所有常见的音视频格式,包括但不</div> </li> <li><a href="/article/1752948055503552512.htm" title="FFmpeg最常用命令参数详解及应用实例" target="_blank">FFmpeg最常用命令参数详解及应用实例</a> <span class="text-muted">视频砖家</span> <a class="tag" taget="_blank" href="/search/%E8%A7%86%E9%A2%91%E6%8A%80%E6%9C%AF/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/ffmpeg%E5%91%BD%E4%BB%A4/1.htm">ffmpeg命令</a> <div>FFMPEG堪称自由软件中最完备的一套多媒体支持库,它几乎实现了所有当下常见的数据封装格式、多媒体传输协议以及音视频编解码器,提供了录制、转换以及流化音视频的完整解决方案。ffmpeg命令行参数解释ffmpeg-i[输入文件名][参数选项]-f[格式][输出文件]ffmpeg[[options][-iinput_file]]...{[options]output_file}...参数选项:(1)-</div> </li> <li><a href="/article/1752828326356992000.htm" title="RK3588平台开发系列讲解(视频篇)RKMedia的VDEC模块" target="_blank">RK3588平台开发系列讲解(视频篇)RKMedia的VDEC模块</a> <span class="text-muted">内核笔记</span> <a class="tag" taget="_blank" href="/search/RK3588/1.htm">RK3588</a><a class="tag" taget="_blank" href="/search/Android12/1.htm">Android12</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E5%85%A5%E9%97%A8%E5%88%B0%E7%B2%BE%E9%80%9A%E4%B8%93%E6%A0%8F/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/RK3588/1.htm">RK3588</a> <div>文章目录一、VDEC模块支持的编码标准介绍二、VDECAPI的调用三、VDEC解码流程沉淀、分享、成长,让自己和他人都能有所收获!RKMedia是RK提供的一种多媒体处理方案,可实现音视频捕获、音视频输出、音视频编解码等功能。一、VDEC模块支持的编码标准介绍RK3688VDEC解码模块,支持H264、H265、MJPEG、JPEG这4种编码标准。JPEGH.264/AVCH.265/HEVC</div> </li> <li><a href="/article/1751829519041314816.htm" title="Android MediaCodec解析" target="_blank">Android MediaCodec解析</a> <span class="text-muted">sw.dev</span> <a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/ffmpeg/1.htm">ffmpeg</a> <div>AndroidMediaCodec解析1引言MediaCodec是Android平台提供的一个底层的音视频编解码框架,它是安卓底层多媒体基础框架的重要组成部分。它经常和MediaExtractor,MediaSync,MediaMuxer,MediaCrypto,MediaDrm,Image,Surface,AudioTrack一起使用。解码的作用,就是将视频/音频压缩编码数据,解码成为非压缩的视</div> </li> <li><a href="/article/1750466117639356416.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%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> <div>问题:什么是采样率?采样位数是什么意思?答案:采样率是每秒采集的样本数,采样位数表示每个样本的位数。常见的音频采样率有44.1kHz,采样位数一般为16位。音视频编解码:问题:H.264和H.265有什么区别?答案:H.264和H.265都是视频编码标准,H.265相对于H.264有更高的压缩效率,更多的码率控制方法,对更高分辨率和帧率有更好的支持。流媒体协议:问题:RTSP和RTMP是什么协议?</div> </li> <li><a href="/article/1750337536686833664.htm" title="RK3588平台开发系列讲解(视频篇)RKMedia框架" target="_blank">RK3588平台开发系列讲解(视频篇)RKMedia框架</a> <span class="text-muted">内核笔记</span> <a class="tag" taget="_blank" href="/search/RK3588/1.htm">RK3588</a><a class="tag" taget="_blank" href="/search/Android12/1.htm">Android12</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E5%85%A5%E9%97%A8%E5%88%B0%E7%B2%BE%E9%80%9A%E4%B8%93%E6%A0%8F/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/RK3588/1.htm">RK3588</a> <div>文章目录一、RKMedia框架介绍二、RKMedia框架API三、视频处理流程四、venc测试案例沉淀、分享、成长,让自己和他人都能有所收获!RKMedia是RK提供的一种多媒体处理方案,可实现音视频捕获、音视频输出、音视频编解码等功能。一、RKMedia框架介绍功能:VI(输入视频捕获)VENC(H.265/H.264/JPEG/MJPEG编码)VDEC(H.265/H.264/JPEG/MJP</div> </li> <li><a href="/article/1750102382806581248.htm" title="ExoPlayer播放器框架详解及应用实践 ------播放MP1/MP2音频格式视频无声音加入Ffmpeg软解码功能" target="_blank">ExoPlayer播放器框架详解及应用实践 ------播放MP1/MP2音频格式视频无声音加入Ffmpeg软解码功能</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/%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>我们都知道,音视频的播放处理在各个平台都是一个常用的操作和功能,尤其在移动Android平台音视频播放变得复杂得多,要处理不同操作系统版本间的API差别、软硬件的不同、直播点播流的处理、不同音视频编解码的处理、不同流协议的支持等等复杂的操作。以前大多数人对简单的音视频都使用MediaPlayer来处理,不过对于一些企业应用级别的应用来说,MediaPlayer是完全不行的。所以就要基于FFMPEG</div> </li> <li><a href="/article/1749553794938585088.htm" title="FFmpeg教程:libswscale对图像进行简单处理" target="_blank">FFmpeg教程:libswscale对图像进行简单处理</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/ffmpeg/1.htm">ffmpeg</a> <div>我们在FFmpeg简单总结对FFmpeg组成模块,编码进行了简单介绍。FFmpeg组成部分:libavcodec:提供了音视频编解码器的库。libavformat:处理多媒体容器格式的库,包括封装和解封装。libavutil:包含一些公共的实用工具函数。libswscale:提供图像缩放和颜色转换功能的库。libavfilter:实现音视频过滤器的库,用于进行各种音视频处理操作。ffmpeg:命令</div> </li> <li><a href="/article/1749209486448410624.htm" title="【无标题】" target="_blank">【无标题】</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/C%2B%2B/1.htm">C++</a><a class="tag" taget="_blank" href="/search/Framework/1.htm">Framework</a><a class="tag" taget="_blank" href="/search/Media/1.htm">Media</a> <div>MediaCodec是Android平台上音视频编解码的标准接口,无论是使用软解还是硬解都要通过调用MediaCodec来完成,是学习Android音视频不可跳过的重要部分。MediaCodec部分的代码有几千行,光是头文件就有几百行,对于我这样的新手来说,简直就劝退了,又或者是硬着头皮往下看,一行一行阅读,看到里面的各种状态各种变量,很容易就晕了。我们这一篇笔记旨在从设计思路的角度了解Media</div> </li> <li><a href="/article/1748667994734608384.htm" title="Android JNI" target="_blank">Android JNI</a> <span class="text-muted">付凯强</span> <div>JNI是JavaNativeInterface的缩写,顾名思义,翻译为Java本地接口,是Java与C++/C语言通信的桥梁。当Java语言无法胜任时,便通过JNI技术,调用C++/C语言来处理。大致有三种情况需要使用JNI技术,第一种:需要调用UNIX系统的某个功能,而这个功能并非Java语言完成的;第二种:需要使用早期用C++/C语言开发的一些功能;第三种:游戏、音视频开发涉及的音视频编解码和</div> </li> <li><a href="/article/1748193225216114688.htm" title="音视频编解码学习记录" target="_blank">音视频编解码学习记录</a> <span class="text-muted">ketaotech</span> <a class="tag" taget="_blank" href="/search/%E9%9F%B3%E8%A7%86%E9%A2%91%E7%BC%96%E8%A7%A3%E7%A0%81%E5%92%8C%E6%B5%81%E5%AA%92%E4%BD%93/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> <div>目录学习资料个人git仓库文章学习资料个人git仓库标准,资料,笔记:https://gitee.com/fedorayang/video_and_audio_codec.git文章理解低延迟视频编码的正确姿势:https://cloud.tencent.com/developer/article/1358721</div> </li> <li><a href="/article/1748154985335504896.htm" title="编译FFmpeg4.3.1 、x264并移植到Android" target="_blank">编译FFmpeg4.3.1 、x264并移植到Android</a> <span class="text-muted">老张音视频开发进阶</span> <a class="tag" taget="_blank" href="/search/android/1.htm">android</a> <div>1、前言FFmpeg既是一款音视频编解码工具,同时也是一组音视频编解码开发套件。2、准备工作系统:LinuxNDK:android-ndk-r21b-linux-x86_64.zipFFmpeg:ffmpeg-snapshot.tar.bz2x264:x2643、下载NDK在linux环境中,使用命令如下:#1.进入用户目录cd/usr#2.新建一个android文件夹用来存放ndkmkdiran</div> </li> <li><a href="/article/1747891205770854400.htm" title="FFmpeg简单总结" target="_blank">FFmpeg简单总结</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/ffmpeg/1.htm">ffmpeg</a> <div>FFmpeg简介FFmpeg(FastForwardMPEG)是一个开源跨平台的音视频处理工具库和软件套件,它包括了一系列用于处理多媒体数据的程序和库。FFmpeg提供了音视频编解码、封装、过滤、流媒体传输等功能,支持多种音频、视频和容器格式,包括但不限于MP4、AVI、MKV、FLV、MP3、AAC、H.264、H.265等。官方文档:ffmpegdocumentFFmpeg可以在多个操作系统上</div> </li> <li><a href="/article/1747748582636666880.htm" title="网易视频云余利华:以用户体验为核心,深耕PaaS云生态" target="_blank">网易视频云余利华:以用户体验为核心,深耕PaaS云生态</a> <span class="text-muted">vcloud163</span> <a class="tag" taget="_blank" href="/search/%E6%8A%80%E6%9C%AF%E5%BC%80%E5%8F%91/1.htm">技术开发</a><a class="tag" taget="_blank" href="/search/%E4%BA%92%E8%81%94%E7%BD%91%E7%A7%91%E6%8A%80/1.htm">互联网科技</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E6%98%93%E8%A7%86%E9%A2%91%E4%BA%91/1.htm">网易视频云</a><a class="tag" taget="_blank" href="/search/%E4%BA%91%E8%AE%A1%E7%AE%97/1.htm">云计算</a><a class="tag" taget="_blank" href="/search/%E8%A7%86%E9%A2%91%E4%BA%91/1.htm">视频云</a> <div>如果说2016年互联网科技圈最热门的词汇,“直播”必定是最佳候选之一。来势汹汹的直播,正在与各式各样的行业联姻,形成“直播+”的经济模式,一度引发了全民直播的热潮。与此同时,网易也瞄准了这个行业,悄然上线了网易视频云,将扎实的音视频技术产品化,低调迈入云服务市场。承接了网易15年音视频技术积淀的网易视频云以PaaS服务模式,向开发者提供音视频编解码SDK和开放API,适用于在线教育、远程医疗、娱乐</div> </li> <li><a href="/article/1747748581533564928.htm" title="网易视频云CEO余利华:云服务的核心仍是用户体验" target="_blank">网易视频云CEO余利华:云服务的核心仍是用户体验</a> <span class="text-muted">vcloud_163</span> <a class="tag" taget="_blank" href="/search/%E4%BA%91%E8%AE%A1%E7%AE%97/1.htm">云计算</a><a class="tag" taget="_blank" href="/search/%E6%8A%80%E6%9C%AF%E5%BC%80%E5%8F%91/1.htm">技术开发</a><a class="tag" taget="_blank" href="/search/%E8%A7%86%E9%A2%91%E4%BA%91/1.htm">视频云</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E6%98%93%E8%A7%86%E9%A2%91%E4%BA%91/1.htm">网易视频云</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E6%98%93/1.htm">网易</a> <div>如果说2016年互联网科技圈最热门的词汇,“直播”必定是最佳候选之一。来势汹汹的直播,正在与各式各样的行业联姻,形成“直播+”的经济模式,一度引发了全民直播的热潮。与此同时,网易也瞄准了这个行业,悄然上线了网易视频云,将扎实的音视频技术产品化,低调迈入云服务市场。承接了网易15年音视频技术积淀的网易视频云以PaaS服务模式,向开发者提供音视频编解码SDK和开放API,适用于在线教育、远程医疗、娱乐</div> </li> <li><a href="/article/1747374477760544768.htm" title="Android音视频编码(2)" target="_blank">Android音视频编码(2)</a> <span class="text-muted">helloworddm</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> <div>Android本身提供了音视频编解码工具,很多时候是不需要第三方工具的,比如ffmpeg,OpenCV等,在android中引入第三库比较复杂,在Android音视频编码中介绍了如何引入第三方库libpng来进行进行图片处理,同时引入这些第三方库,是程序结构变得复杂。本文介绍的音视频编解码利用的就是android自带的MediaCodec。视频编码之后,你可以对视频做任何形式的处理,比如添加广告,</div> </li> <li><a href="/article/1746264743108165632.htm" title="C/C++编程:ffmpeg简介" target="_blank">C/C++编程:ffmpeg简介</a> <span class="text-muted">OceanStar的学习笔记</span> <a class="tag" taget="_blank" href="/search/C%2B%2B/1.htm">C++</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>什么是ffmpegffmpeg即使一款音视频编解码工具,同时也是一组音视频编解码开发套件,作为编解码开发套件,它为开发者提供了丰富的音视频处理的调用接口ffmpeg提供了多种媒体格式的封装和解封装,包括多种音视频编码、多种协议的流媒体、多种色彩格式转换、多种采样率转换、多种码率转换等;ffmpeg框架提供了多种丰富的插件模块,包含封装和解封装的插件、编码与解码的插件等官网ffmpeg的基本组成ff</div> </li> <li><a href="/article/5.htm" title="[星球大战]阿纳金的背叛" target="_blank">[星球大战]阿纳金的背叛</a> <span class="text-muted">comsci</span> <div>       本来杰迪圣殿的长老是不同意让阿纳金接受训练的.........     但是由于政治原因,长老会妥协了...这给邪恶的力量带来了机会     所以......现代的地球联邦接受了这个教训...绝对不让某些年轻人进入学院    </div> </li> <li><a href="/article/132.htm" title="看懂它,你就可以任性的玩耍了!" target="_blank">看懂它,你就可以任性的玩耍了!</a> <span class="text-muted">aijuans</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a> <div>          javascript作为前端开发的标配技能,如果不掌握好它的三大特点:1.原型 2.作用域 3. 闭包 ,又怎么可以说你学好了这门语言呢?如果标配的技能都没有撑握好,怎么可以任性的玩耍呢?怎么验证自己学好了以上三个基本点呢,我找到一段不错的代码,稍加改动,如果能够读懂它,那么你就可以任性了。 function jClass(b</div> </li> <li><a href="/article/259.htm" title="Java常用工具包 Jodd" target="_blank">Java常用工具包 Jodd</a> <span class="text-muted">Kai_Ge</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/jodd/1.htm">jodd</a> <div>Jodd 是一个开源的 Java 工具集, 包含一些实用的工具类和小型框架。简单,却很强大! 写道 Jodd = Tools + IoC + MVC + DB + AOP + TX + JSON + HTML < 1.5 Mb Jodd 被分成众多模块,按需选择,其中 工具类模块有: jodd-core    &nb</div> </li> <li><a href="/article/386.htm" title="SpringMvc下载" target="_blank">SpringMvc下载</a> <span class="text-muted">120153216</span> <a class="tag" taget="_blank" href="/search/springMVC/1.htm">springMVC</a> <div>@RequestMapping(value = WebUrlConstant.DOWNLOAD) public void download(HttpServletRequest request,HttpServletResponse response,String fileName) { OutputStream os = null; InputStream is = null; </div> </li> <li><a href="/article/513.htm" title="Python 标准异常总结" target="_blank">Python 标准异常总结</a> <span class="text-muted">2002wmj</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>Python标准异常总结 AssertionError 断言语句(assert)失败 AttributeError 尝试访问未知的对象属性 EOFError 用户输入文件末尾标志EOF(Ctrl+d) FloatingPointError 浮点计算错误 GeneratorExit generator.close()方法被调用的时候 ImportError 导入模块失</div> </li> <li><a href="/article/640.htm" title="SQL函数返回临时表结构的数据用于查询" target="_blank">SQL函数返回临时表结构的数据用于查询</a> <span class="text-muted">357029540</span> <a class="tag" taget="_blank" href="/search/SQL+Server/1.htm">SQL Server</a> <div>这两天在做一个查询的SQL,这个SQL的一个条件是通过游标实现另外两张表查询出一个多条数据,这些数据都是INT类型,然后用IN条件进行查询,并且查询这两张表需要通过外部传入参数才能查询出所需数据,于是想到了用SQL函数返回值,并且也这样做了,由于是返回多条数据,所以把查询出来的INT类型值都拼接为了字符串,这时就遇到问题了,在查询SQL中因为条件是INT值,SQL函数的CAST和CONVERST都</div> </li> <li><a href="/article/767.htm" title="java 时间格式化 | 比较大小| 时区 个人笔记" target="_blank">java 时间格式化 | 比较大小| 时区 个人笔记</a> <span class="text-muted">7454103</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/eclipse/1.htm">eclipse</a><a class="tag" taget="_blank" href="/search/tomcat/1.htm">tomcat</a><a class="tag" taget="_blank" href="/search/c/1.htm">c</a><a class="tag" taget="_blank" href="/search/MyEclipse/1.htm">MyEclipse</a> <div>个人总结! 不当之处多多包含! 引用 1.0 如何设置 tomcat 的时区:          位置:(catalina.bat---JAVA_OPTS  下面加上)          set JAVA_OPT</div> </li> <li><a href="/article/894.htm" title="时间获取Clander的用法" target="_blank">时间获取Clander的用法</a> <span class="text-muted">adminjun</span> <a class="tag" taget="_blank" href="/search/Clander/1.htm">Clander</a><a class="tag" taget="_blank" href="/search/%E6%97%B6%E9%97%B4/1.htm">时间</a> <div>/**    * 得到几天前的时间    * @param d    * @param day    * @return    */   public static Date getDateBefore(Date d,int day){    Calend</div> </li> <li><a href="/article/1021.htm" title="JVM初探与设置" target="_blank">JVM初探与设置</a> <span class="text-muted">aijuans</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。 JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台</div> </li> <li><a href="/article/1148.htm" title="SQL中ON和WHERE的区别" target="_blank">SQL中ON和WHERE的区别</a> <span class="text-muted">avords</span> <div>SQL中ON和WHERE的区别   数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。   www.2cto.com   在使用left jion时,on和where条件的区别如下:  1、 on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。  </div> </li> <li><a href="/article/1275.htm" title="说说自信" target="_blank">说说自信</a> <span class="text-muted">houxinyou</span> <a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a><a class="tag" taget="_blank" href="/search/%E7%94%9F%E6%B4%BB/1.htm">生活</a> <div>自信的来源分为两种,一种是源于实力,一种源于头脑.实力是一个综合的评定,有自身的能力,能利用的资源等.比如我想去月亮上,要身体素质过硬,还要有飞船等等一系列的东西.这些都属于实力的一部分.而头脑不同,只要你头脑够简单就可以了!同样要上月亮上,你想,我一跳,1米,我多跳几下,跳个几年,应该就到了!什么?你说我会往下掉?你笨呀你!找个东西踩一下不就行了吗?     无论工作还</div> </li> <li><a href="/article/1402.htm" title="WEBLOGIC事务超时设置" target="_blank">WEBLOGIC事务超时设置</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/weblogic/1.htm">weblogic</a><a class="tag" taget="_blank" href="/search/jta/1.htm">jta</a><a class="tag" taget="_blank" href="/search/%E4%BA%8B%E5%8A%A1%E8%B6%85%E6%97%B6/1.htm">事务超时</a> <div>        系统中统计数据,由于调用统计过程,执行时间超过了weblogic设置的时间,提示如下错误: 统计数据出错! 原因:The transaction is no longer active - status: 'Rolling Back. [Reason=weblogic.transaction.internal</div> </li> <li><a href="/article/1529.htm" title="两年已过去,再看该如何快速融入新团队" target="_blank">两年已过去,再看该如何快速融入新团队</a> <span class="text-muted">bingyingao</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E4%BA%92%E8%81%94%E7%BD%91/1.htm">互联网</a><a class="tag" taget="_blank" href="/search/%E8%9E%8D%E5%85%A5/1.htm">融入</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a><a class="tag" taget="_blank" href="/search/%E6%96%B0%E5%9B%A2%E9%98%9F/1.htm">新团队</a> <div>偶得的空闲,翻到了两年前的帖子 该如何快速融入一个新团队,有所感触,就记下来,为下一个两年后的今天做参考。     时隔两年半之后的今天,再来看当初的这个博客,别有一番滋味。而我已经于今年三月份离开了当初所在的团队,加入另外的一个项目组,2011年的这篇博客之后的时光,我很好的融入了那个团队,而直到现在和同事们关系都特别好。大家在短短一年半的时间离一起经历了一</div> </li> <li><a href="/article/1656.htm" title="【Spark七十七】Spark分析Nginx和Apache的access.log" target="_blank">【Spark七十七】Spark分析Nginx和Apache的access.log</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/apache/1.htm">apache</a> <div>Spark分析Nginx和Apache的access.log,第一个问题是要对Nginx和Apache的access.log文件进行按行解析,按行解析就的方法是正则表达式:   Nginx的access.log解析正则表达式   val PATTERN = """([^ ]*) ([^ ]*) ([^ ]*) (\\[.*\\]) (\&q</div> </li> <li><a href="/article/1783.htm" title="Erlang patch" target="_blank">Erlang patch</a> <span class="text-muted">bookjovi</span> <a class="tag" taget="_blank" href="/search/erlang/1.htm">erlang</a> <div>Totally five patchs committed to erlang otp, just small patchs. IMO, erlang really is a interesting programming language, I really like its concurrency feature. but the functional programming style </div> </li> <li><a href="/article/1910.htm" title="log4j日志路径中加入日期" target="_blank">log4j日志路径中加入日期</a> <span class="text-muted">bro_feng</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/log4j/1.htm">log4j</a> <div>要用log4j使用记录日志,日志路径有每日的日期,文件大小5M新增文件。 实现方式 log4j: <appender name="serviceLog" class="org.apache.log4j.RollingFileAppender"> <param name="Encoding" v</div> </li> <li><a href="/article/2037.htm" title="读《研磨设计模式》-代码笔记-桥接模式" target="_blank">读《研磨设计模式》-代码笔记-桥接模式</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a> <div>声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/ /** * 个人觉得关于桥接模式的例子,蜡笔和毛笔这个例子是最贴切的:http://www.cnblogs.com/zhenyulu/articles/67016.html * 笔和颜色是可分离的,蜡笔把两者耦合在一起了:一支蜡笔只有一种</div> </li> <li><a href="/article/2164.htm" title="windows7下SVN和Eclipse插件安装" target="_blank">windows7下SVN和Eclipse插件安装</a> <span class="text-muted">chenyu19891124</span> <a class="tag" taget="_blank" href="/search/eclipse%E6%8F%92%E4%BB%B6/1.htm">eclipse插件</a> <div>今天花了一天时间弄SVN和Eclipse插件的安装,今天弄好了。svn插件和Eclipse整合有两种方式,一种是直接下载插件包,二种是通过Eclipse在线更新。由于之前Eclipse版本和svn插件版本有差别,始终是没装上。最后在网上找到了适合的版本。所用的环境系统:windows7JDK:1.7svn插件包版本:1.8.16Eclipse:3.7.2工具下载地址:Eclipse下在地址:htt</div> </li> <li><a href="/article/2291.htm" title="[转帖]工作流引擎设计思路" target="_blank">[转帖]工作流引擎设计思路</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a><a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a><a class="tag" taget="_blank" href="/search/%E5%BA%94%E7%94%A8%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">应用服务器</a><a class="tag" taget="_blank" href="/search/workflow/1.htm">workflow</a><a class="tag" taget="_blank" href="/search/%E4%BC%81%E4%B8%9A%E5%BA%94%E7%94%A8/1.htm">企业应用</a> <div> 作为国内的同行,我非常希望在流程设计方面和大家交流,刚发现篇好文(那么好的文章,现在才发现,可惜),关于流程设计的一些原理,个人觉得本文站得高,看得远,比俺的文章有深度,转载如下 ================================================================================= 自开博以来不断有朋友来探讨工作流引擎该如何</div> </li> <li><a href="/article/2418.htm" title="Linux 查看内存,CPU及硬盘大小的方法" target="_blank">Linux 查看内存,CPU及硬盘大小的方法</a> <span class="text-muted">daizj</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/cpu/1.htm">cpu</a><a class="tag" taget="_blank" href="/search/%E5%86%85%E5%AD%98/1.htm">内存</a><a class="tag" taget="_blank" href="/search/%E7%A1%AC%E7%9B%98/1.htm">硬盘</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E5%B0%8F/1.htm">大小</a> <div>一、查看CPU信息的命令 [root@R4 ~]# cat /proc/cpuinfo |grep "model name" && cat /proc/cpuinfo |grep "physical id" model name : Intel(R) Xeon(R) CPU X5450 @ 3.00GHz model name : </div> </li> <li><a href="/article/2545.htm" title="linux 踢出在线用户" target="_blank">linux 踢出在线用户</a> <span class="text-muted">dongwei_6688</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a> <div>两个步骤: 1.用w命令找到要踢出的用户,比如下面:   [root@localhost ~]# w 18:16:55 up 39 days, 8:27, 3 users, load average: 0.03, 0.03, 0.00 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT</div> </li> <li><a href="/article/2672.htm" title="放手吧,就像不曾拥有过一样" target="_blank">放手吧,就像不曾拥有过一样</a> <span class="text-muted">dcj3sjt126com</span> <div>内容提要: 静悠悠编著的《放手吧就像不曾拥有过一样》集结“全球华语世界最舒缓心灵”的精华故事,触碰生命最深层次的感动,献给全世界亿万读者。《放手吧就像不曾拥有过一样》的作者衷心地祝愿每一位读者都给自己一个重新出发的理由,将那些令你痛苦的、扛起的、背负的,一并都放下吧!把憔悴的面容换做一种清淡的微笑,把沉重的步伐调节成春天五线谱上的音符,让自己踏着轻快的节奏,在人生的海面上悠然漂荡,享受宁静与</div> </li> <li><a href="/article/2799.htm" title="php二进制安全的含义" target="_blank">php二进制安全的含义</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a> <div>PHP里,有string的概念。 string里,每个字符的大小为byte(与PHP相比,Java的每个字符为Character,是UTF8字符,C语言的每个字符可以在编译时选择)。 byte里,有ASCII代码的字符,例如ABC,123,abc,也有一些特殊字符,例如回车,退格之类的。 特殊字符很多是不能显示的。或者说,他们的显示方式没有标准,例如编码65到哪儿都是字母A,编码97到哪儿都是字符</div> </li> <li><a href="/article/2926.htm" title="Linux下禁用T440s,X240的一体化触摸板(touchpad)" target="_blank">Linux下禁用T440s,X240的一体化触摸板(touchpad)</a> <span class="text-muted">gashero</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/ThinkPad/1.htm">ThinkPad</a><a class="tag" taget="_blank" href="/search/%E8%A7%A6%E6%91%B8%E6%9D%BF/1.htm">触摸板</a> <div>自打1月买了Thinkpad T440s就一直很火大,其中最让人恼火的莫过于触摸板。   Thinkpad的经典就包括用了小红点(TrackPoint)。但是小红点只能定位,还是需要鼠标的左右键的。但是自打T440s等开始启用了一体化触摸板,不再有实体的按键了。问题是要是好用也行。   实际使用中,触摸板一堆问题,比如定位有抖动,以及按键时会有飘逸。这就导致了单击经常就</div> </li> <li><a href="/article/3053.htm" title="graph_dfs" target="_blank">graph_dfs</a> <span class="text-muted">hcx2013</span> <a class="tag" taget="_blank" href="/search/Graph/1.htm">Graph</a> <div>package edu.xidian.graph; class MyStack { private final int SIZE = 20; private int[] st; private int top; public MyStack() { st = new int[SIZE]; top = -1; } public void push(i</div> </li> <li><a href="/article/3180.htm" title="Spring4.1新特性——Spring核心部分及其他" target="_blank">Spring4.1新特性——Spring核心部分及其他</a> <span class="text-muted">jinnianshilongnian</span> <a class="tag" taget="_blank" href="/search/spring+4.1/1.htm">spring 4.1</a> <div>目录 Spring4.1新特性——综述 Spring4.1新特性——Spring核心部分及其他 Spring4.1新特性——Spring缓存框架增强 Spring4.1新特性——异步调用和事件机制的异常处理 Spring4.1新特性——数据库集成测试脚本初始化 Spring4.1新特性——Spring MVC增强 Spring4.1新特性——页面自动化测试框架Spring MVC T</div> </li> <li><a href="/article/3307.htm" title="配置HiveServer2的安全策略之自定义用户名密码验证" target="_blank">配置HiveServer2的安全策略之自定义用户名密码验证</a> <span class="text-muted">liyonghui160com</span> <div>    具体从网上看   http://doc.mapr.com/display/MapR/Using+HiveServer2#UsingHiveServer2-ConfiguringCustomAuthentication   LDAP Authentication using OpenLDAP Setting </div> </li> <li><a href="/article/3434.htm" title="一位30多的程序员生涯经验总结" target="_blank">一位30多的程序员生涯经验总结</a> <span class="text-muted">pda158</span> <a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B/1.htm">编程</a><a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a><a class="tag" taget="_blank" href="/search/%E7%94%9F%E6%B4%BB/1.htm">生活</a><a class="tag" taget="_blank" href="/search/%E5%92%A8%E8%AF%A2/1.htm">咨询</a> <div>1.客户在接触到产品之后,才会真正明白自己的需求。   这是我在我的第一份工作上面学来的。只有当我们给客户展示产品的时候,他们才会意识到哪些是必须的。给出一个功能性原型设计远远比一张长长的文字表格要好。 2.只要有充足的时间,所有安全防御系统都将失败。   安全防御现如今是全世界都在关注的大课题、大挑战。我们必须时时刻刻积极完善它,因为黑客只要有一次成功,就可以彻底打败你。   3.</div> </li> <li><a href="/article/3561.htm" title="分布式web服务架构的演变" target="_blank">分布式web服务架构的演变</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/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/%E5%BA%94%E7%94%A8%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">应用服务器</a><a class="tag" taget="_blank" href="/search/%E4%BA%92%E8%81%94%E7%BD%91/1.htm">互联网</a> <div>最开始,由于某些想法,于是在互联网上搭建了一个网站,这个时候甚至有可能主机都是租借的,但由于这篇文章我们只关注架构的演变历程,因此就假设这个时候已经是托管了一台主机,并且有一定的带宽了,这个时候由于网站具备了一定的特色,吸引了部分人访问,逐渐你发现系统的压力越来越高,响应速度越来越慢,而这个时候比较明显的是数据库和应用互相影响,应用出问题了,数据库也很容易出现问题,而数据库出问题的时候,应用也容易</div> </li> <li><a href="/article/3688.htm" title="初探Druid连接池之二——慢SQL日志记录" target="_blank">初探Druid连接池之二——慢SQL日志记录</a> <span class="text-muted">xingsan_zhang</span> <a class="tag" taget="_blank" href="/search/%E6%97%A5%E5%BF%97/1.htm">日志</a><a class="tag" taget="_blank" href="/search/%E8%BF%9E%E6%8E%A5%E6%B1%A0/1.htm">连接池</a><a class="tag" taget="_blank" href="/search/druid/1.htm">druid</a><a class="tag" taget="_blank" href="/search/%E6%85%A2SQL/1.htm">慢SQL</a> <div>由于工作原因,这里先不说连接数据库部分的配置,后面会补上,直接进入慢SQL日志记录。   1.applicationContext.xml中增加如下配置: <bean abstract="true" id="mysql_database" class="com.alibaba.druid.pool.DruidDataSourc</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>