You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
SoftwareEngineering/直播工具包/librtmp分析/LibRTMP源代码分析9:接收消息 - wongai...

6472 lines
1.0 MiB

5 years ago
<!DOCTYPE html>
<html lang="zh-CN"><head><style>.login-box{position: fixed;display: none;left: 50%;top: 50%;z-index: 10000;-webkit-transform: translate(-50%, -50%);-ms-transform: translate(-50%, -50%);-o-transform: translate(-50%, -50%);-moz-transform: translate(-50%, -50%);transform: translate(-50%, -50%);background-color: #fff;}.login-mark{position: fixed;top: 0;left: 0;z-index: 9999;background-color: rgba(0, 0, 0, 0.5);width: 100%;height: 100%;display: none;}</style><script type="text/javascript" async="" src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/auto_dup"></script><script type="text/javascript" charset="utf-8" src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/apiaccept"></script><script type="text/javascript" async="" src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/pr.js"></script>
<meta charset="UTF-8">
<link rel="canonical" href="https://blog.csdn.net/wongainia158158/article/details/48627039">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta name="renderer" content="webkit">
<meta name="force-rendering" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="referrer" content="always">
<meta http-equiv="Cache-Control" content="no-siteapp"><link rel="alternate" media="handheld" href="#">
<meta name="shenma-site-verification" content="5a59773ab8077d4a62bf469ab966a63b_1497598848">
<meta name="csdn-baidu-search" content="{&quot;autorun&quot;:true,&quot;install&quot;:true,&quot;keyword&quot;:&quot;LibRTMP源代码分析9:接收消息 - wongainia158158的博客&quot;}">
<link href="https://csdnimg.cn/public/favicon.ico" rel="SHORTCUT ICON">
<title>LibRTMP源代码分析9:接收消息 - wongainia158158的博客 - CSDN博客</title>
<link rel="stylesheet" href="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/detail-a0a545005c.css">
<link rel="stylesheet" href="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/skin3-template-9b39979775.css">
<script type="text/javascript" async="" src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/icgkglf.js"></script><script src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/hm.js"></script><script src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/hm.js"></script><script type="text/javascript">
var username = "wongainia158158";
var blog_address = "https://blog.csdn.net/wongainia158158";
var static_host = "https://csdnimg.cn/release/phoenix/";
var currentUserName = "";
var isShowAds = true;
var isOwner = false;
var loginUrl = "http://passport.csdn.net/account/login?from=https://blog.csdn.net/wongainia158158/article/details/48627039"
var blogUrl = "https://blog.csdn.net/";
//页面皮肤样式
var curSkin = "skin3-template";
// 第四范式所需数据
var articleTitles = "LibRTMP源代码分析9:接收消息 - wongainia158158的博客";
var articleID = "48627039";
var nickName = "wongainia158158";
var isCorporate = false;
var subDomainBlogUrl = "https://blog.csdn.net/"
</script>
<script type="text/javascript">
// Traffic Stats of the entire Web site By baidu
var _hmt = _hmt || [];
(function() {
var hm = document.createElement("script");
hm.src = "https://hm.baidu.com/hm.js?6bcd52f51e9b3dce32bec4a3997715ac";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
// Traffic Stats of the entire Web site By baidu end
</script>
<script src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/jquery-1.js" type="text/javascript"></script>
<script src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/main-1.js"></script>
<script src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/fixed-sidebar.js" type="text/javascript"></script>
<!-- 新版上报 -->
<script src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/track.js" type="text/javascript"></script>
<!-- 新版上报end -->
<link rel="stylesheet" href="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/sandalstrap.css">
<style>
.MathJax, .MathJax_Message, .MathJax_Preview{
display: none
}
</style>
<style type="text/css" id="QIHOO_FEED_CSS">newsfeed{display:block;}newsfeed .img{background-size:cover;background-repeat:no-repeat;}newsfeed{display:block;}newsfeed .img{background-size:cover;background-repeat:no-repeat;}.QIHOO__WEB__SO__1551757398677_486 info-div{display:block}.QIHOO__WEB__SO__1551757398677_486
.singleImage{
background-color:#fff;
padding: 20px 0px 0px 20px;
overflow: hidden;
width: 880px;
height: 80px;
cursor: pointer;
position:relative;
}.QIHOO__WEB__SO__1551757398677_486
.singleImage .wrap{
position:relative;
width: 880px;
height: 80px;
}.QIHOO__WEB__SO__1551757398677_486
.singleImage .visited .singleImage-title{
color: #9e9e9e;
}.QIHOO__WEB__SO__1551757398677_486
.singleImage .singleImage-img{
width: 90px;
height: 68px;
padding: 0px 0px;
display: block;
}.QIHOO__WEB__SO__1551757398677_486
.singleImage .singleImage-img-left{
float:left;
}.QIHOO__WEB__SO__1551757398677_486
.singleImage .singleImage-img-right{
float:right;
}.QIHOO__WEB__SO__1551757398677_486
.singleImage .singleImage-img-top{
position: absolute;
top : 0;
}.QIHOO__WEB__SO__1551757398677_486
.singleImage .singleImage-img-bottom{
position: absolute;
bottom : 0;
}.QIHOO__WEB__SO__1551757398677_486
.singleImage .singleImage-img .img{
width: 90px;
height: 68px;
border-radius: 0px;
position: relative;
}.QIHOO__WEB__SO__1551757398677_486
.singleImage .singleImage-body{
width: 790px;
height: 80px;
}.QIHOO__WEB__SO__1551757398677_486
.singleImage .singleImage-body-left{
float: left;
}.QIHOO__WEB__SO__1551757398677_486
.singleImage .singleImage-body-right{
float: left;
}.QIHOO__WEB__SO__1551757398677_486
.singleImage .singleImage-body-top{
position:absolute;
bottom:0;
}.QIHOO__WEB__SO__1551757398677_486
.singleImage .singleImage-body-bottom{
position:absolute;
top:0;
}.QIHOO__WEB__SO__1551757398677_486
.singleImage .singleImage-title{
font-size: 18px;
font-family: Lato,-apple-system,SF UI Text,Arial,PingFang SC,Hiragino Sans GB,Microsoft YaHei,WenQuanYi Micro Hei,sans-serif;
font-weight: bold;
color: #000;
padding: 0px 0px 5px 16px;
display: block;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}.QIHOO__WEB__SO__1551757398677_486
.singleImage .singleImage-title:hover{
color: #000;
}.QIHOO__WEB__SO__1551757398677_486
.singleImage .singleImage-desc{
font-size: 14px;
font-family: Microsoft YaHei;
color: #8e959a;
display: block;
padding: 0px 0px 0px 16px;
overflow: hidden;
white-space: nowrap;
}.QIHOO__WEB__SO__1551757398677_486
.singleImage .ads-tag{
position: absolute;
top: 0;
right: 0;
width: 22px;
height: 12px;
background-image: url(//p0.ssl.qhimg.com/t01c5fc7f8612d6b610.png);
}.QIHOO__WEB__SO__1551757398677_486 .mulImage .visited .mulimg-title{
color:#9e9e9e;
}.QIHOO__WEB__SO__1551757398677_486
.mulImage{.QIHOO__WEB__SO__1551757398677_486
padding: {paddingTop}.QIHOO__WEB__SO__1551757398677_486 px {paddingRight}.QIHOO__WEB__SO__1551757398677_486 px {paddingBottom}.QIHOO__WEB__SO__1551757398677_486 px {paddingLeft}px;.QIHOO__WEB__SO__1551757398677_486
background-color:{backgroundColor};
width: 900px;
height: NaNpx;
overflow: hidden;
cursor: pointer;
}.QIHOO__WEB__SO__1551757398677_486
.mulImage .mulimg-wrapper {
position: relative;
vertical-align: top;
width: 900px;
height: NaNpx;
}.QIHOO__WEB__SO__1551757398677_486
.mulImage .mulimg-title {
overflow: hidden;.QIHOO__WEB__SO__1551757398677_486
font-size: {titleFontSize}px;.QIHOO__WEB__SO__1551757398677_486
font-family: {titleFontFamily};.QIHOO__WEB__SO__1551757398677_486
font-weight: {titleFontWeight};.QIHOO__WEB__SO__1551757398677_486
color: {titleFontColor};.QIHOO__WEB__SO__1551757398677_486
padding: {titlePaddingTop}.QIHOO__WEB__SO__1551757398677_486 px {titlePaddingRight}.QIHOO__WEB__SO__1551757398677_486 px {titlePaddingBottom}.QIHOO__WEB__SO__1551757398677_486 px {titlePaddingLeft}px;
line-height: 1.3;
white-space: nowrap;
text-overflow: ellipsis;
letter-spacing:0.05em;
}.QIHOO__WEB__SO__1551757398677_486
.mulImage .mulimg-title:hover {.QIHOO__WEB__SO__1551757398677_486
color: {hoverColor};
}.QIHOO__WEB__SO__1551757398677_486
.mulImage .mulimg-grid-wrap{
position: relative;
}.QIHOO__WEB__SO__1551757398677_486
.mulImage .mulimg-figure-grid{
overflow: hidden;
}.QIHOO__WEB__SO__1551757398677_486
.mulImage .mulimg-figure{
float: left;.QIHOO__WEB__SO__1551757398677_486
margin-right:{imageSplitWidth}px;
}.QIHOO__WEB__SO__1551757398677_486
.mulImage .mulimg-figure-img {
overflow: hidden;
position: relative;
padding: NaNpx 0px;
}.QIHOO__WEB__SO__1551757398677_486
.mulImage .mulimg-figure-img .img{.QIHOO__WEB__SO__1551757398677_486
width:{imgW}px;
height:NaNpx;.QIHOO__WEB__SO__1551757398677_486
border-radius:{imageBorderRadius}px;
}.QIHOO__WEB__SO__1551757398677_486
.mulImage .mulimg-extra{
color: #999;
height: NaNpx;
line-height: NaNpx;
overflow: hidden;
white-space: nowrap;
}.QIHOO__WEB__SO__1551757398677_486
.mulImage .mulimg-extra .mul-ads-tag{
width: 30px;
color: #ddd;
font-size: 12px;
display: inline;
}.QIHOO__WEB__SO__1551757398677_486
.mulImage .mulimg-extra .ads-tag{
font-size: 12px;
color: #999;
display: inline;
}.QIHOO__WEB__SO__1551757398677_486 .mulImageWindow .visited .mulimg-title{
color:#9e9e9e;
}.QIHOO__WEB__SO__1551757398677_486
.mulImageWindow{.QIHOO__WEB__SO__1551757398677_486
padding: {paddingTop}.QIHOO__WEB__SO__1551757398677_486 px {paddingRight}.QIHOO__WEB__SO__1551757398677_486 px {paddingBottom}.QIHOO__WEB__SO__1551757398677_486 px {paddingLeft}px;.QIHOO__WEB__SO__1551757398677_486
background-color:{backgroundColor};
width: 900px;
height: NaNpx;
overflow: hidden;
cursor: pointer;
}.QIHOO__WEB__SO__1551757398677_486
.mulImageWindow .mulimg-wrapper {
position: relative;
vertical-align: top;
width: 900px;
height: NaNpx;
}.QIHOO__WEB__SO__1551757398677_486
.mulImageWindow .mulimg-title {
overflow: hidden;.QIHOO__WEB__SO__1551757398677_486
font-size: {titleFontSize}px;.QIHOO__WEB__SO__1551757398677_486
font-family: {titleFontFamily};.QIHOO__WEB__SO__1551757398677_486
font-weight: {titleFontWeight};.QIHOO__WEB__SO__1551757398677_486
color: {titleFontColor};.QIHOO__WEB__SO__1551757398677_486
padding: {titlePaddingTop}.QIHOO__WEB__SO__1551757398677_486 px {titlePaddingRight}.QIHOO__WEB__SO__1551757398677_486 px {titlePaddingBottom}.QIHOO__WEB__SO__1551757398677_486 px {titlePaddingLeft}px;
line-height: 1.3;
white-space: nowrap;
text-overflow: ellipsis;
letter-spacing:0.05em;
}.QIHOO__WEB__SO__1551757398677_486
.mulImageWindow .mulimg-title:hover {.QIHOO__WEB__SO__1551757398677_486
color: {hoverColor};
}.QIHOO__WEB__SO__1551757398677_486
.mulImageWindow .mulimg-grid-wrap{
position: relative;
}.QIHOO__WEB__SO__1551757398677_486
.mulImageWindow .mulimg-figure-grid{
overflow: hidden;
}.QIHOO__WEB__SO__1551757398677_486
.mulImageWindow .mulimg-figure{
float: left;.QIHOO__WEB__SO__1551757398677_486
margin-right:{imageSplitWidth}px;
}.QIHOO__WEB__SO__1551757398677_486
.mulImageWindow .mulimg-figure-img {
overflow: hidden;
position: relative;
padding: 0px NaNpx;
}.QIHOO__WEB__SO__1551757398677_486
.mulImageWindow .mulimg-figure-img .img{
width:NaNpx;.QIHOO__WEB__SO__1551757398677_486
height:{imgH}px;.QIHOO__WEB__SO__1551757398677_486
border-radius:{imageBorderRadius}px;
}.QIHOO__WEB__SO__1551757398677_486
.mulImageWindow .mulimg-figure-img .window-item__title{
display: block;
width: 100%;
position: absolute;
bottom: 0;
background-color: rgba(0,0,0,0.5);
filter: progid:DXImageTransform.Microsoft.gradient(startcolorstr=#88000000, endcolorstr=#88000000);
color: #fff;.QIHOO__WEB__SO__1551757398677_486
font-size: {windowItemTitleFontSize}px;
line-height: 1.5;
text-align: center;
white-space: nowrap;
overflow:hidden;
text-overflow: ellipsis;
}.QIHOO__WEB__SO__1551757398677_486
.mulImageWindow .mulimg-extra{
color: #999;
height: NaNpx;
line-height: NaNpx;
overflow: hidden;
white-space: nowrap;
}.QIHOO__WEB__SO__1551757398677_486
.mulImageWindow .mulimg-extra .mul-ads-tag{
width: 30px;
color: #ddd;
font-size: 12px;
display: inline;
}.QIHOO__WEB__SO__1551757398677_486
.mulImageWindow .mulimg-extra .ads-tag{
font-size: 12px;
color: #999;
display: inline;
}.QIHOO__WEB__SO__1551757398677_486 .largeImage .visited .largeImage-title{
color: #9e9e9e;
}.QIHOO__WEB__SO__1551757398677_486
.largeImage{.QIHOO__WEB__SO__1551757398677_486
padding: {paddingTop}.QIHOO__WEB__SO__1551757398677_486 px {paddingRight}.QIHOO__WEB__SO__1551757398677_486 px {paddingBottom}.QIHOO__WEB__SO__1551757398677_486 px {paddingLeft}px;.QIHOO__WEB__SO__1551757398677_486
background-color:{backgroundColor};
width: 900px;
height: NaNpx;
overflow: hidden;
cursor: pointer;
}.QIHOO__WEB__SO__1551757398677_486
.largeImage .largeImage-wrapper {
position: relative;
vertical-align: top;
width: 900px;
height: NaNpx;
}.QIHOO__WEB__SO__1551757398677_486
.largeImage .largeImage-title {
display: none;
overflow: hidden;.QIHOO__WEB__SO__1551757398677_486
font-size: {titleFontSize}px;.QIHOO__WEB__SO__1551757398677_486
font-family: {titleFontFamily};.QIHOO__WEB__SO__1551757398677_486
font-weight: {titleFontWeight};.QIHOO__WEB__SO__1551757398677_486
color: {titleFontColor};.QIHOO__WEB__SO__1551757398677_486
padding: {titlePaddingTop}.QIHOO__WEB__SO__1551757398677_486 px {titlePaddingRight}.QIHOO__WEB__SO__1551757398677_486 px {titlePaddingBottom}.QIHOO__WEB__SO__1551757398677_486 px {titlePaddingLeft}px;
line-height: 1.3;
white-space: nowrap;
text-overflow: ellipsis;
letter-spacing:0.05em;
}.QIHOO__WEB__SO__1551757398677_486
.largeImage .largeImage-title:hover {.QIHOO__WEB__SO__1551757398677_486
color:{hoverColor};
}.QIHOO__WEB__SO__1551757398677_486
.largeImage .largeImage-body{
position: relative;
vertical-align: top;
}.QIHOO__WEB__SO__1551757398677_486
.largeImage .largeImage-grid-wrap {
position: relative;
padding: NaNpx 0px;
}.QIHOO__WEB__SO__1551757398677_486
.largeImage .largeImage-grid-wrap .img {.QIHOO__WEB__SO__1551757398677_486
width:{imgW}px;
height:NaNpx;.QIHOO__WEB__SO__1551757398677_486
border-radius:{imageBorderRadius}px;
position: relative;
}.QIHOO__WEB__SO__1551757398677_486
.largeImage .largeImage-extra {
display: none;
color: #999;
height: NaNpx;
line-height: NaNpx;
overflow: hidden;
white-space: nowrap;
}.QIHOO__WEB__SO__1551757398677_486
.largeImage .largeImage-extra .largeImage-ad-tag{
width: 30px;
color: #ddd;
font-size: 12px;
display: inline;
}.QIHOO__WEB__SO__1551757398677_486
.largeImage .largeImage-extra .largeImage-ad-src{
font-size: 12px;
color: #999;
display: inline;
}.QIHOO__WEB__SO__1551757398677_486
.largeImage .ads-tag{
position: absolute;
display : block;
top: 0;
right: 0;
width: 22px;
height: 12px;
background-image: url(//p0.ssl.qhimg.com/t01c5fc7f8612d6b610.png);
}newsfeed{display:block;}newsfeed .img{background-size:cover;background-repeat:no-repeat;}.QIHOO__WEB__SO__1551757398726_120 info-div{display:block}.QIHOO__WEB__SO__1551757398726_120
.singleImage{
background-color:#fff;
padding: 0px 0px 0px 0px;
overflow: hidden;
width: 852px;
height: 52px;
cursor: pointer;
position:relative;
}.QIHOO__WEB__SO__1551757398726_120
.singleImage .wrap{
position:relative;
width: 852px;
height: 52px;
}.QIHOO__WEB__SO__1551757398726_120
.singleImage .visited .singleImage-title{
color: #9e9e9e;
}.QIHOO__WEB__SO__1551757398726_120
.singleImage .singleImage-img{
width: 90px;
height: 52px;
padding: 0px 0px;
display: block;
}.QIHOO__WEB__SO__1551757398726_120
.singleImage .singleImage-img-left{
float:left;
}.QIHOO__WEB__SO__1551757398726_120
.singleImage .singleImage-img-right{
float:right;
}.QIHOO__WEB__SO__1551757398726_120
.singleImage .singleImage-img-top{
position: absolute;
top : 0;
}.QIHOO__WEB__SO__1551757398726_120
.singleImage .singleImage-img-bottom{
position: absolute;
bottom : 0;
}.QIHOO__WEB__SO__1551757398726_120
.singleImage .singleImage-img .img{
width: 90px;
height: 52px;
border-radius: 3px;
position: relative;
}.QIHOO__WEB__SO__1551757398726_120
.singleImage .singleImage-body{
width: 762px;
height: 52px;
}.QIHOO__WEB__SO__1551757398726_120
.singleImage .singleImage-body-left{
float: left;
}.QIHOO__WEB__SO__1551757398726_120
.singleImage .singleImage-body-right{
float: left;
}.QIHOO__WEB__SO__1551757398726_120
.singleImage .singleImage-body-top{
position:absolute;
bottom:0;
}.QIHOO__WEB__SO__1551757398726_120
.singleImage .singleImage-body-bottom{
position:absolute;
top:0;
}.QIHOO__WEB__SO__1551757398726_120
.singleImage .singleImage-title{
font-size: 18px;
font-family: Lato,-apple-system,SF UI Text,Arial,PingFang SC,Hiragino Sans GB,Microsoft YaHei,WenQuanYi Micro Hei,sans-serif;
font-weight: bold;
color: #000;
padding: 0px 0px 5px 16px;
display: block;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}.QIHOO__WEB__SO__1551757398726_120
.singleImage .singleImage-title:hover{
color: #000;
}.QIHOO__WEB__SO__1551757398726_120
.singleImage .singleImage-desc{
font-size: 14px;
font-family: Microsoft Yahei;
color: #8e959a;
display: block;
padding: 0px 0px 0px 16px;
overflow: hidden;
white-space: nowrap;
}.QIHOO__WEB__SO__1551757398726_120
.singleImage .ads-tag{
position: absolute;
top: 0;
right: 0;
width: 22px;
height: 12px;
background-image: url(//p0.ssl.qhimg.com/t01c5fc7f8612d6b610.png);
}.QIHOO__WEB__SO__1551757398726_120 .mulImage .visited .mulimg-title{
color:#9e9e9e;
}.QIHOO__WEB__SO__1551757398726_120
.mulImage{.QIHOO__WEB__SO__1551757398726_120
padding: {paddingTop}.QIHOO__WEB__SO__1551757398726_120 px {paddingRight}.QIHOO__WEB__SO__1551757398726_120 px {paddingBottom}.QIHOO__WEB__SO__1551757398726_120 px {paddingLeft}px;.QIHOO__WEB__SO__1551757398726_120
background-color:{backgroundColor};
width: 852px;
height: NaNpx;
overflow: hidden;
cursor: pointer;
}.QIHOO__WEB__SO__1551757398726_120
.mulImage .mulimg-wrapper {
position: relative;
vertical-align: top;
width: 852px;
height: NaNpx;
}.QIHOO__WEB__SO__1551757398726_120
.mulImage .mulimg-title {
overflow: hidden;.QIHOO__WEB__SO__1551757398726_120
font-size: {titleFontSize}px;.QIHOO__WEB__SO__1551757398726_120
font-family: {titleFontFamily};.QIHOO__WEB__SO__1551757398726_120
font-weight: {titleFontWeight};.QIHOO__WEB__SO__1551757398726_120
color: {titleFontColor};.QIHOO__WEB__SO__1551757398726_120
padding: {titlePaddingTop}.QIHOO__WEB__SO__1551757398726_120 px {titlePaddingRight}.QIHOO__WEB__SO__1551757398726_120 px {titlePaddingBottom}.QIHOO__WEB__SO__1551757398726_120 px {titlePaddingLeft}px;
line-height: 1.3;
white-space: nowrap;
text-overflow: ellipsis;
letter-spacing:0.05em;
}.QIHOO__WEB__SO__1551757398726_120
.mulImage .mulimg-title:hover {.QIHOO__WEB__SO__1551757398726_120
color: {hoverColor};
}.QIHOO__WEB__SO__1551757398726_120
.mulImage .mulimg-grid-wrap{
position: relative;
}.QIHOO__WEB__SO__1551757398726_120
.mulImage .mulimg-figure-grid{
overflow: hidden;
}.QIHOO__WEB__SO__1551757398726_120
.mulImage .mulimg-figure{
float: left;.QIHOO__WEB__SO__1551757398726_120
margin-right:{imageSplitWidth}px;
}.QIHOO__WEB__SO__1551757398726_120
.mulImage .mulimg-figure-img {
overflow: hidden;
position: relative;
padding: NaNpx 0px;
}.QIHOO__WEB__SO__1551757398726_120
.mulImage .mulimg-figure-img .img{.QIHOO__WEB__SO__1551757398726_120
width:{imgW}px;
height:NaNpx;.QIHOO__WEB__SO__1551757398726_120
border-radius:{imageBorderRadius}px;
}.QIHOO__WEB__SO__1551757398726_120
.mulImage .mulimg-extra{
color: #999;
height: NaNpx;
line-height: NaNpx;
overflow: hidden;
white-space: nowrap;
}.QIHOO__WEB__SO__1551757398726_120
.mulImage .mulimg-extra .mul-ads-tag{
width: 30px;
color: #ddd;
font-size: 12px;
display: inline;
}.QIHOO__WEB__SO__1551757398726_120
.mulImage .mulimg-extra .ads-tag{
font-size: 12px;
color: #999;
display: inline;
}.QIHOO__WEB__SO__1551757398726_120 .mulImageWindow .visited .mulimg-title{
color:#9e9e9e;
}.QIHOO__WEB__SO__1551757398726_120
.mulImageWindow{.QIHOO__WEB__SO__1551757398726_120
padding: {paddingTop}.QIHOO__WEB__SO__1551757398726_120 px {paddingRight}.QIHOO__WEB__SO__1551757398726_120 px {paddingBottom}.QIHOO__WEB__SO__1551757398726_120 px {paddingLeft}px;.QIHOO__WEB__SO__1551757398726_120
background-color:{backgroundColor};
width: 852px;
height: NaNpx;
overflow: hidden;
cursor: pointer;
}.QIHOO__WEB__SO__1551757398726_120
.mulImageWindow .mulimg-wrapper {
position: relative;
vertical-align: top;
width: 852px;
height: NaNpx;
}.QIHOO__WEB__SO__1551757398726_120
.mulImageWindow .mulimg-title {
overflow: hidden;.QIHOO__WEB__SO__1551757398726_120
font-size: {titleFontSize}px;.QIHOO__WEB__SO__1551757398726_120
font-family: {titleFontFamily};.QIHOO__WEB__SO__1551757398726_120
font-weight: {titleFontWeight};.QIHOO__WEB__SO__1551757398726_120
color: {titleFontColor};.QIHOO__WEB__SO__1551757398726_120
padding: {titlePaddingTop}.QIHOO__WEB__SO__1551757398726_120 px {titlePaddingRight}.QIHOO__WEB__SO__1551757398726_120 px {titlePaddingBottom}.QIHOO__WEB__SO__1551757398726_120 px {titlePaddingLeft}px;
line-height: 1.3;
white-space: nowrap;
text-overflow: ellipsis;
letter-spacing:0.05em;
}.QIHOO__WEB__SO__1551757398726_120
.mulImageWindow .mulimg-title:hover {.QIHOO__WEB__SO__1551757398726_120
color: {hoverColor};
}.QIHOO__WEB__SO__1551757398726_120
.mulImageWindow .mulimg-grid-wrap{
position: relative;
}.QIHOO__WEB__SO__1551757398726_120
.mulImageWindow .mulimg-figure-grid{
overflow: hidden;
}.QIHOO__WEB__SO__1551757398726_120
.mulImageWindow .mulimg-figure{
float: left;.QIHOO__WEB__SO__1551757398726_120
margin-right:{imageSplitWidth}px;
}.QIHOO__WEB__SO__1551757398726_120
.mulImageWindow .mulimg-figure-img {
overflow: hidden;
position: relative;
padding: 0px NaNpx;
}.QIHOO__WEB__SO__1551757398726_120
.mulImageWindow .mulimg-figure-img .img{
width:NaNpx;.QIHOO__WEB__SO__1551757398726_120
height:{imgH}px;.QIHOO__WEB__SO__1551757398726_120
border-radius:{imageBorderRadius}px;
}.QIHOO__WEB__SO__1551757398726_120
.mulImageWindow .mulimg-figure-img .window-item__title{
display: block;
width: 100%;
position: absolute;
bottom: 0;
background-color: rgba(0,0,0,0.5);
filter: progid:DXImageTransform.Microsoft.gradient(startcolorstr=#88000000, endcolorstr=#88000000);
color: #fff;.QIHOO__WEB__SO__1551757398726_120
font-size: {windowItemTitleFontSize}px;
line-height: 1.5;
text-align: center;
white-space: nowrap;
overflow:hidden;
text-overflow: ellipsis;
}.QIHOO__WEB__SO__1551757398726_120
.mulImageWindow .mulimg-extra{
color: #999;
height: NaNpx;
line-height: NaNpx;
overflow: hidden;
white-space: nowrap;
}.QIHOO__WEB__SO__1551757398726_120
.mulImageWindow .mulimg-extra .mul-ads-tag{
width: 30px;
color: #ddd;
font-size: 12px;
display: inline;
}.QIHOO__WEB__SO__1551757398726_120
.mulImageWindow .mulimg-extra .ads-tag{
font-size: 12px;
color: #999;
display: inline;
}.QIHOO__WEB__SO__1551757398726_120 .largeImage .visited .largeImage-title{
color: #9e9e9e;
}.QIHOO__WEB__SO__1551757398726_120
.largeImage{.QIHOO__WEB__SO__1551757398726_120
padding: {paddingTop}.QIHOO__WEB__SO__1551757398726_120 px {paddingRight}.QIHOO__WEB__SO__1551757398726_120 px {paddingBottom}.QIHOO__WEB__SO__1551757398726_120 px {paddingLeft}px;.QIHOO__WEB__SO__1551757398726_120
background-color:{backgroundColor};
width: 852px;
height: NaNpx;
overflow: hidden;
cursor: pointer;
}.QIHOO__WEB__SO__1551757398726_120
.largeImage .largeImage-wrapper {
position: relative;
vertical-align: top;
width: 852px;
height: NaNpx;
}.QIHOO__WEB__SO__1551757398726_120
.largeImage .largeImage-title {
display: none;
overflow: hidden;.QIHOO__WEB__SO__1551757398726_120
font-size: {titleFontSize}px;.QIHOO__WEB__SO__1551757398726_120
font-family: {titleFontFamily};.QIHOO__WEB__SO__1551757398726_120
font-weight: {titleFontWeight};.QIHOO__WEB__SO__1551757398726_120
color: {titleFontColor};.QIHOO__WEB__SO__1551757398726_120
padding: {titlePaddingTop}.QIHOO__WEB__SO__1551757398726_120 px {titlePaddingRight}.QIHOO__WEB__SO__1551757398726_120 px {titlePaddingBottom}.QIHOO__WEB__SO__1551757398726_120 px {titlePaddingLeft}px;
line-height: 1.3;
white-space: nowrap;
text-overflow: ellipsis;
letter-spacing:0.05em;
}.QIHOO__WEB__SO__1551757398726_120
.largeImage .largeImage-title:hover {.QIHOO__WEB__SO__1551757398726_120
color:{hoverColor};
}.QIHOO__WEB__SO__1551757398726_120
.largeImage .largeImage-body{
position: relative;
vertical-align: top;
}.QIHOO__WEB__SO__1551757398726_120
.largeImage .largeImage-grid-wrap {
position: relative;
padding: NaNpx 0px;
}.QIHOO__WEB__SO__1551757398726_120
.largeImage .largeImage-grid-wrap .img {.QIHOO__WEB__SO__1551757398726_120
width:{imgW}px;
height:NaNpx;.QIHOO__WEB__SO__1551757398726_120
border-radius:{imageBorderRadius}px;
position: relative;
}.QIHOO__WEB__SO__1551757398726_120
.largeImage .largeImage-extra {
display: none;
color: #999;
height: NaNpx;
line-height: NaNpx;
overflow: hidden;
white-space: nowrap;
}.QIHOO__WEB__SO__1551757398726_120
.largeImage .largeImage-extra .largeImage-ad-tag{
width: 30px;
color: #ddd;
font-size: 12px;
display: inline;
}.QIHOO__WEB__SO__1551757398726_120
.largeImage .largeImage-extra .largeImage-ad-src{
font-size: 12px;
color: #999;
display: inline;
}.QIHOO__WEB__SO__1551757398726_120
.largeImage .ads-tag{
position: absolute;
display : block;
top: 0;
right: 0;
width: 22px;
height: 12px;
background-image: url(//p0.ssl.qhimg.com/t01c5fc7f8612d6b610.png);
}newsfeed{display:block;}newsfeed .img{background-size:cover;background-repeat:no-repeat;}.QIHOO__WEB__SO__1551757398775_645 info-div{display:block}.QIHOO__WEB__SO__1551757398775_645
.singleImage{
background-color:#fff;
padding: 10px 0px 0px 0px;
overflow: hidden;
width: 900px;
height: 74px;
cursor: pointer;
position:relative;
}.QIHOO__WEB__SO__1551757398775_645
.singleImage .wrap{
position:relative;
width: 900px;
height: 74px;
}.QIHOO__WEB__SO__1551757398775_645
.singleImage .visited .singleImage-title{
color: #9e9e9e;
}.QIHOO__WEB__SO__1551757398775_645
.singleImage .singleImage-img{
width: 90px;
height: 60px;
padding: 0px 0px;
display: block;
}.QIHOO__WEB__SO__1551757398775_645
.singleImage .singleImage-img-left{
float:left;
}.QIHOO__WEB__SO__1551757398775_645
.singleImage .singleImage-img-right{
float:right;
}.QIHOO__WEB__SO__1551757398775_645
.singleImage .singleImage-img-top{
position: absolute;
top : 0;
}.QIHOO__WEB__SO__1551757398775_645
.singleImage .singleImage-img-bottom{
position: absolute;
bottom : 0;
}.QIHOO__WEB__SO__1551757398775_645
.singleImage .singleImage-img .img{
width: 90px;
height: 60px;
border-radius: 3px;
position: relative;
}.QIHOO__WEB__SO__1551757398775_645
.singleImage .singleImage-body{
width: 810px;
height: 74px;
}.QIHOO__WEB__SO__1551757398775_645
.singleImage .singleImage-body-left{
float: left;
}.QIHOO__WEB__SO__1551757398775_645
.singleImage .singleImage-body-right{
float: left;
}.QIHOO__WEB__SO__1551757398775_645
.singleImage .singleImage-body-top{
position:absolute;
bottom:0;
}.QIHOO__WEB__SO__1551757398775_645
.singleImage .singleImage-body-bottom{
position:absolute;
top:0;
}.QIHOO__WEB__SO__1551757398775_645
.singleImage .singleImage-title{
font-size: 18px;
font-family: Lato,-apple-system,SF UI Text,Arial,PingFang SC,Hiragino Sans GB,Microsoft YaHei,WenQuanYi Micro Hei,sans-serif;
font-weight: bold;
color: #000;
padding: 0px 0px 5px 16px;
display: block;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}.QIHOO__WEB__SO__1551757398775_645
.singleImage .singleImage-title:hover{
color: #000;
}.QIHOO__WEB__SO__1551757398775_645
.singleImage .singleImage-desc{
font-size: 14px;
font-family: Microsoft Yahei;
color: #8e959a;
display: block;
padding: 0px 0px 0px 16px;
overflow: hidden;
white-space: nowrap;
}.QIHOO__WEB__SO__1551757398775_645
.singleImage .ads-tag{
position: absolute;
top: 0;
right: 0;
width: 22px;
height: 12px;
background-image: url(//p0.ssl.qhimg.com/t01c5fc7f8612d6b610.png);
}.QIHOO__WEB__SO__1551757398775_645 .mulImage .visited .mulimg-title{
color:#9e9e9e;
}.QIHOO__WEB__SO__1551757398775_645
.mulImage{.QIHOO__WEB__SO__1551757398775_645
padding: {paddingTop}.QIHOO__WEB__SO__1551757398775_645 px {paddingRight}.QIHOO__WEB__SO__1551757398775_645 px {paddingBottom}.QIHOO__WEB__SO__1551757398775_645 px {paddingLeft}px;.QIHOO__WEB__SO__1551757398775_645
background-color:{backgroundColor};
width: 900px;
height: NaNpx;
overflow: hidden;
cursor: pointer;
}.QIHOO__WEB__SO__1551757398775_645
.mulImage .mulimg-wrapper {
position: relative;
vertical-align: top;
width: 900px;
height: NaNpx;
}.QIHOO__WEB__SO__1551757398775_645
.mulImage .mulimg-title {
overflow: hidden;.QIHOO__WEB__SO__1551757398775_645
font-size: {titleFontSize}px;.QIHOO__WEB__SO__1551757398775_645
font-family: {titleFontFamily};.QIHOO__WEB__SO__1551757398775_645
font-weight: {titleFontWeight};.QIHOO__WEB__SO__1551757398775_645
color: {titleFontColor};.QIHOO__WEB__SO__1551757398775_645
padding: {titlePaddingTop}.QIHOO__WEB__SO__1551757398775_645 px {titlePaddingRight}.QIHOO__WEB__SO__1551757398775_645 px {titlePaddingBottom}.QIHOO__WEB__SO__1551757398775_645 px {titlePaddingLeft}px;
line-height: 1.3;
white-space: nowrap;
text-overflow: ellipsis;
letter-spacing:0.05em;
}.QIHOO__WEB__SO__1551757398775_645
.mulImage .mulimg-title:hover {.QIHOO__WEB__SO__1551757398775_645
color: {hoverColor};
}.QIHOO__WEB__SO__1551757398775_645
.mulImage .mulimg-grid-wrap{
position: relative;
}.QIHOO__WEB__SO__1551757398775_645
.mulImage .mulimg-figure-grid{
overflow: hidden;
}.QIHOO__WEB__SO__1551757398775_645
.mulImage .mulimg-figure{
float: left;.QIHOO__WEB__SO__1551757398775_645
margin-right:{imageSplitWidth}px;
}.QIHOO__WEB__SO__1551757398775_645
.mulImage .mulimg-figure-img {
overflow: hidden;
position: relative;
padding: NaNpx 0px;
}.QIHOO__WEB__SO__1551757398775_645
.mulImage .mulimg-figure-img .img{.QIHOO__WEB__SO__1551757398775_645
width:{imgW}px;
height:NaNpx;.QIHOO__WEB__SO__1551757398775_645
border-radius:{imageBorderRadius}px;
}.QIHOO__WEB__SO__1551757398775_645
.mulImage .mulimg-extra{
color: #999;
height: NaNpx;
line-height: NaNpx;
overflow: hidden;
white-space: nowrap;
}.QIHOO__WEB__SO__1551757398775_645
.mulImage .mulimg-extra .mul-ads-tag{
width: 30px;
color: #ddd;
font-size: 12px;
display: inline;
}.QIHOO__WEB__SO__1551757398775_645
.mulImage .mulimg-extra .ads-tag{
font-size: 12px;
color: #999;
display: inline;
}.QIHOO__WEB__SO__1551757398775_645 .mulImageWindow .visited .mulimg-title{
color:#9e9e9e;
}.QIHOO__WEB__SO__1551757398775_645
.mulImageWindow{.QIHOO__WEB__SO__1551757398775_645
padding: {paddingTop}.QIHOO__WEB__SO__1551757398775_645 px {paddingRight}.QIHOO__WEB__SO__1551757398775_645 px {paddingBottom}.QIHOO__WEB__SO__1551757398775_645 px {paddingLeft}px;.QIHOO__WEB__SO__1551757398775_645
background-color:{backgroundColor};
width: 900px;
height: NaNpx;
overflow: hidden;
cursor: pointer;
}.QIHOO__WEB__SO__1551757398775_645
.mulImageWindow .mulimg-wrapper {
position: relative;
vertical-align: top;
width: 900px;
height: NaNpx;
}.QIHOO__WEB__SO__1551757398775_645
.mulImageWindow .mulimg-title {
overflow: hidden;.QIHOO__WEB__SO__1551757398775_645
font-size: {titleFontSize}px;.QIHOO__WEB__SO__1551757398775_645
font-family: {titleFontFamily};.QIHOO__WEB__SO__1551757398775_645
font-weight: {titleFontWeight};.QIHOO__WEB__SO__1551757398775_645
color: {titleFontColor};.QIHOO__WEB__SO__1551757398775_645
padding: {titlePaddingTop}.QIHOO__WEB__SO__1551757398775_645 px {titlePaddingRight}.QIHOO__WEB__SO__1551757398775_645 px {titlePaddingBottom}.QIHOO__WEB__SO__1551757398775_645 px {titlePaddingLeft}px;
line-height: 1.3;
white-space: nowrap;
text-overflow: ellipsis;
letter-spacing:0.05em;
}.QIHOO__WEB__SO__1551757398775_645
.mulImageWindow .mulimg-title:hover {.QIHOO__WEB__SO__1551757398775_645
color: {hoverColor};
}.QIHOO__WEB__SO__1551757398775_645
.mulImageWindow .mulimg-grid-wrap{
position: relative;
}.QIHOO__WEB__SO__1551757398775_645
.mulImageWindow .mulimg-figure-grid{
overflow: hidden;
}.QIHOO__WEB__SO__1551757398775_645
.mulImageWindow .mulimg-figure{
float: left;.QIHOO__WEB__SO__1551757398775_645
margin-right:{imageSplitWidth}px;
}.QIHOO__WEB__SO__1551757398775_645
.mulImageWindow .mulimg-figure-img {
overflow: hidden;
position: relative;
padding: 0px NaNpx;
}.QIHOO__WEB__SO__1551757398775_645
.mulImageWindow .mulimg-figure-img .img{
width:NaNpx;.QIHOO__WEB__SO__1551757398775_645
height:{imgH}px;.QIHOO__WEB__SO__1551757398775_645
border-radius:{imageBorderRadius}px;
}.QIHOO__WEB__SO__1551757398775_645
.mulImageWindow .mulimg-figure-img .window-item__title{
display: block;
width: 100%;
position: absolute;
bottom: 0;
background-color: rgba(0,0,0,0.5);
filter: progid:DXImageTransform.Microsoft.gradient(startcolorstr=#88000000, endcolorstr=#88000000);
color: #fff;.QIHOO__WEB__SO__1551757398775_645
font-size: {windowItemTitleFontSize}px;
line-height: 1.5;
text-align: center;
white-space: nowrap;
overflow:hidden;
text-overflow: ellipsis;
}.QIHOO__WEB__SO__1551757398775_645
.mulImageWindow .mulimg-extra{
color: #999;
height: NaNpx;
line-height: NaNpx;
overflow: hidden;
white-space: nowrap;
}.QIHOO__WEB__SO__1551757398775_645
.mulImageWindow .mulimg-extra .mul-ads-tag{
width: 30px;
color: #ddd;
font-size: 12px;
display: inline;
}.QIHOO__WEB__SO__1551757398775_645
.mulImageWindow .mulimg-extra .ads-tag{
font-size: 12px;
color: #999;
display: inline;
}.QIHOO__WEB__SO__1551757398775_645 .largeImage .visited .largeImage-title{
color: #9e9e9e;
}.QIHOO__WEB__SO__1551757398775_645
.largeImage{.QIHOO__WEB__SO__1551757398775_645
padding: {paddingTop}.QIHOO__WEB__SO__1551757398775_645 px {paddingRight}.QIHOO__WEB__SO__1551757398775_645 px {paddingBottom}.QIHOO__WEB__SO__1551757398775_645 px {paddingLeft}px;.QIHOO__WEB__SO__1551757398775_645
background-color:{backgroundColor};
width: 900px;
height: NaNpx;
overflow: hidden;
cursor: pointer;
}.QIHOO__WEB__SO__1551757398775_645
.largeImage .largeImage-wrapper {
position: relative;
vertical-align: top;
width: 900px;
height: NaNpx;
}.QIHOO__WEB__SO__1551757398775_645
.largeImage .largeImage-title {
display: none;
overflow: hidden;.QIHOO__WEB__SO__1551757398775_645
font-size: {titleFontSize}px;.QIHOO__WEB__SO__1551757398775_645
font-family: {titleFontFamily};.QIHOO__WEB__SO__1551757398775_645
font-weight: {titleFontWeight};.QIHOO__WEB__SO__1551757398775_645
color: {titleFontColor};.QIHOO__WEB__SO__1551757398775_645
padding: {titlePaddingTop}.QIHOO__WEB__SO__1551757398775_645 px {titlePaddingRight}.QIHOO__WEB__SO__1551757398775_645 px {titlePaddingBottom}.QIHOO__WEB__SO__1551757398775_645 px {titlePaddingLeft}px;
line-height: 1.3;
white-space: nowrap;
text-overflow: ellipsis;
letter-spacing:0.05em;
}.QIHOO__WEB__SO__1551757398775_645
.largeImage .largeImage-title:hover {.QIHOO__WEB__SO__1551757398775_645
color:{hoverColor};
}.QIHOO__WEB__SO__1551757398775_645
.largeImage .largeImage-body{
position: relative;
vertical-align: top;
}.QIHOO__WEB__SO__1551757398775_645
.largeImage .largeImage-grid-wrap {
position: relative;
padding: NaNpx 0px;
}.QIHOO__WEB__SO__1551757398775_645
.largeImage .largeImage-grid-wrap .img {.QIHOO__WEB__SO__1551757398775_645
width:{imgW}px;
height:NaNpx;.QIHOO__WEB__SO__1551757398775_645
border-radius:{imageBorderRadius}px;
position: relative;
}.QIHOO__WEB__SO__1551757398775_645
.largeImage .largeImage-extra {
display: none;
color: #999;
height: NaNpx;
line-height: NaNpx;
overflow: hidden;
white-space: nowrap;
}.QIHOO__WEB__SO__1551757398775_645
.largeImage .largeImage-extra .largeImage-ad-tag{
width: 30px;
color: #ddd;
font-size: 12px;
display: inline;
}.QIHOO__WEB__SO__1551757398775_645
.largeImage .largeImage-extra .largeImage-ad-src{
font-size: 12px;
color: #999;
display: inline;
}.QIHOO__WEB__SO__1551757398775_645
.largeImage .ads-tag{
position: absolute;
display : block;
top: 0;
right: 0;
width: 22px;
height: 12px;
background-image: url(//p0.ssl.qhimg.com/t01c5fc7f8612d6b610.png);
}newsfeed{display:block;}newsfeed .img{background-size:cover;background-repeat:no-repeat;}.QIHOO__WEB__SO__1551757398853_387 info-div{display:block}.QIHOO__WEB__SO__1551757398853_387
.singleImage{
background-color:#fff;
padding: 0px 0px 0px 0px;
overflow: hidden;
width: 852px;
height: 60px;
cursor: pointer;
position:relative;
}.QIHOO__WEB__SO__1551757398853_387
.singleImage .wrap{
position:relative;
width: 852px;
height: 60px;
}.QIHOO__WEB__SO__1551757398853_387
.singleImage .visited .singleImage-title{
color: #9e9e9e;
}.QIHOO__WEB__SO__1551757398853_387
.singleImage .singleImage-img{
width: 90px;
height: 60px;
padding: 0px 0px;
display: block;
}.QIHOO__WEB__SO__1551757398853_387
.singleImage .singleImage-img-left{
float:left;
}.QIHOO__WEB__SO__1551757398853_387
.singleImage .singleImage-img-right{
float:right;
}.QIHOO__WEB__SO__1551757398853_387
.singleImage .singleImage-img-top{
position: absolute;
top : 0;
}.QIHOO__WEB__SO__1551757398853_387
.singleImage .singleImage-img-bottom{
position: absolute;
bottom : 0;
}.QIHOO__WEB__SO__1551757398853_387
.singleImage .singleImage-img .img{
width: 90px;
height: 60px;
border-radius: 3px;
position: relative;
}.QIHOO__WEB__SO__1551757398853_387
.singleImage .singleImage-body{
width: 762px;
height: 60px;
}.QIHOO__WEB__SO__1551757398853_387
.singleImage .singleImage-body-left{
float: left;
}.QIHOO__WEB__SO__1551757398853_387
.singleImage .singleImage-body-right{
float: left;
}.QIHOO__WEB__SO__1551757398853_387
.singleImage .singleImage-body-top{
position:absolute;
bottom:0;
}.QIHOO__WEB__SO__1551757398853_387
.singleImage .singleImage-body-bottom{
position:absolute;
top:0;
}.QIHOO__WEB__SO__1551757398853_387
.singleImage .singleImage-title{
font-size: 18px;
font-family: Lato,-apple-system,SF UI Text,Arial,PingFang SC,Hiragino Sans GB,Microsoft YaHei,WenQuanYi Micro Hei,sans-serif;
font-weight: bold;
color: #000;
padding: 0px 0px 5px 16px;
display: block;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}.QIHOO__WEB__SO__1551757398853_387
.singleImage .singleImage-title:hover{
color: #000;
}.QIHOO__WEB__SO__1551757398853_387
.singleImage .singleImage-desc{
font-size: 14px;
font-family: Microsoft Yahei;
color: #8e959a;
display: block;
padding: 0px 0px 0px 16px;
overflow: hidden;
white-space: nowrap;
}.QIHOO__WEB__SO__1551757398853_387
.singleImage .ads-tag{
position: absolute;
top: 0;
right: 0;
width: 22px;
height: 12px;
background-image: url(//p0.ssl.qhimg.com/t01c5fc7f8612d6b610.png);
}.QIHOO__WEB__SO__1551757398853_387 .mulImage .visited .mulimg-title{
color:#9e9e9e;
}.QIHOO__WEB__SO__1551757398853_387
.mulImage{.QIHOO__WEB__SO__1551757398853_387
padding: {paddingTop}.QIHOO__WEB__SO__1551757398853_387 px {paddingRight}.QIHOO__WEB__SO__1551757398853_387 px {paddingBottom}.QIHOO__WEB__SO__1551757398853_387 px {paddingLeft}px;.QIHOO__WEB__SO__1551757398853_387
background-color:{backgroundColor};
width: 852px;
height: NaNpx;
overflow: hidden;
cursor: pointer;
}.QIHOO__WEB__SO__1551757398853_387
.mulImage .mulimg-wrapper {
position: relative;
vertical-align: top;
width: 852px;
height: NaNpx;
}.QIHOO__WEB__SO__1551757398853_387
.mulImage .mulimg-title {
overflow: hidden;.QIHOO__WEB__SO__1551757398853_387
font-size: {titleFontSize}px;.QIHOO__WEB__SO__1551757398853_387
font-family: {titleFontFamily};.QIHOO__WEB__SO__1551757398853_387
font-weight: {titleFontWeight};.QIHOO__WEB__SO__1551757398853_387
color: {titleFontColor};.QIHOO__WEB__SO__1551757398853_387
padding: {titlePaddingTop}.QIHOO__WEB__SO__1551757398853_387 px {titlePaddingRight}.QIHOO__WEB__SO__1551757398853_387 px {titlePaddingBottom}.QIHOO__WEB__SO__1551757398853_387 px {titlePaddingLeft}px;
line-height: 1.3;
white-space: nowrap;
text-overflow: ellipsis;
letter-spacing:0.05em;
}.QIHOO__WEB__SO__1551757398853_387
.mulImage .mulimg-title:hover {.QIHOO__WEB__SO__1551757398853_387
color: {hoverColor};
}.QIHOO__WEB__SO__1551757398853_387
.mulImage .mulimg-grid-wrap{
position: relative;
}.QIHOO__WEB__SO__1551757398853_387
.mulImage .mulimg-figure-grid{
overflow: hidden;
}.QIHOO__WEB__SO__1551757398853_387
.mulImage .mulimg-figure{
float: left;.QIHOO__WEB__SO__1551757398853_387
margin-right:{imageSplitWidth}px;
}.QIHOO__WEB__SO__1551757398853_387
.mulImage .mulimg-figure-img {
overflow: hidden;
position: relative;
padding: NaNpx 0px;
}.QIHOO__WEB__SO__1551757398853_387
.mulImage .mulimg-figure-img .img{.QIHOO__WEB__SO__1551757398853_387
width:{imgW}px;
height:NaNpx;.QIHOO__WEB__SO__1551757398853_387
border-radius:{imageBorderRadius}px;
}.QIHOO__WEB__SO__1551757398853_387
.mulImage .mulimg-extra{
color: #999;
height: NaNpx;
line-height: NaNpx;
overflow: hidden;
white-space: nowrap;
}.QIHOO__WEB__SO__1551757398853_387
.mulImage .mulimg-extra .mul-ads-tag{
width: 30px;
color: #ddd;
font-size: 12px;
display: inline;
}.QIHOO__WEB__SO__1551757398853_387
.mulImage .mulimg-extra .ads-tag{
font-size: 12px;
color: #999;
display: inline;
}.QIHOO__WEB__SO__1551757398853_387 .mulImageWindow .visited .mulimg-title{
color:#9e9e9e;
}.QIHOO__WEB__SO__1551757398853_387
.mulImageWindow{.QIHOO__WEB__SO__1551757398853_387
padding: {paddingTop}.QIHOO__WEB__SO__1551757398853_387 px {paddingRight}.QIHOO__WEB__SO__1551757398853_387 px {paddingBottom}.QIHOO__WEB__SO__1551757398853_387 px {paddingLeft}px;.QIHOO__WEB__SO__1551757398853_387
background-color:{backgroundColor};
width: 852px;
height: NaNpx;
overflow: hidden;
cursor: pointer;
}.QIHOO__WEB__SO__1551757398853_387
.mulImageWindow .mulimg-wrapper {
position: relative;
vertical-align: top;
width: 852px;
height: NaNpx;
}.QIHOO__WEB__SO__1551757398853_387
.mulImageWindow .mulimg-title {
overflow: hidden;.QIHOO__WEB__SO__1551757398853_387
font-size: {titleFontSize}px;.QIHOO__WEB__SO__1551757398853_387
font-family: {titleFontFamily};.QIHOO__WEB__SO__1551757398853_387
font-weight: {titleFontWeight};.QIHOO__WEB__SO__1551757398853_387
color: {titleFontColor};.QIHOO__WEB__SO__1551757398853_387
padding: {titlePaddingTop}.QIHOO__WEB__SO__1551757398853_387 px {titlePaddingRight}.QIHOO__WEB__SO__1551757398853_387 px {titlePaddingBottom}.QIHOO__WEB__SO__1551757398853_387 px {titlePaddingLeft}px;
line-height: 1.3;
white-space: nowrap;
text-overflow: ellipsis;
letter-spacing:0.05em;
}.QIHOO__WEB__SO__1551757398853_387
.mulImageWindow .mulimg-title:hover {.QIHOO__WEB__SO__1551757398853_387
color: {hoverColor};
}.QIHOO__WEB__SO__1551757398853_387
.mulImageWindow .mulimg-grid-wrap{
position: relative;
}.QIHOO__WEB__SO__1551757398853_387
.mulImageWindow .mulimg-figure-grid{
overflow: hidden;
}.QIHOO__WEB__SO__1551757398853_387
.mulImageWindow .mulimg-figure{
float: left;.QIHOO__WEB__SO__1551757398853_387
margin-right:{imageSplitWidth}px;
}.QIHOO__WEB__SO__1551757398853_387
.mulImageWindow .mulimg-figure-img {
overflow: hidden;
position: relative;
padding: 0px NaNpx;
}.QIHOO__WEB__SO__1551757398853_387
.mulImageWindow .mulimg-figure-img .img{
width:NaNpx;.QIHOO__WEB__SO__1551757398853_387
height:{imgH}px;.QIHOO__WEB__SO__1551757398853_387
border-radius:{imageBorderRadius}px;
}.QIHOO__WEB__SO__1551757398853_387
.mulImageWindow .mulimg-figure-img .window-item__title{
display: block;
width: 100%;
position: absolute;
bottom: 0;
background-color: rgba(0,0,0,0.5);
filter: progid:DXImageTransform.Microsoft.gradient(startcolorstr=#88000000, endcolorstr=#88000000);
color: #fff;.QIHOO__WEB__SO__1551757398853_387
font-size: {windowItemTitleFontSize}px;
line-height: 1.5;
text-align: center;
white-space: nowrap;
overflow:hidden;
text-overflow: ellipsis;
}.QIHOO__WEB__SO__1551757398853_387
.mulImageWindow .mulimg-extra{
color: #999;
height: NaNpx;
line-height: NaNpx;
overflow: hidden;
white-space: nowrap;
}.QIHOO__WEB__SO__1551757398853_387
.mulImageWindow .mulimg-extra .mul-ads-tag{
width: 30px;
color: #ddd;
font-size: 12px;
display: inline;
}.QIHOO__WEB__SO__1551757398853_387
.mulImageWindow .mulimg-extra .ads-tag{
font-size: 12px;
color: #999;
display: inline;
}.QIHOO__WEB__SO__1551757398853_387 .largeImage .visited .largeImage-title{
color: #9e9e9e;
}.QIHOO__WEB__SO__1551757398853_387
.largeImage{.QIHOO__WEB__SO__1551757398853_387
padding: {paddingTop}.QIHOO__WEB__SO__1551757398853_387 px {paddingRight}.QIHOO__WEB__SO__1551757398853_387 px {paddingBottom}.QIHOO__WEB__SO__1551757398853_387 px {paddingLeft}px;.QIHOO__WEB__SO__1551757398853_387
background-color:{backgroundColor};
width: 852px;
height: NaNpx;
overflow: hidden;
cursor: pointer;
}.QIHOO__WEB__SO__1551757398853_387
.largeImage .largeImage-wrapper {
position: relative;
vertical-align: top;
width: 852px;
height: NaNpx;
}.QIHOO__WEB__SO__1551757398853_387
.largeImage .largeImage-title {
display: none;
overflow: hidden;.QIHOO__WEB__SO__1551757398853_387
font-size: {titleFontSize}px;.QIHOO__WEB__SO__1551757398853_387
font-family: {titleFontFamily};.QIHOO__WEB__SO__1551757398853_387
font-weight: {titleFontWeight};.QIHOO__WEB__SO__1551757398853_387
color: {titleFontColor};.QIHOO__WEB__SO__1551757398853_387
padding: {titlePaddingTop}.QIHOO__WEB__SO__1551757398853_387 px {titlePaddingRight}.QIHOO__WEB__SO__1551757398853_387 px {titlePaddingBottom}.QIHOO__WEB__SO__1551757398853_387 px {titlePaddingLeft}px;
line-height: 1.3;
white-space: nowrap;
text-overflow: ellipsis;
letter-spacing:0.05em;
}.QIHOO__WEB__SO__1551757398853_387
.largeImage .largeImage-title:hover {.QIHOO__WEB__SO__1551757398853_387
color:{hoverColor};
}.QIHOO__WEB__SO__1551757398853_387
.largeImage .largeImage-body{
position: relative;
vertical-align: top;
}.QIHOO__WEB__SO__1551757398853_387
.largeImage .largeImage-grid-wrap {
position: relative;
padding: NaNpx 0px;
}.QIHOO__WEB__SO__1551757398853_387
.largeImage .largeImage-grid-wrap .img {.QIHOO__WEB__SO__1551757398853_387
width:{imgW}px;
height:NaNpx;.QIHOO__WEB__SO__1551757398853_387
border-radius:{imageBorderRadius}px;
position: relative;
}.QIHOO__WEB__SO__1551757398853_387
.largeImage .largeImage-extra {
display: none;
color: #999;
height: NaNpx;
line-height: NaNpx;
overflow: hidden;
white-space: nowrap;
}.QIHOO__WEB__SO__1551757398853_387
.largeImage .largeImage-extra .largeImage-ad-tag{
width: 30px;
color: #ddd;
font-size: 12px;
display: inline;
}.QIHOO__WEB__SO__1551757398853_387
.largeImage .largeImage-extra .largeImage-ad-src{
font-size: 12px;
color: #999;
display: inline;
}.QIHOO__WEB__SO__1551757398853_387
.largeImage .ads-tag{
position: absolute;
display : block;
top: 0;
right: 0;
width: 22px;
height: 12px;
background-image: url(//p0.ssl.qhimg.com/t01c5fc7f8612d6b610.png);
}newsfeed{display:block;}newsfeed .img{background-size:cover;background-repeat:no-repeat;}.QIHOO__WEB__SO__1551757398904_111 info-div{display:block}.QIHOO__WEB__SO__1551757398904_111
.singleImage{
background-color:#fff;
padding: 0px 0px 0px 0px;
overflow: hidden;
width: 852px;
height: 60px;
cursor: pointer;
position:relative;
}.QIHOO__WEB__SO__1551757398904_111
.singleImage .wrap{
position:relative;
width: 852px;
height: 60px;
}.QIHOO__WEB__SO__1551757398904_111
.singleImage .visited .singleImage-title{
color: #9e9e9e;
}.QIHOO__WEB__SO__1551757398904_111
.singleImage .singleImage-img{
width: 90px;
height: 60px;
padding: 0px 0px;
display: block;
}.QIHOO__WEB__SO__1551757398904_111
.singleImage .singleImage-img-left{
float:left;
}.QIHOO__WEB__SO__1551757398904_111
.singleImage .singleImage-img-right{
float:right;
}.QIHOO__WEB__SO__1551757398904_111
.singleImage .singleImage-img-top{
position: absolute;
top : 0;
}.QIHOO__WEB__SO__1551757398904_111
.singleImage .singleImage-img-bottom{
position: absolute;
bottom : 0;
}.QIHOO__WEB__SO__1551757398904_111
.singleImage .singleImage-img .img{
width: 90px;
height: 60px;
border-radius: 3px;
position: relative;
}.QIHOO__WEB__SO__1551757398904_111
.singleImage .singleImage-body{
width: 762px;
height: 60px;
}.QIHOO__WEB__SO__1551757398904_111
.singleImage .singleImage-body-left{
float: left;
}.QIHOO__WEB__SO__1551757398904_111
.singleImage .singleImage-body-right{
float: left;
}.QIHOO__WEB__SO__1551757398904_111
.singleImage .singleImage-body-top{
position:absolute;
bottom:0;
}.QIHOO__WEB__SO__1551757398904_111
.singleImage .singleImage-body-bottom{
position:absolute;
top:0;
}.QIHOO__WEB__SO__1551757398904_111
.singleImage .singleImage-title{
font-size: 18px;
font-family: Lato,-apple-system,SF UI Text,Arial,PingFang SC,Hiragino Sans GB,Microsoft YaHei,WenQuanYi Micro Hei,sans-serif;
font-weight: bold;
color: #000;
padding: 0px 0px 5px 16px;
display: block;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}.QIHOO__WEB__SO__1551757398904_111
.singleImage .singleImage-title:hover{
color: #000;
}.QIHOO__WEB__SO__1551757398904_111
.singleImage .singleImage-desc{
font-size: 14px;
font-family: Microsoft Yahei;
color: #8e959a;
display: block;
padding: 0px 0px 0px 16px;
overflow: hidden;
white-space: nowrap;
}.QIHOO__WEB__SO__1551757398904_111
.singleImage .ads-tag{
position: absolute;
top: 0;
right: 0;
width: 22px;
height: 12px;
background-image: url(//p0.ssl.qhimg.com/t01c5fc7f8612d6b610.png);
}.QIHOO__WEB__SO__1551757398904_111 .mulImage .visited .mulimg-title{
color:#9e9e9e;
}.QIHOO__WEB__SO__1551757398904_111
.mulImage{.QIHOO__WEB__SO__1551757398904_111
padding: {paddingTop}.QIHOO__WEB__SO__1551757398904_111 px {paddingRight}.QIHOO__WEB__SO__1551757398904_111 px {paddingBottom}.QIHOO__WEB__SO__1551757398904_111 px {paddingLeft}px;.QIHOO__WEB__SO__1551757398904_111
background-color:{backgroundColor};
width: 852px;
height: NaNpx;
overflow: hidden;
cursor: pointer;
}.QIHOO__WEB__SO__1551757398904_111
.mulImage .mulimg-wrapper {
position: relative;
vertical-align: top;
width: 852px;
height: NaNpx;
}.QIHOO__WEB__SO__1551757398904_111
.mulImage .mulimg-title {
overflow: hidden;.QIHOO__WEB__SO__1551757398904_111
font-size: {titleFontSize}px;.QIHOO__WEB__SO__1551757398904_111
font-family: {titleFontFamily};.QIHOO__WEB__SO__1551757398904_111
font-weight: {titleFontWeight};.QIHOO__WEB__SO__1551757398904_111
color: {titleFontColor};.QIHOO__WEB__SO__1551757398904_111
padding: {titlePaddingTop}.QIHOO__WEB__SO__1551757398904_111 px {titlePaddingRight}.QIHOO__WEB__SO__1551757398904_111 px {titlePaddingBottom}.QIHOO__WEB__SO__1551757398904_111 px {titlePaddingLeft}px;
line-height: 1.3;
white-space: nowrap;
text-overflow: ellipsis;
letter-spacing:0.05em;
}.QIHOO__WEB__SO__1551757398904_111
.mulImage .mulimg-title:hover {.QIHOO__WEB__SO__1551757398904_111
color: {hoverColor};
}.QIHOO__WEB__SO__1551757398904_111
.mulImage .mulimg-grid-wrap{
position: relative;
}.QIHOO__WEB__SO__1551757398904_111
.mulImage .mulimg-figure-grid{
overflow: hidden;
}.QIHOO__WEB__SO__1551757398904_111
.mulImage .mulimg-figure{
float: left;.QIHOO__WEB__SO__1551757398904_111
margin-right:{imageSplitWidth}px;
}.QIHOO__WEB__SO__1551757398904_111
.mulImage .mulimg-figure-img {
overflow: hidden;
position: relative;
padding: NaNpx 0px;
}.QIHOO__WEB__SO__1551757398904_111
.mulImage .mulimg-figure-img .img{.QIHOO__WEB__SO__1551757398904_111
width:{imgW}px;
height:NaNpx;.QIHOO__WEB__SO__1551757398904_111
border-radius:{imageBorderRadius}px;
}.QIHOO__WEB__SO__1551757398904_111
.mulImage .mulimg-extra{
color: #999;
height: NaNpx;
line-height: NaNpx;
overflow: hidden;
white-space: nowrap;
}.QIHOO__WEB__SO__1551757398904_111
.mulImage .mulimg-extra .mul-ads-tag{
width: 30px;
color: #ddd;
font-size: 12px;
display: inline;
}.QIHOO__WEB__SO__1551757398904_111
.mulImage .mulimg-extra .ads-tag{
font-size: 12px;
color: #999;
display: inline;
}.QIHOO__WEB__SO__1551757398904_111 .mulImageWindow .visited .mulimg-title{
color:#9e9e9e;
}.QIHOO__WEB__SO__1551757398904_111
.mulImageWindow{.QIHOO__WEB__SO__1551757398904_111
padding: {paddingTop}.QIHOO__WEB__SO__1551757398904_111 px {paddingRight}.QIHOO__WEB__SO__1551757398904_111 px {paddingBottom}.QIHOO__WEB__SO__1551757398904_111 px {paddingLeft}px;.QIHOO__WEB__SO__1551757398904_111
background-color:{backgroundColor};
width: 852px;
height: NaNpx;
overflow: hidden;
cursor: pointer;
}.QIHOO__WEB__SO__1551757398904_111
.mulImageWindow .mulimg-wrapper {
position: relative;
vertical-align: top;
width: 852px;
height: NaNpx;
}.QIHOO__WEB__SO__1551757398904_111
.mulImageWindow .mulimg-title {
overflow: hidden;.QIHOO__WEB__SO__1551757398904_111
font-size: {titleFontSize}px;.QIHOO__WEB__SO__1551757398904_111
font-family: {titleFontFamily};.QIHOO__WEB__SO__1551757398904_111
font-weight: {titleFontWeight};.QIHOO__WEB__SO__1551757398904_111
color: {titleFontColor};.QIHOO__WEB__SO__1551757398904_111
padding: {titlePaddingTop}.QIHOO__WEB__SO__1551757398904_111 px {titlePaddingRight}.QIHOO__WEB__SO__1551757398904_111 px {titlePaddingBottom}.QIHOO__WEB__SO__1551757398904_111 px {titlePaddingLeft}px;
line-height: 1.3;
white-space: nowrap;
text-overflow: ellipsis;
letter-spacing:0.05em;
}.QIHOO__WEB__SO__1551757398904_111
.mulImageWindow .mulimg-title:hover {.QIHOO__WEB__SO__1551757398904_111
color: {hoverColor};
}.QIHOO__WEB__SO__1551757398904_111
.mulImageWindow .mulimg-grid-wrap{
position: relative;
}.QIHOO__WEB__SO__1551757398904_111
.mulImageWindow .mulimg-figure-grid{
overflow: hidden;
}.QIHOO__WEB__SO__1551757398904_111
.mulImageWindow .mulimg-figure{
float: left;.QIHOO__WEB__SO__1551757398904_111
margin-right:{imageSplitWidth}px;
}.QIHOO__WEB__SO__1551757398904_111
.mulImageWindow .mulimg-figure-img {
overflow: hidden;
position: relative;
padding: 0px NaNpx;
}.QIHOO__WEB__SO__1551757398904_111
.mulImageWindow .mulimg-figure-img .img{
width:NaNpx;.QIHOO__WEB__SO__1551757398904_111
height:{imgH}px;.QIHOO__WEB__SO__1551757398904_111
border-radius:{imageBorderRadius}px;
}.QIHOO__WEB__SO__1551757398904_111
.mulImageWindow .mulimg-figure-img .window-item__title{
display: block;
width: 100%;
position: absolute;
bottom: 0;
background-color: rgba(0,0,0,0.5);
filter: progid:DXImageTransform.Microsoft.gradient(startcolorstr=#88000000, endcolorstr=#88000000);
color: #fff;.QIHOO__WEB__SO__1551757398904_111
font-size: {windowItemTitleFontSize}px;
line-height: 1.5;
text-align: center;
white-space: nowrap;
overflow:hidden;
text-overflow: ellipsis;
}.QIHOO__WEB__SO__1551757398904_111
.mulImageWindow .mulimg-extra{
color: #999;
height: NaNpx;
line-height: NaNpx;
overflow: hidden;
white-space: nowrap;
}.QIHOO__WEB__SO__1551757398904_111
.mulImageWindow .mulimg-extra .mul-ads-tag{
width: 30px;
color: #ddd;
font-size: 12px;
display: inline;
}.QIHOO__WEB__SO__1551757398904_111
.mulImageWindow .mulimg-extra .ads-tag{
font-size: 12px;
color: #999;
display: inline;
}.QIHOO__WEB__SO__1551757398904_111 .largeImage .visited .largeImage-title{
color: #9e9e9e;
}.QIHOO__WEB__SO__1551757398904_111
.largeImage{.QIHOO__WEB__SO__1551757398904_111
padding: {paddingTop}.QIHOO__WEB__SO__1551757398904_111 px {paddingRight}.QIHOO__WEB__SO__1551757398904_111 px {paddingBottom}.QIHOO__WEB__SO__1551757398904_111 px {paddingLeft}px;.QIHOO__WEB__SO__1551757398904_111
background-color:{backgroundColor};
width: 852px;
height: NaNpx;
overflow: hidden;
cursor: pointer;
}.QIHOO__WEB__SO__1551757398904_111
.largeImage .largeImage-wrapper {
position: relative;
vertical-align: top;
width: 852px;
height: NaNpx;
}.QIHOO__WEB__SO__1551757398904_111
.largeImage .largeImage-title {
display: none;
overflow: hidden;.QIHOO__WEB__SO__1551757398904_111
font-size: {titleFontSize}px;.QIHOO__WEB__SO__1551757398904_111
font-family: {titleFontFamily};.QIHOO__WEB__SO__1551757398904_111
font-weight: {titleFontWeight};.QIHOO__WEB__SO__1551757398904_111
color: {titleFontColor};.QIHOO__WEB__SO__1551757398904_111
padding: {titlePaddingTop}.QIHOO__WEB__SO__1551757398904_111 px {titlePaddingRight}.QIHOO__WEB__SO__1551757398904_111 px {titlePaddingBottom}.QIHOO__WEB__SO__1551757398904_111 px {titlePaddingLeft}px;
line-height: 1.3;
white-space: nowrap;
text-overflow: ellipsis;
letter-spacing:0.05em;
}.QIHOO__WEB__SO__1551757398904_111
.largeImage .largeImage-title:hover {.QIHOO__WEB__SO__1551757398904_111
color:{hoverColor};
}.QIHOO__WEB__SO__1551757398904_111
.largeImage .largeImage-body{
position: relative;
vertical-align: top;
}.QIHOO__WEB__SO__1551757398904_111
.largeImage .largeImage-grid-wrap {
position: relative;
padding: NaNpx 0px;
}.QIHOO__WEB__SO__1551757398904_111
.largeImage .largeImage-grid-wrap .img {.QIHOO__WEB__SO__1551757398904_111
width:{imgW}px;
height:NaNpx;.QIHOO__WEB__SO__1551757398904_111
border-radius:{imageBorderRadius}px;
position: relative;
}.QIHOO__WEB__SO__1551757398904_111
.largeImage .largeImage-extra {
display: none;
color: #999;
height: NaNpx;
line-height: NaNpx;
overflow: hidden;
white-space: nowrap;
}.QIHOO__WEB__SO__1551757398904_111
.largeImage .largeImage-extra .largeImage-ad-tag{
width: 30px;
color: #ddd;
font-size: 12px;
display: inline;
}.QIHOO__WEB__SO__1551757398904_111
.largeImage .largeImage-extra .largeImage-ad-src{
font-size: 12px;
color: #999;
display: inline;
}.QIHOO__WEB__SO__1551757398904_111
.largeImage .ads-tag{
position: absolute;
display : block;
top: 0;
right: 0;
width: 22px;
height: 12px;
background-image: url(//p0.ssl.qhimg.com/t01c5fc7f8612d6b610.png);
}newsfeed{display:block;}newsfeed .img{background-size:cover;background-repeat:no-repeat;}.QIHOO__WEB__SO__1551757398975_12 info-div{display:block}.QIHOO__WEB__SO__1551757398975_12
.singleImage{
background-color:#fff;
padding: 0px 0px 0px 0px;
overflow: hidden;
width: 852px;
height: 60px;
cursor: pointer;
position:relative;
}.QIHOO__WEB__SO__1551757398975_12
.singleImage .wrap{
position:relative;
width: 852px;
height: 60px;
}.QIHOO__WEB__SO__1551757398975_12
.singleImage .visited .singleImage-title{
color: #9e9e9e;
}.QIHOO__WEB__SO__1551757398975_12
.singleImage .singleImage-img{
width: 90px;
height: 60px;
padding: 0px 0px;
display: block;
}.QIHOO__WEB__SO__1551757398975_12
.singleImage .singleImage-img-left{
float:left;
}.QIHOO__WEB__SO__1551757398975_12
.singleImage .singleImage-img-right{
float:right;
}.QIHOO__WEB__SO__1551757398975_12
.singleImage .singleImage-img-top{
position: absolute;
top : 0;
}.QIHOO__WEB__SO__1551757398975_12
.singleImage .singleImage-img-bottom{
position: absolute;
bottom : 0;
}.QIHOO__WEB__SO__1551757398975_12
.singleImage .singleImage-img .img{
width: 90px;
height: 60px;
border-radius: 3px;
position: relative;
}.QIHOO__WEB__SO__1551757398975_12
.singleImage .singleImage-body{
width: 762px;
height: 60px;
}.QIHOO__WEB__SO__1551757398975_12
.singleImage .singleImage-body-left{
float: left;
}.QIHOO__WEB__SO__1551757398975_12
.singleImage .singleImage-body-right{
float: left;
}.QIHOO__WEB__SO__1551757398975_12
.singleImage .singleImage-body-top{
position:absolute;
bottom:0;
}.QIHOO__WEB__SO__1551757398975_12
.singleImage .singleImage-body-bottom{
position:absolute;
top:0;
}.QIHOO__WEB__SO__1551757398975_12
.singleImage .singleImage-title{
font-size: 18px;
font-family: Lato,-apple-system,SF UI Text,Arial,PingFang SC,Hiragino Sans GB,Microsoft YaHei,WenQuanYi Micro Hei,sans-serif;
font-weight: bold;
color: #000;
padding: 0px 0px 5px 16px;
display: block;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}.QIHOO__WEB__SO__1551757398975_12
.singleImage .singleImage-title:hover{
color: #000;
}.QIHOO__WEB__SO__1551757398975_12
.singleImage .singleImage-desc{
font-size: 14px;
font-family: Microsoft Yahei;
color: #8e959a;
display: block;
padding: 0px 0px 0px 16px;
overflow: hidden;
white-space: nowrap;
}.QIHOO__WEB__SO__1551757398975_12
.singleImage .ads-tag{
position: absolute;
top: 0;
right: 0;
width: 22px;
height: 12px;
background-image: url(//p0.ssl.qhimg.com/t01c5fc7f8612d6b610.png);
}.QIHOO__WEB__SO__1551757398975_12 .mulImage .visited .mulimg-title{
color:#9e9e9e;
}.QIHOO__WEB__SO__1551757398975_12
.mulImage{.QIHOO__WEB__SO__1551757398975_12
padding: {paddingTop}.QIHOO__WEB__SO__1551757398975_12 px {paddingRight}.QIHOO__WEB__SO__1551757398975_12 px {paddingBottom}.QIHOO__WEB__SO__1551757398975_12 px {paddingLeft}px;.QIHOO__WEB__SO__1551757398975_12
background-color:{backgroundColor};
width: 852px;
height: NaNpx;
overflow: hidden;
cursor: pointer;
}.QIHOO__WEB__SO__1551757398975_12
.mulImage .mulimg-wrapper {
position: relative;
vertical-align: top;
width: 852px;
height: NaNpx;
}.QIHOO__WEB__SO__1551757398975_12
.mulImage .mulimg-title {
overflow: hidden;.QIHOO__WEB__SO__1551757398975_12
font-size: {titleFontSize}px;.QIHOO__WEB__SO__1551757398975_12
font-family: {titleFontFamily};.QIHOO__WEB__SO__1551757398975_12
font-weight: {titleFontWeight};.QIHOO__WEB__SO__1551757398975_12
color: {titleFontColor};.QIHOO__WEB__SO__1551757398975_12
padding: {titlePaddingTop}.QIHOO__WEB__SO__1551757398975_12 px {titlePaddingRight}.QIHOO__WEB__SO__1551757398975_12 px {titlePaddingBottom}.QIHOO__WEB__SO__1551757398975_12 px {titlePaddingLeft}px;
line-height: 1.3;
white-space: nowrap;
text-overflow: ellipsis;
letter-spacing:0.05em;
}.QIHOO__WEB__SO__1551757398975_12
.mulImage .mulimg-title:hover {.QIHOO__WEB__SO__1551757398975_12
color: {hoverColor};
}.QIHOO__WEB__SO__1551757398975_12
.mulImage .mulimg-grid-wrap{
position: relative;
}.QIHOO__WEB__SO__1551757398975_12
.mulImage .mulimg-figure-grid{
overflow: hidden;
}.QIHOO__WEB__SO__1551757398975_12
.mulImage .mulimg-figure{
float: left;.QIHOO__WEB__SO__1551757398975_12
margin-right:{imageSplitWidth}px;
}.QIHOO__WEB__SO__1551757398975_12
.mulImage .mulimg-figure-img {
overflow: hidden;
position: relative;
padding: NaNpx 0px;
}.QIHOO__WEB__SO__1551757398975_12
.mulImage .mulimg-figure-img .img{.QIHOO__WEB__SO__1551757398975_12
width:{imgW}px;
height:NaNpx;.QIHOO__WEB__SO__1551757398975_12
border-radius:{imageBorderRadius}px;
}.QIHOO__WEB__SO__1551757398975_12
.mulImage .mulimg-extra{
color: #999;
height: NaNpx;
line-height: NaNpx;
overflow: hidden;
white-space: nowrap;
}.QIHOO__WEB__SO__1551757398975_12
.mulImage .mulimg-extra .mul-ads-tag{
width: 30px;
color: #ddd;
font-size: 12px;
display: inline;
}.QIHOO__WEB__SO__1551757398975_12
.mulImage .mulimg-extra .ads-tag{
font-size: 12px;
color: #999;
display: inline;
}.QIHOO__WEB__SO__1551757398975_12 .mulImageWindow .visited .mulimg-title{
color:#9e9e9e;
}.QIHOO__WEB__SO__1551757398975_12
.mulImageWindow{.QIHOO__WEB__SO__1551757398975_12
padding: {paddingTop}.QIHOO__WEB__SO__1551757398975_12 px {paddingRight}.QIHOO__WEB__SO__1551757398975_12 px {paddingBottom}.QIHOO__WEB__SO__1551757398975_12 px {paddingLeft}px;.QIHOO__WEB__SO__1551757398975_12
background-color:{backgroundColor};
width: 852px;
height: NaNpx;
overflow: hidden;
cursor: pointer;
}.QIHOO__WEB__SO__1551757398975_12
.mulImageWindow .mulimg-wrapper {
position: relative;
vertical-align: top;
width: 852px;
height: NaNpx;
}.QIHOO__WEB__SO__1551757398975_12
.mulImageWindow .mulimg-title {
overflow: hidden;.QIHOO__WEB__SO__1551757398975_12
font-size: {titleFontSize}px;.QIHOO__WEB__SO__1551757398975_12
font-family: {titleFontFamily};.QIHOO__WEB__SO__1551757398975_12
font-weight: {titleFontWeight};.QIHOO__WEB__SO__1551757398975_12
color: {titleFontColor};.QIHOO__WEB__SO__1551757398975_12
padding: {titlePaddingTop}.QIHOO__WEB__SO__1551757398975_12 px {titlePaddingRight}.QIHOO__WEB__SO__1551757398975_12 px {titlePaddingBottom}.QIHOO__WEB__SO__1551757398975_12 px {titlePaddingLeft}px;
line-height: 1.3;
white-space: nowrap;
text-overflow: ellipsis;
letter-spacing:0.05em;
}.QIHOO__WEB__SO__1551757398975_12
.mulImageWindow .mulimg-title:hover {.QIHOO__WEB__SO__1551757398975_12
color: {hoverColor};
}.QIHOO__WEB__SO__1551757398975_12
.mulImageWindow .mulimg-grid-wrap{
position: relative;
}.QIHOO__WEB__SO__1551757398975_12
.mulImageWindow .mulimg-figure-grid{
overflow: hidden;
}.QIHOO__WEB__SO__1551757398975_12
.mulImageWindow .mulimg-figure{
float: left;.QIHOO__WEB__SO__1551757398975_12
margin-right:{imageSplitWidth}px;
}.QIHOO__WEB__SO__1551757398975_12
.mulImageWindow .mulimg-figure-img {
overflow: hidden;
position: relative;
padding: 0px NaNpx;
}.QIHOO__WEB__SO__1551757398975_12
.mulImageWindow .mulimg-figure-img .img{
width:NaNpx;.QIHOO__WEB__SO__1551757398975_12
height:{imgH}px;.QIHOO__WEB__SO__1551757398975_12
border-radius:{imageBorderRadius}px;
}.QIHOO__WEB__SO__1551757398975_12
.mulImageWindow .mulimg-figure-img .window-item__title{
display: block;
width: 100%;
position: absolute;
bottom: 0;
background-color: rgba(0,0,0,0.5);
filter: progid:DXImageTransform.Microsoft.gradient(startcolorstr=#88000000, endcolorstr=#88000000);
color: #fff;.QIHOO__WEB__SO__1551757398975_12
font-size: {windowItemTitleFontSize}px;
line-height: 1.5;
text-align: center;
white-space: nowrap;
overflow:hidden;
text-overflow: ellipsis;
}.QIHOO__WEB__SO__1551757398975_12
.mulImageWindow .mulimg-extra{
color: #999;
height: NaNpx;
line-height: NaNpx;
overflow: hidden;
white-space: nowrap;
}.QIHOO__WEB__SO__1551757398975_12
.mulImageWindow .mulimg-extra .mul-ads-tag{
width: 30px;
color: #ddd;
font-size: 12px;
display: inline;
}.QIHOO__WEB__SO__1551757398975_12
.mulImageWindow .mulimg-extra .ads-tag{
font-size: 12px;
color: #999;
display: inline;
}.QIHOO__WEB__SO__1551757398975_12 .largeImage .visited .largeImage-title{
color: #9e9e9e;
}.QIHOO__WEB__SO__1551757398975_12
.largeImage{.QIHOO__WEB__SO__1551757398975_12
padding: {paddingTop}.QIHOO__WEB__SO__1551757398975_12 px {paddingRight}.QIHOO__WEB__SO__1551757398975_12 px {paddingBottom}.QIHOO__WEB__SO__1551757398975_12 px {paddingLeft}px;.QIHOO__WEB__SO__1551757398975_12
background-color:{backgroundColor};
width: 852px;
height: NaNpx;
overflow: hidden;
cursor: pointer;
}.QIHOO__WEB__SO__1551757398975_12
.largeImage .largeImage-wrapper {
position: relative;
vertical-align: top;
width: 852px;
height: NaNpx;
}.QIHOO__WEB__SO__1551757398975_12
.largeImage .largeImage-title {
display: none;
overflow: hidden;.QIHOO__WEB__SO__1551757398975_12
font-size: {titleFontSize}px;.QIHOO__WEB__SO__1551757398975_12
font-family: {titleFontFamily};.QIHOO__WEB__SO__1551757398975_12
font-weight: {titleFontWeight};.QIHOO__WEB__SO__1551757398975_12
color: {titleFontColor};.QIHOO__WEB__SO__1551757398975_12
padding: {titlePaddingTop}.QIHOO__WEB__SO__1551757398975_12 px {titlePaddingRight}.QIHOO__WEB__SO__1551757398975_12 px {titlePaddingBottom}.QIHOO__WEB__SO__1551757398975_12 px {titlePaddingLeft}px;
line-height: 1.3;
white-space: nowrap;
text-overflow: ellipsis;
letter-spacing:0.05em;
}.QIHOO__WEB__SO__1551757398975_12
.largeImage .largeImage-title:hover {.QIHOO__WEB__SO__1551757398975_12
color:{hoverColor};
}.QIHOO__WEB__SO__1551757398975_12
.largeImage .largeImage-body{
position: relative;
vertical-align: top;
}.QIHOO__WEB__SO__1551757398975_12
.largeImage .largeImage-grid-wrap {
position: relative;
padding: NaNpx 0px;
}.QIHOO__WEB__SO__1551757398975_12
.largeImage .largeImage-grid-wrap .img {.QIHOO__WEB__SO__1551757398975_12
width:{imgW}px;
height:NaNpx;.QIHOO__WEB__SO__1551757398975_12
border-radius:{imageBorderRadius}px;
position: relative;
}.QIHOO__WEB__SO__1551757398975_12
.largeImage .largeImage-extra {
display: none;
color: #999;
height: NaNpx;
line-height: NaNpx;
overflow: hidden;
white-space: nowrap;
}.QIHOO__WEB__SO__1551757398975_12
.largeImage .largeImage-extra .largeImage-ad-tag{
width: 30px;
color: #ddd;
font-size: 12px;
display: inline;
}.QIHOO__WEB__SO__1551757398975_12
.largeImage .largeImage-extra .largeImage-ad-src{
font-size: 12px;
color: #999;
display: inline;
}.QIHOO__WEB__SO__1551757398975_12
.largeImage .ads-tag{
position: absolute;
display : block;
top: 0;
right: 0;
width: 22px;
height: 12px;
background-image: url(//p0.ssl.qhimg.com/t01c5fc7f8612d6b610.png);
}newsfeed{display:block;}newsfeed .img{background-size:cover;background-repeat:no-repeat;}.QIHOO__WEB__SO__1551757399033_760 info-div{display:block}.QIHOO__WEB__SO__1551757399033_760
.singleImage{
background-color:#fff;
padding: 0px 0px 0px 0px;
overflow: hidden;
width: 852px;
height: 60px;
cursor: pointer;
position:relative;
}.QIHOO__WEB__SO__1551757399033_760
.singleImage .wrap{
position:relative;
width: 852px;
height: 60px;
}.QIHOO__WEB__SO__1551757399033_760
.singleImage .visited .singleImage-title{
color: #9e9e9e;
}.QIHOO__WEB__SO__1551757399033_760
.singleImage .singleImage-img{
width: 90px;
height: 60px;
padding: 0px 0px;
display: block;
}.QIHOO__WEB__SO__1551757399033_760
.singleImage .singleImage-img-left{
float:left;
}.QIHOO__WEB__SO__1551757399033_760
.singleImage .singleImage-img-right{
float:right;
}.QIHOO__WEB__SO__1551757399033_760
.singleImage .singleImage-img-top{
position: absolute;
top : 0;
}.QIHOO__WEB__SO__1551757399033_760
.singleImage .singleImage-img-bottom{
position: absolute;
bottom : 0;
}.QIHOO__WEB__SO__1551757399033_760
.singleImage .singleImage-img .img{
width: 90px;
height: 60px;
border-radius: 3px;
position: relative;
}.QIHOO__WEB__SO__1551757399033_760
.singleImage .singleImage-body{
width: 762px;
height: 60px;
}.QIHOO__WEB__SO__1551757399033_760
.singleImage .singleImage-body-left{
float: left;
}.QIHOO__WEB__SO__1551757399033_760
.singleImage .singleImage-body-right{
float: left;
}.QIHOO__WEB__SO__1551757399033_760
.singleImage .singleImage-body-top{
position:absolute;
bottom:0;
}.QIHOO__WEB__SO__1551757399033_760
.singleImage .singleImage-body-bottom{
position:absolute;
top:0;
}.QIHOO__WEB__SO__1551757399033_760
.singleImage .singleImage-title{
font-size: 18px;
font-family: Lato,-apple-system,SF UI Text,Arial,PingFang SC,Hiragino Sans GB,Microsoft YaHei,WenQuanYi Micro Hei,sans-serif;
font-weight: bold;
color: #000;
padding: 0px 0px 5px 16px;
display: block;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}.QIHOO__WEB__SO__1551757399033_760
.singleImage .singleImage-title:hover{
color: #000;
}.QIHOO__WEB__SO__1551757399033_760
.singleImage .singleImage-desc{
font-size: 14px;
font-family: Microsoft Yahei;
color: #8e959a;
display: block;
padding: 0px 0px 0px 16px;
overflow: hidden;
white-space: nowrap;
}.QIHOO__WEB__SO__1551757399033_760
.singleImage .ads-tag{
position: absolute;
top: 0;
right: 0;
width: 22px;
height: 12px;
background-image: url(//p0.ssl.qhimg.com/t01c5fc7f8612d6b610.png);
}.QIHOO__WEB__SO__1551757399033_760 .mulImage .visited .mulimg-title{
color:#9e9e9e;
}.QIHOO__WEB__SO__1551757399033_760
.mulImage{.QIHOO__WEB__SO__1551757399033_760
padding: {paddingTop}.QIHOO__WEB__SO__1551757399033_760 px {paddingRight}.QIHOO__WEB__SO__1551757399033_760 px {paddingBottom}.QIHOO__WEB__SO__1551757399033_760 px {paddingLeft}px;.QIHOO__WEB__SO__1551757399033_760
background-color:{backgroundColor};
width: 852px;
height: NaNpx;
overflow: hidden;
cursor: pointer;
}.QIHOO__WEB__SO__1551757399033_760
.mulImage .mulimg-wrapper {
position: relative;
vertical-align: top;
width: 852px;
height: NaNpx;
}.QIHOO__WEB__SO__1551757399033_760
.mulImage .mulimg-title {
overflow: hidden;.QIHOO__WEB__SO__1551757399033_760
font-size: {titleFontSize}px;.QIHOO__WEB__SO__1551757399033_760
font-family: {titleFontFamily};.QIHOO__WEB__SO__1551757399033_760
font-weight: {titleFontWeight};.QIHOO__WEB__SO__1551757399033_760
color: {titleFontColor};.QIHOO__WEB__SO__1551757399033_760
padding: {titlePaddingTop}.QIHOO__WEB__SO__1551757399033_760 px {titlePaddingRight}.QIHOO__WEB__SO__1551757399033_760 px {titlePaddingBottom}.QIHOO__WEB__SO__1551757399033_760 px {titlePaddingLeft}px;
line-height: 1.3;
white-space: nowrap;
text-overflow: ellipsis;
letter-spacing:0.05em;
}.QIHOO__WEB__SO__1551757399033_760
.mulImage .mulimg-title:hover {.QIHOO__WEB__SO__1551757399033_760
color: {hoverColor};
}.QIHOO__WEB__SO__1551757399033_760
.mulImage .mulimg-grid-wrap{
position: relative;
}.QIHOO__WEB__SO__1551757399033_760
.mulImage .mulimg-figure-grid{
overflow: hidden;
}.QIHOO__WEB__SO__1551757399033_760
.mulImage .mulimg-figure{
float: left;.QIHOO__WEB__SO__1551757399033_760
margin-right:{imageSplitWidth}px;
}.QIHOO__WEB__SO__1551757399033_760
.mulImage .mulimg-figure-img {
overflow: hidden;
position: relative;
padding: NaNpx 0px;
}.QIHOO__WEB__SO__1551757399033_760
.mulImage .mulimg-figure-img .img{.QIHOO__WEB__SO__1551757399033_760
width:{imgW}px;
height:NaNpx;.QIHOO__WEB__SO__1551757399033_760
border-radius:{imageBorderRadius}px;
}.QIHOO__WEB__SO__1551757399033_760
.mulImage .mulimg-extra{
color: #999;
height: NaNpx;
line-height: NaNpx;
overflow: hidden;
white-space: nowrap;
}.QIHOO__WEB__SO__1551757399033_760
.mulImage .mulimg-extra .mul-ads-tag{
width: 30px;
color: #ddd;
font-size: 12px;
display: inline;
}.QIHOO__WEB__SO__1551757399033_760
.mulImage .mulimg-extra .ads-tag{
font-size: 12px;
color: #999;
display: inline;
}.QIHOO__WEB__SO__1551757399033_760 .mulImageWindow .visited .mulimg-title{
color:#9e9e9e;
}.QIHOO__WEB__SO__1551757399033_760
.mulImageWindow{.QIHOO__WEB__SO__1551757399033_760
padding: {paddingTop}.QIHOO__WEB__SO__1551757399033_760 px {paddingRight}.QIHOO__WEB__SO__1551757399033_760 px {paddingBottom}.QIHOO__WEB__SO__1551757399033_760 px {paddingLeft}px;.QIHOO__WEB__SO__1551757399033_760
background-color:{backgroundColor};
width: 852px;
height: NaNpx;
overflow: hidden;
cursor: pointer;
}.QIHOO__WEB__SO__1551757399033_760
.mulImageWindow .mulimg-wrapper {
position: relative;
vertical-align: top;
width: 852px;
height: NaNpx;
}.QIHOO__WEB__SO__1551757399033_760
.mulImageWindow .mulimg-title {
overflow: hidden;.QIHOO__WEB__SO__1551757399033_760
font-size: {titleFontSize}px;.QIHOO__WEB__SO__1551757399033_760
font-family: {titleFontFamily};.QIHOO__WEB__SO__1551757399033_760
font-weight: {titleFontWeight};.QIHOO__WEB__SO__1551757399033_760
color: {titleFontColor};.QIHOO__WEB__SO__1551757399033_760
padding: {titlePaddingTop}.QIHOO__WEB__SO__1551757399033_760 px {titlePaddingRight}.QIHOO__WEB__SO__1551757399033_760 px {titlePaddingBottom}.QIHOO__WEB__SO__1551757399033_760 px {titlePaddingLeft}px;
line-height: 1.3;
white-space: nowrap;
text-overflow: ellipsis;
letter-spacing:0.05em;
}.QIHOO__WEB__SO__1551757399033_760
.mulImageWindow .mulimg-title:hover {.QIHOO__WEB__SO__1551757399033_760
color: {hoverColor};
}.QIHOO__WEB__SO__1551757399033_760
.mulImageWindow .mulimg-grid-wrap{
position: relative;
}.QIHOO__WEB__SO__1551757399033_760
.mulImageWindow .mulimg-figure-grid{
overflow: hidden;
}.QIHOO__WEB__SO__1551757399033_760
.mulImageWindow .mulimg-figure{
float: left;.QIHOO__WEB__SO__1551757399033_760
margin-right:{imageSplitWidth}px;
}.QIHOO__WEB__SO__1551757399033_760
.mulImageWindow .mulimg-figure-img {
overflow: hidden;
position: relative;
padding: 0px NaNpx;
}.QIHOO__WEB__SO__1551757399033_760
.mulImageWindow .mulimg-figure-img .img{
width:NaNpx;.QIHOO__WEB__SO__1551757399033_760
height:{imgH}px;.QIHOO__WEB__SO__1551757399033_760
border-radius:{imageBorderRadius}px;
}.QIHOO__WEB__SO__1551757399033_760
.mulImageWindow .mulimg-figure-img .window-item__title{
display: block;
width: 100%;
position: absolute;
bottom: 0;
background-color: rgba(0,0,0,0.5);
filter: progid:DXImageTransform.Microsoft.gradient(startcolorstr=#88000000, endcolorstr=#88000000);
color: #fff;.QIHOO__WEB__SO__1551757399033_760
font-size: {windowItemTitleFontSize}px;
line-height: 1.5;
text-align: center;
white-space: nowrap;
overflow:hidden;
text-overflow: ellipsis;
}.QIHOO__WEB__SO__1551757399033_760
.mulImageWindow .mulimg-extra{
color: #999;
height: NaNpx;
line-height: NaNpx;
overflow: hidden;
white-space: nowrap;
}.QIHOO__WEB__SO__1551757399033_760
.mulImageWindow .mulimg-extra .mul-ads-tag{
width: 30px;
color: #ddd;
font-size: 12px;
display: inline;
}.QIHOO__WEB__SO__1551757399033_760
.mulImageWindow .mulimg-extra .ads-tag{
font-size: 12px;
color: #999;
display: inline;
}.QIHOO__WEB__SO__1551757399033_760 .largeImage .visited .largeImage-title{
color: #9e9e9e;
}.QIHOO__WEB__SO__1551757399033_760
.largeImage{.QIHOO__WEB__SO__1551757399033_760
padding: {paddingTop}.QIHOO__WEB__SO__1551757399033_760 px {paddingRight}.QIHOO__WEB__SO__1551757399033_760 px {paddingBottom}.QIHOO__WEB__SO__1551757399033_760 px {paddingLeft}px;.QIHOO__WEB__SO__1551757399033_760
background-color:{backgroundColor};
width: 852px;
height: NaNpx;
overflow: hidden;
cursor: pointer;
}.QIHOO__WEB__SO__1551757399033_760
.largeImage .largeImage-wrapper {
position: relative;
vertical-align: top;
width: 852px;
height: NaNpx;
}.QIHOO__WEB__SO__1551757399033_760
.largeImage .largeImage-title {
display: none;
overflow: hidden;.QIHOO__WEB__SO__1551757399033_760
font-size: {titleFontSize}px;.QIHOO__WEB__SO__1551757399033_760
font-family: {titleFontFamily};.QIHOO__WEB__SO__1551757399033_760
font-weight: {titleFontWeight};.QIHOO__WEB__SO__1551757399033_760
color: {titleFontColor};.QIHOO__WEB__SO__1551757399033_760
padding: {titlePaddingTop}.QIHOO__WEB__SO__1551757399033_760 px {titlePaddingRight}.QIHOO__WEB__SO__1551757399033_760 px {titlePaddingBottom}.QIHOO__WEB__SO__1551757399033_760 px {titlePaddingLeft}px;
line-height: 1.3;
white-space: nowrap;
text-overflow: ellipsis;
letter-spacing:0.05em;
}.QIHOO__WEB__SO__1551757399033_760
.largeImage .largeImage-title:hover {.QIHOO__WEB__SO__1551757399033_760
color:{hoverColor};
}.QIHOO__WEB__SO__1551757399033_760
.largeImage .largeImage-body{
position: relative;
vertical-align: top;
}.QIHOO__WEB__SO__1551757399033_760
.largeImage .largeImage-grid-wrap {
position: relative;
padding: NaNpx 0px;
}.QIHOO__WEB__SO__1551757399033_760
.largeImage .largeImage-grid-wrap .img {.QIHOO__WEB__SO__1551757399033_760
width:{imgW}px;
height:NaNpx;.QIHOO__WEB__SO__1551757399033_760
border-radius:{imageBorderRadius}px;
position: relative;
}.QIHOO__WEB__SO__1551757399033_760
.largeImage .largeImage-extra {
display: none;
color: #999;
height: NaNpx;
line-height: NaNpx;
overflow: hidden;
white-space: nowrap;
}.QIHOO__WEB__SO__1551757399033_760
.largeImage .largeImage-extra .largeImage-ad-tag{
width: 30px;
color: #ddd;
font-size: 12px;
display: inline;
}.QIHOO__WEB__SO__1551757399033_760
.largeImage .largeImage-extra .largeImage-ad-src{
font-size: 12px;
color: #999;
display: inline;
}.QIHOO__WEB__SO__1551757399033_760
.largeImage .ads-tag{
position: absolute;
display : block;
top: 0;
right: 0;
width: 22px;
height: 12px;
background-image: url(//p0.ssl.qhimg.com/t01c5fc7f8612d6b610.png);
}.QIHOO__WEB__SO__1551757399045_886 info-div{display:block}.QIHOO__WEB__SO__1551757399045_886
.singleImage{
background-color:#fff;
padding: 0px 0px 0px 0px;
overflow: hidden;
width: 852px;
height: 60px;
cursor: pointer;
position:relative;
}.QIHOO__WEB__SO__1551757399045_886
.singleImage .wrap{
position:relative;
width: 852px;
height: 60px;
}.QIHOO__WEB__SO__1551757399045_886
.singleImage .visited .singleImage-title{
color: #9e9e9e;
}.QIHOO__WEB__SO__1551757399045_886
.singleImage .singleImage-img{
width: 90px;
height: 60px;
padding: 0px 0px;
display: block;
}.QIHOO__WEB__SO__1551757399045_886
.singleImage .singleImage-img-left{
float:left;
}.QIHOO__WEB__SO__1551757399045_886
.singleImage .singleImage-img-right{
float:right;
}.QIHOO__WEB__SO__1551757399045_886
.singleImage .singleImage-img-top{
position: absolute;
top : 0;
}.QIHOO__WEB__SO__1551757399045_886
.singleImage .singleImage-img-bottom{
position: absolute;
bottom : 0;
}.QIHOO__WEB__SO__1551757399045_886
.singleImage .singleImage-img .img{
width: 90px;
height: 60px;
border-radius: 3px;
position: relative;
}.QIHOO__WEB__SO__1551757399045_886
.singleImage .singleImage-body{
width: 762px;
height: 60px;
}.QIHOO__WEB__SO__1551757399045_886
.singleImage .singleImage-body-left{
float: left;
}.QIHOO__WEB__SO__1551757399045_886
.singleImage .singleImage-body-right{
float: left;
}.QIHOO__WEB__SO__1551757399045_886
.singleImage .singleImage-body-top{
position:absolute;
bottom:0;
}.QIHOO__WEB__SO__1551757399045_886
.singleImage .singleImage-body-bottom{
position:absolute;
top:0;
}.QIHOO__WEB__SO__1551757399045_886
.singleImage .singleImage-title{
font-size: 18px;
font-family: Lato,-apple-system,SF UI Text,Arial,PingFang SC,Hiragino Sans GB,Microsoft YaHei,WenQuanYi Micro Hei,sans-serif;
font-weight: bold;
color: #000;
padding: 0px 0px 5px 16px;
display: block;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}.QIHOO__WEB__SO__1551757399045_886
.singleImage .singleImage-title:hover{
color: #000;
}.QIHOO__WEB__SO__1551757399045_886
.singleImage .singleImage-desc{
font-size: 14px;
font-family: Microsoft Yahei;
color: #8e959a;
display: block;
padding: 0px 0px 0px 16px;
overflow: hidden;
white-space: nowrap;
}.QIHOO__WEB__SO__1551757399045_886
.singleImage .ads-tag{
position: absolute;
top: 0;
right: 0;
width: 22px;
height: 12px;
background-image: url(//p0.ssl.qhimg.com/t01c5fc7f8612d6b610.png);
}.QIHOO__WEB__SO__1551757399045_886 .mulImage .visited .mulimg-title{
color:#9e9e9e;
}.QIHOO__WEB__SO__1551757399045_886
.mulImage{.QIHOO__WEB__SO__1551757399045_886
padding: {paddingTop}.QIHOO__WEB__SO__1551757399045_886 px {paddingRight}.QIHOO__WEB__SO__1551757399045_886 px {paddingBottom}.QIHOO__WEB__SO__1551757399045_886 px {paddingLeft}px;.QIHOO__WEB__SO__1551757399045_886
background-color:{backgroundColor};
width: 852px;
height: NaNpx;
overflow: hidden;
cursor: pointer;
}.QIHOO__WEB__SO__1551757399045_886
.mulImage .mulimg-wrapper {
position: relative;
vertical-align: top;
width: 852px;
height: NaNpx;
}.QIHOO__WEB__SO__1551757399045_886
.mulImage .mulimg-title {
overflow: hidden;.QIHOO__WEB__SO__1551757399045_886
font-size: {titleFontSize}px;.QIHOO__WEB__SO__1551757399045_886
font-family: {titleFontFamily};.QIHOO__WEB__SO__1551757399045_886
font-weight: {titleFontWeight};.QIHOO__WEB__SO__1551757399045_886
color: {titleFontColor};.QIHOO__WEB__SO__1551757399045_886
padding: {titlePaddingTop}.QIHOO__WEB__SO__1551757399045_886 px {titlePaddingRight}.QIHOO__WEB__SO__1551757399045_886 px {titlePaddingBottom}.QIHOO__WEB__SO__1551757399045_886 px {titlePaddingLeft}px;
line-height: 1.3;
white-space: nowrap;
text-overflow: ellipsis;
letter-spacing:0.05em;
}.QIHOO__WEB__SO__1551757399045_886
.mulImage .mulimg-title:hover {.QIHOO__WEB__SO__1551757399045_886
color: {hoverColor};
}.QIHOO__WEB__SO__1551757399045_886
.mulImage .mulimg-grid-wrap{
position: relative;
}.QIHOO__WEB__SO__1551757399045_886
.mulImage .mulimg-figure-grid{
overflow: hidden;
}.QIHOO__WEB__SO__1551757399045_886
.mulImage .mulimg-figure{
float: left;.QIHOO__WEB__SO__1551757399045_886
margin-right:{imageSplitWidth}px;
}.QIHOO__WEB__SO__1551757399045_886
.mulImage .mulimg-figure-img {
overflow: hidden;
position: relative;
padding: NaNpx 0px;
}.QIHOO__WEB__SO__1551757399045_886
.mulImage .mulimg-figure-img .img{.QIHOO__WEB__SO__1551757399045_886
width:{imgW}px;
height:NaNpx;.QIHOO__WEB__SO__1551757399045_886
border-radius:{imageBorderRadius}px;
}.QIHOO__WEB__SO__1551757399045_886
.mulImage .mulimg-extra{
color: #999;
height: NaNpx;
line-height: NaNpx;
overflow: hidden;
white-space: nowrap;
}.QIHOO__WEB__SO__1551757399045_886
.mulImage .mulimg-extra .mul-ads-tag{
width: 30px;
color: #ddd;
font-size: 12px;
display: inline;
}.QIHOO__WEB__SO__1551757399045_886
.mulImage .mulimg-extra .ads-tag{
font-size: 12px;
color: #999;
display: inline;
}.QIHOO__WEB__SO__1551757399045_886 .mulImageWindow .visited .mulimg-title{
color:#9e9e9e;
}.QIHOO__WEB__SO__1551757399045_886
.mulImageWindow{.QIHOO__WEB__SO__1551757399045_886
padding: {paddingTop}.QIHOO__WEB__SO__1551757399045_886 px {paddingRight}.QIHOO__WEB__SO__1551757399045_886 px {paddingBottom}.QIHOO__WEB__SO__1551757399045_886 px {paddingLeft}px;.QIHOO__WEB__SO__1551757399045_886
background-color:{backgroundColor};
width: 852px;
height: NaNpx;
overflow: hidden;
cursor: pointer;
}.QIHOO__WEB__SO__1551757399045_886
.mulImageWindow .mulimg-wrapper {
position: relative;
vertical-align: top;
width: 852px;
height: NaNpx;
}.QIHOO__WEB__SO__1551757399045_886
.mulImageWindow .mulimg-title {
overflow: hidden;.QIHOO__WEB__SO__1551757399045_886
font-size: {titleFontSize}px;.QIHOO__WEB__SO__1551757399045_886
font-family: {titleFontFamily};.QIHOO__WEB__SO__1551757399045_886
font-weight: {titleFontWeight};.QIHOO__WEB__SO__1551757399045_886
color: {titleFontColor};.QIHOO__WEB__SO__1551757399045_886
padding: {titlePaddingTop}.QIHOO__WEB__SO__1551757399045_886 px {titlePaddingRight}.QIHOO__WEB__SO__1551757399045_886 px {titlePaddingBottom}.QIHOO__WEB__SO__1551757399045_886 px {titlePaddingLeft}px;
line-height: 1.3;
white-space: nowrap;
text-overflow: ellipsis;
letter-spacing:0.05em;
}.QIHOO__WEB__SO__1551757399045_886
.mulImageWindow .mulimg-title:hover {.QIHOO__WEB__SO__1551757399045_886
color: {hoverColor};
}.QIHOO__WEB__SO__1551757399045_886
.mulImageWindow .mulimg-grid-wrap{
position: relative;
}.QIHOO__WEB__SO__1551757399045_886
.mulImageWindow .mulimg-figure-grid{
overflow: hidden;
}.QIHOO__WEB__SO__1551757399045_886
.mulImageWindow .mulimg-figure{
float: left;.QIHOO__WEB__SO__1551757399045_886
margin-right:{imageSplitWidth}px;
}.QIHOO__WEB__SO__1551757399045_886
.mulImageWindow .mulimg-figure-img {
overflow: hidden;
position: relative;
padding: 0px NaNpx;
}.QIHOO__WEB__SO__1551757399045_886
.mulImageWindow .mulimg-figure-img .img{
width:NaNpx;.QIHOO__WEB__SO__1551757399045_886
height:{imgH}px;.QIHOO__WEB__SO__1551757399045_886
border-radius:{imageBorderRadius}px;
}.QIHOO__WEB__SO__1551757399045_886
.mulImageWindow .mulimg-figure-img .window-item__title{
display: block;
width: 100%;
position: absolute;
bottom: 0;
background-color: rgba(0,0,0,0.5);
filter: progid:DXImageTransform.Microsoft.gradient(startcolorstr=#88000000, endcolorstr=#88000000);
color: #fff;.QIHOO__WEB__SO__1551757399045_886
font-size: {windowItemTitleFontSize}px;
line-height: 1.5;
text-align: center;
white-space: nowrap;
overflow:hidden;
text-overflow: ellipsis;
}.QIHOO__WEB__SO__1551757399045_886
.mulImageWindow .mulimg-extra{
color: #999;
height: NaNpx;
line-height: NaNpx;
overflow: hidden;
white-space: nowrap;
}.QIHOO__WEB__SO__1551757399045_886
.mulImageWindow .mulimg-extra .mul-ads-tag{
width: 30px;
color: #ddd;
font-size: 12px;
display: inline;
}.QIHOO__WEB__SO__1551757399045_886
.mulImageWindow .mulimg-extra .ads-tag{
font-size: 12px;
color: #999;
display: inline;
}.QIHOO__WEB__SO__1551757399045_886 .largeImage .visited .largeImage-title{
color: #9e9e9e;
}.QIHOO__WEB__SO__1551757399045_886
.largeImage{.QIHOO__WEB__SO__1551757399045_886
padding: {paddingTop}.QIHOO__WEB__SO__1551757399045_886 px {paddingRight}.QIHOO__WEB__SO__1551757399045_886 px {paddingBottom}.QIHOO__WEB__SO__1551757399045_886 px {paddingLeft}px;.QIHOO__WEB__SO__1551757399045_886
background-color:{backgroundColor};
width: 852px;
height: NaNpx;
overflow: hidden;
cursor: pointer;
}.QIHOO__WEB__SO__1551757399045_886
.largeImage .largeImage-wrapper {
position: relative;
vertical-align: top;
width: 852px;
height: NaNpx;
}.QIHOO__WEB__SO__1551757399045_886
.largeImage .largeImage-title {
display: none;
overflow: hidden;.QIHOO__WEB__SO__1551757399045_886
font-size: {titleFontSize}px;.QIHOO__WEB__SO__1551757399045_886
font-family: {titleFontFamily};.QIHOO__WEB__SO__1551757399045_886
font-weight: {titleFontWeight};.QIHOO__WEB__SO__1551757399045_886
color: {titleFontColor};.QIHOO__WEB__SO__1551757399045_886
padding: {titlePaddingTop}.QIHOO__WEB__SO__1551757399045_886 px {titlePaddingRight}.QIHOO__WEB__SO__1551757399045_886 px {titlePaddingBottom}.QIHOO__WEB__SO__1551757399045_886 px {titlePaddingLeft}px;
line-height: 1.3;
white-space: nowrap;
text-overflow: ellipsis;
letter-spacing:0.05em;
}.QIHOO__WEB__SO__1551757399045_886
.largeImage .largeImage-title:hover {.QIHOO__WEB__SO__1551757399045_886
color:{hoverColor};
}.QIHOO__WEB__SO__1551757399045_886
.largeImage .largeImage-body{
position: relative;
vertical-align: top;
}.QIHOO__WEB__SO__1551757399045_886
.largeImage .largeImage-grid-wrap {
position: relative;
padding: NaNpx 0px;
}.QIHOO__WEB__SO__1551757399045_886
.largeImage .largeImage-grid-wrap .img {.QIHOO__WEB__SO__1551757399045_886
width:{imgW}px;
height:NaNpx;.QIHOO__WEB__SO__1551757399045_886
border-radius:{imageBorderRadius}px;
position: relative;
}.QIHOO__WEB__SO__1551757399045_886
.largeImage .largeImage-extra {
display: none;
color: #999;
height: NaNpx;
line-height: NaNpx;
overflow: hidden;
white-space: nowrap;
}.QIHOO__WEB__SO__1551757399045_886
.largeImage .largeImage-extra .largeImage-ad-tag{
width: 30px;
color: #ddd;
font-size: 12px;
display: inline;
}.QIHOO__WEB__SO__1551757399045_886
.largeImage .largeImage-extra .largeImage-ad-src{
font-size: 12px;
color: #999;
display: inline;
}.QIHOO__WEB__SO__1551757399045_886
.largeImage .ads-tag{
position: absolute;
display : block;
top: 0;
right: 0;
width: 22px;
height: 12px;
background-image: url(//p0.ssl.qhimg.com/t01c5fc7f8612d6b610.png);
}.QIHOO__WEB__SO__1551757399065_202 info-div{display:block}.QIHOO__WEB__SO__1551757399065_202
.singleImage{
background-color:#fff;
padding: 10px 0px 0px 0px;
overflow: hidden;
width: 900px;
height: 74px;
cursor: pointer;
position:relative;
}.QIHOO__WEB__SO__1551757399065_202
.singleImage .wrap{
position:relative;
width: 900px;
height: 74px;
}.QIHOO__WEB__SO__1551757399065_202
.singleImage .visited .singleImage-title{
color: #9e9e9e;
}.QIHOO__WEB__SO__1551757399065_202
.singleImage .singleImage-img{
width: 90px;
height: 60px;
padding: 0px 0px;
display: block;
}.QIHOO__WEB__SO__1551757399065_202
.singleImage .singleImage-img-left{
float:left;
}.QIHOO__WEB__SO__1551757399065_202
.singleImage .singleImage-img-right{
float:right;
}.QIHOO__WEB__SO__1551757399065_202
.singleImage .singleImage-img-top{
position: absolute;
top : 0;
}.QIHOO__WEB__SO__1551757399065_202
.singleImage .singleImage-img-bottom{
position: absolute;
bottom : 0;
}.QIHOO__WEB__SO__1551757399065_202
.singleImage .singleImage-img .img{
width: 90px;
height: 60px;
border-radius: 3px;
position: relative;
}.QIHOO__WEB__SO__1551757399065_202
.singleImage .singleImage-body{
width: 810px;
height: 74px;
}.QIHOO__WEB__SO__1551757399065_202
.singleImage .singleImage-body-left{
float: left;
}.QIHOO__WEB__SO__1551757399065_202
.singleImage .singleImage-body-right{
float: left;
}.QIHOO__WEB__SO__1551757399065_202
.singleImage .singleImage-body-top{
position:absolute;
bottom:0;
}.QIHOO__WEB__SO__1551757399065_202
.singleImage .singleImage-body-bottom{
position:absolute;
top:0;
}.QIHOO__WEB__SO__1551757399065_202
.singleImage .singleImage-title{
font-size: 16px;
font-family: Microsoft Yahei;
font-weight: bold;
color: #000;
padding: 0px 0px 5px 16px;
display: block;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}.QIHOO__WEB__SO__1551757399065_202
.singleImage .singleImage-title:hover{
color: #000;
}.QIHOO__WEB__SO__1551757399065_202
.singleImage .singleImage-desc{
font-size: 14px;
font-family: Microsoft Yahei;
color: #8e959a;
display: block;
padding: 0px 0px 0px 16px;
overflow: hidden;
white-space: nowrap;
}.QIHOO__WEB__SO__1551757399065_202
.singleImage .ads-tag{
position: absolute;
top: 0;
right: 0;
width: 22px;
height: 12px;
background-image: url(//p0.ssl.qhimg.com/t01c5fc7f8612d6b610.png);
}.QIHOO__WEB__SO__1551757399065_202 .mulImage .visited .mulimg-title{
color:#9e9e9e;
}.QIHOO__WEB__SO__1551757399065_202
.mulImage{.QIHOO__WEB__SO__1551757399065_202
padding: {paddingTop}.QIHOO__WEB__SO__1551757399065_202 px {paddingRight}.QIHOO__WEB__SO__1551757399065_202 px {paddingBottom}.QIHOO__WEB__SO__1551757399065_202 px {paddingLeft}px;.QIHOO__WEB__SO__1551757399065_202
background-color:{backgroundColor};
width: 900px;
height: NaNpx;
overflow: hidden;
cursor: pointer;
}.QIHOO__WEB__SO__1551757399065_202
.mulImage .mulimg-wrapper {
position: relative;
vertical-align: top;
width: 900px;
height: NaNpx;
}.QIHOO__WEB__SO__1551757399065_202
.mulImage .mulimg-title {
overflow: hidden;.QIHOO__WEB__SO__1551757399065_202
font-size: {titleFontSize}px;.QIHOO__WEB__SO__1551757399065_202
font-family: {titleFontFamily};.QIHOO__WEB__SO__1551757399065_202
font-weight: {titleFontWeight};.QIHOO__WEB__SO__1551757399065_202
color: {titleFontColor};.QIHOO__WEB__SO__1551757399065_202
padding: {titlePaddingTop}.QIHOO__WEB__SO__1551757399065_202 px {titlePaddingRight}.QIHOO__WEB__SO__1551757399065_202 px {titlePaddingBottom}.QIHOO__WEB__SO__1551757399065_202 px {titlePaddingLeft}px;
line-height: 1.3;
white-space: nowrap;
text-overflow: ellipsis;
letter-spacing:0.05em;
}.QIHOO__WEB__SO__1551757399065_202
.mulImage .mulimg-title:hover {.QIHOO__WEB__SO__1551757399065_202
color: {hoverColor};
}.QIHOO__WEB__SO__1551757399065_202
.mulImage .mulimg-grid-wrap{
position: relative;
}.QIHOO__WEB__SO__1551757399065_202
.mulImage .mulimg-figure-grid{
overflow: hidden;
}.QIHOO__WEB__SO__1551757399065_202
.mulImage .mulimg-figure{
float: left;.QIHOO__WEB__SO__1551757399065_202
margin-right:{imageSplitWidth}px;
}.QIHOO__WEB__SO__1551757399065_202
.mulImage .mulimg-figure-img {
overflow: hidden;
position: relative;
padding: NaNpx 0px;
}.QIHOO__WEB__SO__1551757399065_202
.mulImage .mulimg-figure-img .img{.QIHOO__WEB__SO__1551757399065_202
width:{imgW}px;
height:NaNpx;.QIHOO__WEB__SO__1551757399065_202
border-radius:{imageBorderRadius}px;
}.QIHOO__WEB__SO__1551757399065_202
.mulImage .mulimg-extra{
color: #999;
height: NaNpx;
line-height: NaNpx;
overflow: hidden;
white-space: nowrap;
}.QIHOO__WEB__SO__1551757399065_202
.mulImage .mulimg-extra .mul-ads-tag{
width: 30px;
color: #ddd;
font-size: 12px;
display: inline;
}.QIHOO__WEB__SO__1551757399065_202
.mulImage .mulimg-extra .ads-tag{
font-size: 12px;
color: #999;
display: inline;
}.QIHOO__WEB__SO__1551757399065_202 .mulImageWindow .visited .mulimg-title{
color:#9e9e9e;
}.QIHOO__WEB__SO__1551757399065_202
.mulImageWindow{.QIHOO__WEB__SO__1551757399065_202
padding: {paddingTop}.QIHOO__WEB__SO__1551757399065_202 px {paddingRight}.QIHOO__WEB__SO__1551757399065_202 px {paddingBottom}.QIHOO__WEB__SO__1551757399065_202 px {paddingLeft}px;.QIHOO__WEB__SO__1551757399065_202
background-color:{backgroundColor};
width: 900px;
height: NaNpx;
overflow: hidden;
cursor: pointer;
}.QIHOO__WEB__SO__1551757399065_202
.mulImageWindow .mulimg-wrapper {
position: relative;
vertical-align: top;
width: 900px;
height: NaNpx;
}.QIHOO__WEB__SO__1551757399065_202
.mulImageWindow .mulimg-title {
overflow: hidden;.QIHOO__WEB__SO__1551757399065_202
font-size: {titleFontSize}px;.QIHOO__WEB__SO__1551757399065_202
font-family: {titleFontFamily};.QIHOO__WEB__SO__1551757399065_202
font-weight: {titleFontWeight};.QIHOO__WEB__SO__1551757399065_202
color: {titleFontColor};.QIHOO__WEB__SO__1551757399065_202
padding: {titlePaddingTop}.QIHOO__WEB__SO__1551757399065_202 px {titlePaddingRight}.QIHOO__WEB__SO__1551757399065_202 px {titlePaddingBottom}.QIHOO__WEB__SO__1551757399065_202 px {titlePaddingLeft}px;
line-height: 1.3;
white-space: nowrap;
text-overflow: ellipsis;
letter-spacing:0.05em;
}.QIHOO__WEB__SO__1551757399065_202
.mulImageWindow .mulimg-title:hover {.QIHOO__WEB__SO__1551757399065_202
color: {hoverColor};
}.QIHOO__WEB__SO__1551757399065_202
.mulImageWindow .mulimg-grid-wrap{
position: relative;
}.QIHOO__WEB__SO__1551757399065_202
.mulImageWindow .mulimg-figure-grid{
overflow: hidden;
}.QIHOO__WEB__SO__1551757399065_202
.mulImageWindow .mulimg-figure{
float: left;.QIHOO__WEB__SO__1551757399065_202
margin-right:{imageSplitWidth}px;
}.QIHOO__WEB__SO__1551757399065_202
.mulImageWindow .mulimg-figure-img {
overflow: hidden;
position: relative;
padding: 0px NaNpx;
}.QIHOO__WEB__SO__1551757399065_202
.mulImageWindow .mulimg-figure-img .img{
width:NaNpx;.QIHOO__WEB__SO__1551757399065_202
height:{imgH}px;.QIHOO__WEB__SO__1551757399065_202
border-radius:{imageBorderRadius}px;
}.QIHOO__WEB__SO__1551757399065_202
.mulImageWindow .mulimg-figure-img .window-item__title{
display: block;
width: 100%;
position: absolute;
bottom: 0;
background-color: rgba(0,0,0,0.5);
filter: progid:DXImageTransform.Microsoft.gradient(startcolorstr=#88000000, endcolorstr=#88000000);
color: #fff;.QIHOO__WEB__SO__1551757399065_202
font-size: {windowItemTitleFontSize}px;
line-height: 1.5;
text-align: center;
white-space: nowrap;
overflow:hidden;
text-overflow: ellipsis;
}.QIHOO__WEB__SO__1551757399065_202
.mulImageWindow .mulimg-extra{
color: #999;
height: NaNpx;
line-height: NaNpx;
overflow: hidden;
white-space: nowrap;
}.QIHOO__WEB__SO__1551757399065_202
.mulImageWindow .mulimg-extra .mul-ads-tag{
width: 30px;
color: #ddd;
font-size: 12px;
display: inline;
}.QIHOO__WEB__SO__1551757399065_202
.mulImageWindow .mulimg-extra .ads-tag{
font-size: 12px;
color: #999;
display: inline;
}.QIHOO__WEB__SO__1551757399065_202 .largeImage .visited .largeImage-title{
color: #9e9e9e;
}.QIHOO__WEB__SO__1551757399065_202
.largeImage{.QIHOO__WEB__SO__1551757399065_202
padding: {paddingTop}.QIHOO__WEB__SO__1551757399065_202 px {paddingRight}.QIHOO__WEB__SO__1551757399065_202 px {paddingBottom}.QIHOO__WEB__SO__1551757399065_202 px {paddingLeft}px;.QIHOO__WEB__SO__1551757399065_202
background-color:{backgroundColor};
width: 900px;
height: NaNpx;
overflow: hidden;
cursor: pointer;
}.QIHOO__WEB__SO__1551757399065_202
.largeImage .largeImage-wrapper {
position: relative;
vertical-align: top;
width: 900px;
height: NaNpx;
}.QIHOO__WEB__SO__1551757399065_202
.largeImage .largeImage-title {
display: none;
overflow: hidden;.QIHOO__WEB__SO__1551757399065_202
font-size: {titleFontSize}px;.QIHOO__WEB__SO__1551757399065_202
font-family: {titleFontFamily};.QIHOO__WEB__SO__1551757399065_202
font-weight: {titleFontWeight};.QIHOO__WEB__SO__1551757399065_202
color: {titleFontColor};.QIHOO__WEB__SO__1551757399065_202
padding: {titlePaddingTop}.QIHOO__WEB__SO__1551757399065_202 px {titlePaddingRight}.QIHOO__WEB__SO__1551757399065_202 px {titlePaddingBottom}.QIHOO__WEB__SO__1551757399065_202 px {titlePaddingLeft}px;
line-height: 1.3;
white-space: nowrap;
text-overflow: ellipsis;
letter-spacing:0.05em;
}.QIHOO__WEB__SO__1551757399065_202
.largeImage .largeImage-title:hover {.QIHOO__WEB__SO__1551757399065_202
color:{hoverColor};
}.QIHOO__WEB__SO__1551757399065_202
.largeImage .largeImage-body{
position: relative;
vertical-align: top;
}.QIHOO__WEB__SO__1551757399065_202
.largeImage .largeImage-grid-wrap {
position: relative;
padding: NaNpx 0px;
}.QIHOO__WEB__SO__1551757399065_202
.largeImage .largeImage-grid-wrap .img {.QIHOO__WEB__SO__1551757399065_202
width:{imgW}px;
height:NaNpx;.QIHOO__WEB__SO__1551757399065_202
border-radius:{imageBorderRadius}px;
position: relative;
}.QIHOO__WEB__SO__1551757399065_202
.largeImage .largeImage-extra {
display: none;
color: #999;
height: NaNpx;
line-height: NaNpx;
overflow: hidden;
white-space: nowrap;
}.QIHOO__WEB__SO__1551757399065_202
.largeImage .largeImage-extra .largeImage-ad-tag{
width: 30px;
color: #ddd;
font-size: 12px;
display: inline;
}.QIHOO__WEB__SO__1551757399065_202
.largeImage .largeImage-extra .largeImage-ad-src{
font-size: 12px;
color: #999;
display: inline;
}.QIHOO__WEB__SO__1551757399065_202
.largeImage .ads-tag{
position: absolute;
display : block;
top: 0;
right: 0;
width: 22px;
height: 12px;
background-image: url(//p0.ssl.qhimg.com/t01c5fc7f8612d6b610.png);
}</style><script src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/share.js"></script><link rel="stylesheet" type="text/css" href="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/goTop.css"><style type="text/css">pre{position: relative}pre:hover .hljs-button{display: block}.hljs-button{display: none;position: absolute;right: 4px;top: 4px;font-size: 12px;color: #4d4d4d;background-color: white;padding: 2px 8px;margin: 8px;border-radius: 4px;cursor: pointer; box-shadow: 0 2px 4px rgba(0,0,0,0.05), 0 2px 4px rgba(0,0,0,0.05);}.hljs-button:after{content: attr(data-title)}</style><style type="text/css">.hljs-ln{border-collapse:collapse} .hljs-ln td{padding:0} .hljs-ln-n{text-align: right;padding-right: 8px;} .hljs-ln-n:before{content:attr(data-line-number)}</style><script charset="UTF-8" src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/bwordcom"></script><script type="text/javascript" src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/check-adb.js"></script><script type="text/javascript" src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/baidu_opensug-1.js"></script><link rel="stylesheet" type="text/css" href="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/check-adb.css"><script type="text/javascript" src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/fuckadblock.js"></script><style type="text/css">.MathJax_Hover_Frame {border-radius: .25em; -webkit-border-radius: .25em; -moz-border-radius: .25em; -khtml-border-radius: .25em; box-shadow: 0px 0px 15px #83A; -webkit-box-shadow: 0px 0px 15px #83A; -moz-box-shadow: 0px 0px 15px #83A; -khtml-box-shadow: 0px 0px 15px #83A; border: 1px solid #A6D ! important; display: inline-block; position: absolute}
.MathJax_Menu_Button .MathJax_Hover_Arrow {position: absolute; cursor: pointer; display: inline-block; border: 2px solid #AAA; border-radius: 4px; -webkit-border-radius: 4px; -moz-border-radius: 4px; -khtml-border-radius: 4px; font-family: 'Courier New',Courier; font-size: 9px; color: #F0F0F0}
.MathJax_Menu_Button .MathJax_Hover_Arrow span {display: block; background-color: #AAA; border: 1px solid; border-radius: 3px; line-height: 0; padding: 4px}
.MathJax_Hover_Arrow:hover {color: white!important; border: 2px solid #CCC!important}
.MathJax_Hover_Arrow:hover span {background-color: #CCC!important}
</style><style type="text/css">#MathJax_About {position: fixed; left: 50%; width: auto; text-align: center; border: 3px outset; padding: 1em 2em; background-color: #DDDDDD; color: black; cursor: default; font-family: message-box; font-size: 120%; font-style: normal; text-indent: 0; text-transform: none; line-height: normal; letter-spacing: normal; word-spacing: normal; word-wrap: normal; white-space: nowrap; float: none; z-index: 201; border-radius: 15px; -webkit-border-radius: 15px; -moz-border-radius: 15px; -khtml-border-radius: 15px; box-shadow: 0px 10px 20px #808080; -webkit-box-shadow: 0px 10px 20px #808080; -moz-box-shadow: 0px 10px 20px #808080; -khtml-box-shadow: 0px 10px 20px #808080; filter: progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true')}
#MathJax_About.MathJax_MousePost {outline: none}
.MathJax_Menu {position: absolute; background-color: white; color: black; width: auto; padding: 2px; border: 1px solid #CCCCCC; margin: 0; cursor: default; font: menu; text-align: left; text-indent: 0; text-transform: none; line-height: normal; letter-spacing: normal; word-spacing: normal; word-wrap: normal; white-space: nowrap; float: none; z-index: 201; box-shadow: 0px 10px 20px #808080; -webkit-box-shadow: 0px 10px 20px #808080; -moz-box-shadow: 0px 10px 20px #808080; -khtml-box-shadow: 0px 10px 20px #808080; filter: progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true')}
.MathJax_MenuItem {padding: 2px 2em; background: transparent}
.MathJax_MenuArrow {position: absolute; right: .5em; padding-top: .25em; color: #666666; font-size: .75em}
.MathJax_MenuActive .MathJax_MenuArrow {color: white}
.MathJax_MenuArrow.RTL {left: .5em; right: auto}
.MathJax_MenuCheck {position: absolute; left: .7em}
.MathJax_MenuCheck.RTL {right: .7em; left: auto}
.MathJax_MenuRadioCheck {position: absolute; left: 1em}
.MathJax_MenuRadioCheck.RTL {right: 1em; left: auto}
.MathJax_MenuLabel {padding: 2px 2em 4px 1.33em; font-style: italic}
.MathJax_MenuRule {border-top: 1px solid #CCCCCC; margin: 4px 1px 0px}
.MathJax_MenuDisabled {color: GrayText}
.MathJax_MenuActive {background-color: Highlight; color: HighlightText}
.MathJax_MenuDisabled:focus, .MathJax_MenuLabel:focus {background-color: #E8E8E8}
.MathJax_ContextMenu:focus {outline: none}
.MathJax_ContextMenu .MathJax_MenuItem:focus {outline: none}
#MathJax_AboutClose {top: .2em; right: .2em}
.MathJax_Menu .MathJax_MenuClose {top: -10px; left: -10px}
.MathJax_MenuClose {position: absolute; cursor: pointer; display: inline-block; border: 2px solid #AAA; border-radius: 18px; -webkit-border-radius: 18px; -moz-border-radius: 18px; -khtml-border-radius: 18px; font-family: 'Courier New',Courier; font-size: 24px; color: #F0F0F0}
.MathJax_MenuClose span {display: block; background-color: #AAA; border: 1.5px solid; border-radius: 18px; -webkit-border-radius: 18px; -moz-border-radius: 18px; -khtml-border-radius: 18px; line-height: 0; padding: 8px 0 6px}
.MathJax_MenuClose:hover {color: white!important; border: 2px solid #CCC!important}
.MathJax_MenuClose:hover span {background-color: #CCC!important}
.MathJax_MenuClose:hover:focus {outline: none}
</style><style type="text/css">.MathJax_Preview .MJXf-math {color: inherit!important}
</style><style type="text/css">.MJX_Assistive_MathML {position: absolute!important; top: 0; left: 0; clip: rect(1px, 1px, 1px, 1px); padding: 1px 0 0 0!important; border: 0!important; height: 1px!important; width: 1px!important; overflow: hidden!important; display: block!important; -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none}
.MJX_Assistive_MathML.MJX_Assistive_MathML_Block {width: 100%!important}
</style><style type="text/css">#MathJax_Zoom {position: absolute; background-color: #F0F0F0; overflow: auto; display: block; z-index: 301; padding: .5em; border: 1px solid black; margin: 0; font-weight: normal; font-style: normal; text-align: left; text-indent: 0; text-transform: none; line-height: normal; letter-spacing: normal; word-spacing: normal; word-wrap: normal; white-space: nowrap; float: none; -webkit-box-sizing: content-box; -moz-box-sizing: content-box; box-sizing: content-box; box-shadow: 5px 5px 15px #AAAAAA; -webkit-box-shadow: 5px 5px 15px #AAAAAA; -moz-box-shadow: 5px 5px 15px #AAAAAA; -khtml-box-shadow: 5px 5px 15px #AAAAAA; filter: progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true')}
#MathJax_ZoomOverlay {position: absolute; left: 0; top: 0; z-index: 300; display: inline-block; width: 100%; height: 100%; border: 0; padding: 0; margin: 0; background-color: white; opacity: 0; filter: alpha(opacity=0)}
#MathJax_ZoomFrame {position: relative; display: inline-block; height: 0; width: 0}
#MathJax_ZoomEventTrap {position: absolute; left: 0; top: 0; z-index: 302; display: inline-block; border: 0; padding: 0; margin: 0; background-color: white; opacity: 0; filter: alpha(opacity=0)}
</style><style type="text/css">.MathJax_Preview {color: #888}
#MathJax_Message {position: fixed; left: 1px; bottom: 2px; background-color: #E6E6E6; border: 1px solid #959595; margin: 0px; padding: 2px 8px; z-index: 102; color: black; font-size: 80%; width: auto; white-space: nowrap}
#MathJax_MSIE_Frame {position: absolute; top: 0; left: 0; width: 0px; z-index: 101; border: 0px; margin: 0px; padding: 0px}
.MathJax_Error {color: #CC0000; font-style: italic}
</style><style type="text/css"></style><style type="text/css"></style><style type="text/css"></style><style type="text/css"></style><style type="text/css"></style><style type="text/css"></style><style type="text/css"></style><style type="text/css"></style><style type="text/css"></style><style type="text/css"></style><style type="text/css"></style><link rel="stylesheet" href="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/share_style0_16.css"><style type="text/css">.MJXp-script {font-size: .8em}
.MJXp-right {-webkit-transform-origin: right; -moz-transform-origin: right; -ms-transform-origin: right; -o-transform-origin: right; transform-origin: right}
.MJXp-bold {font-weight: bold}
.MJXp-italic {font-style: italic}
.MJXp-scr {font-family: MathJax_Script,'Times New Roman',Times,STIXGeneral,serif}
.MJXp-frak {font-family: MathJax_Fraktur,'Times New Roman',Times,STIXGeneral,serif}
.MJXp-sf {font-family: MathJax_SansSerif,'Times New Roman',Times,STIXGeneral,serif}
.MJXp-cal {font-family: MathJax_Caligraphic,'Times New Roman',Times,STIXGeneral,serif}
.MJXp-mono {font-family: MathJax_Typewriter,'Times New Roman',Times,STIXGeneral,serif}
.MJXp-largeop {font-size: 150%}
.MJXp-largeop.MJXp-int {vertical-align: -.2em}
.MJXp-math {display: inline-block; line-height: 1.2; text-indent: 0; font-family: 'Times New Roman',Times,STIXGeneral,serif; white-space: nowrap; border-collapse: collapse}
.MJXp-display {display: block; text-align: center; margin: 1em 0}
.MJXp-math span {display: inline-block}
.MJXp-box {display: block!important; text-align: center}
.MJXp-box:after {content: " "}
.MJXp-rule {display: block!important; margin-top: .1em}
.MJXp-char {display: block!important}
.MJXp-mo {margin: 0 .15em}
.MJXp-mfrac {margin: 0 .125em; vertical-align: .25em}
.MJXp-denom {display: inline-table!important; width: 100%}
.MJXp-denom > * {display: table-row!important}
.MJXp-surd {vertical-align: top}
.MJXp-surd > * {display: block!important}
.MJXp-script-box > * {display: table!important; height: 50%}
.MJXp-script-box > * > * {display: table-cell!important; vertical-align: top}
.MJXp-script-box > *:last-child > * {vertical-align: bottom}
.MJXp-script-box > * > * > * {display: block!important}
.MJXp-mphantom {visibility: hidden}
.MJXp-munderover {display: inline-table!important}
.MJXp-over {display: inline-block!important; text-align: center}
.MJXp-over > * {display: block!important}
.MJXp-munderover > * {display: table-row!important}
.MJXp-mtable {vertical-align: .25em; margin: 0 .125em}
.MJXp-mtable > * {display: inline-table!important; vertical-align: middle}
.MJXp-mtr {display: table-row!important}
.MJXp-mtd {display: table-cell!important; text-align: center; padding: .5em 0 0 .5em}
.MJXp-mtr > .MJXp-mtd:first-child {padding-left: 0}
.MJXp-mtr:first-child > .MJXp-mtd {padding-top: 0}
.MJXp-mlabeledtr {display: table-row!important}
.MJXp-mlabeledtr > .MJXp-mtd:first-child {padding-left: 0}
.MJXp-mlabeledtr:first-child > .MJXp-mtd {padding-top: 0}
.MJXp-merror {background-color: #FFFF88; color: #CC0000; border: 1px solid #CC0000; padding: 1px 3px; font-style: normal; font-size: 90%}
.MJXp-scale0 {-webkit-transform: scaleX(.0); -moz-transform: scaleX(.0); -ms-transform: scaleX(.0); -o-transform: scaleX(.0); transform: scaleX(.0)}
.MJXp-scale1 {-webkit-transform: scaleX(.1); -moz-transform: scaleX(.1); -ms-transform: scaleX(.1); -o-transform: scaleX(.1); transform: scaleX(.1)}
.MJXp-scale2 {-webkit-transform: scaleX(.2); -moz-transform: scaleX(.2); -ms-transform: scaleX(.2); -o-transform: scaleX(.2); transform: scaleX(.2)}
.MJXp-scale3 {-webkit-transform: scaleX(.3); -moz-transform: scaleX(.3); -ms-transform: scaleX(.3); -o-transform: scaleX(.3); transform: scaleX(.3)}
.MJXp-scale4 {-webkit-transform: scaleX(.4); -moz-transform: scaleX(.4); -ms-transform: scaleX(.4); -o-transform: scaleX(.4); transform: scaleX(.4)}
.MJXp-scale5 {-webkit-transform: scaleX(.5); -moz-transform: scaleX(.5); -ms-transform: scaleX(.5); -o-transform: scaleX(.5); transform: scaleX(.5)}
.MJXp-scale6 {-webkit-transform: scaleX(.6); -moz-transform: scaleX(.6); -ms-transform: scaleX(.6); -o-transform: scaleX(.6); transform: scaleX(.6)}
.MJXp-scale7 {-webkit-transform: scaleX(.7); -moz-transform: scaleX(.7); -ms-transform: scaleX(.7); -o-transform: scaleX(.7); transform: scaleX(.7)}
.MJXp-scale8 {-webkit-transform: scaleX(.8); -moz-transform: scaleX(.8); -ms-transform: scaleX(.8); -o-transform: scaleX(.8); transform: scaleX(.8)}
.MJXp-scale9 {-webkit-transform: scaleX(.9); -moz-transform: scaleX(.9); -ms-transform: scaleX(.9); -o-transform: scaleX(.9); transform: scaleX(.9)}
.MathJax_PHTML .noError {vertical-align: ; font-size: 90%; text-align: left; color: black; padding: 1px 3px; border: 1px solid}
</style></head>
<!-- nodata 第三栏接口无数据时样式不变 -->
<body class="nodata "><div id="BAIDU_DUP_fp_wrapper" style="position: absolute; left: -1px; bottom: -1px; z-index: 0; width: 0px; height: 0px; overflow: hidden; visibility: hidden; display: none;"><iframe id="BAIDU_DUP_fp_iframe" src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/o.htm" style="width: 0px; height: 0px; visibility: hidden; display: none;"></iframe></div><div id="MathJax_Message" style="display: none;"></div><svg aria-hidden="true" style="position: absolute; width: 0px; height: 0px; overflow: hidden;"><symbol id="csdnc-zhifubao" viewBox="0 0 1756 1024"><path d="M1002.928571 659.892857c-85.285714 102.392857-173.5 165-307.214286 165s-221.892857-82.5-210.5-182c5.714286-65.392857 51.214286-173.5 247.5-156.392857 102.392857 8.5 150.785714 28.392857 236.107143 56.892857 22.785714-39.785714 39.785714-85.285714 54-130.785714L647.321429 412.607143l0-37 184.892857 0L832.214286 310 607.5 310 607.5 267.285714l224.714286 0L832.214286 170.607143c0 0 2.785714-14.214286 19.892857-14.214286l93.892857 0 0 110.892857 238.892857 0 0 39.785714-241.785714 0L943.107143 372.5l196.285714 0c-17.107143 74-45.5 142.214286-79.607143 199.107143 48.392857 17.107143 244.607143 76.785714 301.5 93.892857L1361.285714 167.785714c0-79.607143-65.392857-142.214286-142.214286-142.214286L533.607143 25.571429c-79.714286 0-142.285714 65.392857-142.285714 142.214286l0 688.392857c0 79.607143 65.392857 142.214286 142.214286 142.214286l688.392857 0c79.607143 0 142.214286-65.392857 142.214286-142.214286l0-34.214286C1315.714286 799.285714 1099.607143 705.392857 1002.928571 659.892857zM525 634.285714c-8.5 37 14.214286 125.214286 156.392857 125.214286 85.285714 0 170.714286-54 238.892857-142.214286-96.714286-48.392857-176.392857-71.107143-267.392857-71.107143C573.321429 549 533.5 597.285714 525 634.285714z"></path></symbol><symbol id="csdnc-alevel-3" viewBox="0 0 3072 1024"><path d="M372.99884256 80.14660493h2375.19367285a107.96334877 107.96334877 0 0 1 107.96334876 107.96334877v647.7800926a107.96334877 107.96334877 0 0 1-107.96334876 107.96334877H372.99884256a107.96334877 107.96334877 0 0 1-107.96334877-107.96334877V188.1099537a107.96334877 107.96334877 0 0 1 107.96334877-107.96334877z" fill="#83B53A"></path><path d="M1938.46739967 134.12827933h809.72511574a53.98167438 53.98167438 0 0 1 53.98167437 53.98167437v647.7800926a53.98167438 53.98167438 0 0 1-53.98167437 53.98167437H1938.46739967V134.12827933z" fill="#2D5315"></path><path d="M2547.65059507 392.16068286v77.73361112c0 10.41846315-1.78139526 19.43340277-5.39816744 26.9908372 13.65736361 14.41310706 20.51303627 31.30937114 20.51303627 50.74277391v84.21141205c0 20.51303627-7.17956269 38.05708044-21.59266976 52.63213251s-31.84918789 21.86257812-52.36222415 21.86257812h-236.43973378c-20.51303627 0-38.05708044-7.28752604-52.63213254-21.86257812s-21.86257812-32.11909625-21.86257812-52.63213251v-23.21211998h70.71599345v23.21211998c0 2.5371387 1.24157852 3.7787172 3.77871721 3.7787172h236.43973378c2.15926698 0 3.23890047-1.24157852 3.23890047-3.7787172V547.62790509c0-2.5371387-1.07963349-3.7787172-3.23890047-3.7787172h-243.99716821V473.13319444h228.34248263c2.5371387 0 3.7787172-1.07963349 3.77871723-3.23890046V392.16068286c0-2.5371387-1.24157852-3.7787172-3.77871723-3.7787172h-220.7850482c-2.5371387 0-3.7787172 1.24157852-3.77871721 3.7787172v28.07047069h-70.71599345v-28.07047069c0-20.51303627 7.28752604-38.05708044 21.86257812-52.63213251s32.11909625-21.86257812 52.63213254-21.86257812h220.7850482c20.51303627 0 38.05708044 7.28752604 52.63213254 21.86257812s21.86257812 32.11909625 21.86257812 52.63213251zM563.44618978 790.49145814V378.98915433h70.06821335v411.50230381H563.44618978zM567.60277872 274.48063271l51.06666396-34.44030824c29.0961225 30.28371932 70.66201177 73.03720544 91.44495641 99.16433583l-54.62945449 38.59689718C637.07719365 351.67442708 596.6989012 306.5457473 567.60277872 274.48063271z m287.39843441 207.23564797H764.74385356v99.16433583h90.25735957V481.716
<link rel="stylesheet" href="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/content_toolbar.css">
<script id="toolbar-tpl-scriptId" src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/content_toolbar.js" type="text/javascript" domain="https://blog.csdn.net/"></script><script src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/notify.js"></script><script src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/main.js"></script><script class="toolbar-s" type="text/javascript" src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/iconfont.js"></script>
<div id="kp_box_476" data-pid="476" data-track-click="{&quot;mod&quot;:&quot;kp_popu_476-844&quot;,&quot;con&quot;:&quot;,,&quot;}"><script src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/indexSuperise.js"></script>
<script>
window.csdn.indexSuperise({
smallMoveImg: '//img-ads.csdn.net/2019/201903041152101856.jpg',
bigMoveImg: '//img-ads.csdn.net/2019/201903041152319311.jpg',
link:'//h5.youzan.com/v2/showcase/goods?alias=1y922sfobvtfj',
boxStyle:140,
trackSuperId:476,
smallMove:'notMove',
trackSId:794
});
</script></div><link href="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/indexSuperise.css" rel="stylesheet"><link rel="stylesheet" href="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/blog_code-c3a0c33d5c.css">
<link rel="stylesheet" href="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/paging.css">
<script type="text/javascript">
// 容错处理
var NEWS_FEED = function(){}
</script>
<script type="text/javascript" src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/mvf_news_feed.js"></script>
<script type="text/javascript" src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/copyright.js"></script>
<div style="display:none;">
<img src="" onerror='setTimeout(function(){if(!/(csdn.net|iteye.com|baiducontent.com|googleusercontent.com|360webcache.com|sogoucdn.com|bingj.com|baidu.com)$/.test(window.location.hostname)){window.location.href="\x68\x74\x74\x70\x73\x3a\x2f\x2f\x77\x77\x77\x2e\x63\x73\x64\x6e\x2e\x6e\x65\x74"}},3000);'>
</div>
<link rel="stylesheet" href="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/chart-3456820cac.css">
<script src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/ds.js"></script>
<div class="container clearfix" id="mainBox">
<div class="recommend-right">
<ul class="recommend-fixed-box">
</ul>
</div>
<main>
<div class="blog-content-box">
<div class="article-header-box">
<div class="article-header">
<div class="article-title-box">
<span class="article-type type-1 float-left"></span> <h1 class="title-article">LibRTMP源代码分析9:接收消息</h1>
</div>
<div class="article-info-box">
<div class="article-bar-top">
<span class="time">2015年09月21日 15:28:32</span>
<a class="follow-nickName" href="https://me.csdn.net/wongainia158158" target="_blank">wongainia158158</a>
<span class="read-count">阅读数:408</span>
</div>
<div class="operating">
</div>
</div>
</div>
</div>
<article class="baidu_pl">
<div id="article_content" class="article_content clearfix csdn-tracking-statistics" data-pid="blog" data-mod="popu_307" data-dsm="post">
<link rel="stylesheet" href="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/ck_htmledit_views-f57960eb32.css">
<div class="htmledit_views" id="content_views">
<p style="line-height:26px;font-size:16px;color:rgb(51,51,51);font-family:Arial;">
<span style="font-size:12px;line-height:22.75px;">&nbsp;在这里在研究接收消息(Message)的源代码,接收消息最典型的应用就是接收视音频数据了,因为视频和音频分别都属于RTMP协议规范中的一种消息。在这里主要分析接收视音频数据。LibRTMP<span style="line-height:26px;">中完成视音频数据的接收的函数是:RTMP_Read()。</span></span></p>
<p style="line-height:28px;color:rgb(59,59,59);font-family:'Hiragino Sans GB W3', 'Hiragino Sans GB', Arial, Helvetica, simsun, u5b8bu4f53;font-size:16px;">
<span style="font-size:12px;line-height:22.75px;"><span style="color:#008000;">// Flv文件头<br></span><span style="line-height:22px;">static const char flvHeader[] = { 'F', 'L', 'V', 0x01,<br style="line-height:22.75px;"></span><span style="line-height:22px;">&nbsp; &nbsp;0x00,</span><span style="line-height:22px;">
<span style="line-height:22.75px;"></span></span><span style="color:#008000;line-height:22px;">/* 0x04 == audio, 0x01 == video */<br style="line-height:22.75px;"></span><span style="line-height:22px;"><span style="color:#008000;line-height:22.75px;">&nbsp; &nbsp;</span>0x00, 0x00, 0x00, 0x09,</span><span style="line-height:22px;">
<span style="line-height:22.75px;"></span></span><span style="color:#008000;line-height:22px;">// Offset = 0x00000009,4字节<br style="line-height:22.75px;"></span><span style="line-height:22px;"><span style="color:#008000;line-height:22.75px;">&nbsp; &nbsp;</span>0x00, 0x00, 0x00, 0x00</span><span style="line-height:22px;">
<span style="line-height:22.75px;"></span></span><span style="color:#008000;line-height:22px;">// Previous Tag Size = 0x00000000,4字节<br style="line-height:22.75px;"></span><span style="line-height:22px;">};<br style="line-height:22.75px;"></span><span style="line-height:22px;"><br style="line-height:22.75px;">
#define HEADERBUF</span><span style="line-height:22px;"> </span><span style="line-height:22px;">(128*1024)<br style="line-height:22.75px;"></span><span style="line-height:22px;"><br style="line-height:22.75px;"><span style="font-family:Arial;color:#0000ff;line-height:22.75px;">/**<br></span></span><span style="line-height:22px;color:rgb(0,0,255);font-family:Arial;">&nbsp;* @brief 读取音视频数据<br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><span style="color:#0000ff;line-height:22.75px;">&nbsp;*/<br></span></span><span style="line-height:22px;color:rgb(51,51,51);font-family:Arial;">int RTMP_Read(RTMP *r, char *buf, int size)<br style="line-height:22.75px;"></span><span style="line-height:22px;color:rgb(51,51,51);font-family:Arial;">{</span></span></p>
<p style="line-height:28px;color:rgb(59,59,59);font-family:'Hiragino Sans GB W3', 'Hiragino Sans GB', Arial, Helvetica, simsun, u5b8bu4f53;font-size:16px;">
<span style="font-size:12px;line-height:22.75px;"><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;color:rgb(51,51,51);"></span><span style="color:#333333;line-height:22.75px;">int
nRead = 0, total = 0;<br></span></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span><span style="color:#008000;line-height:22.75px;">/* can't continue */</span><br style="line-height:22.75px;"></span><span style="line-height:22px;color:rgb(51,51,51);font-family:Arial;">fail:<br style="line-height:22.75px;"></span><span style="line-height:22px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>switch (r-&gt;m_read.status)<br style="line-height:22.75px;"></span><span style="line-height:22px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>{<br style="line-height:22.75px;"></span><span style="line-height:22px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>case RTMP_READ_EOF:<br style="line-height:22.75px;"></span><span style="line-height:22px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>case RTMP_READ_COMPLETE:<br style="line-height:22.75px;"></span><span style="line-height:22px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>return 0;<br style="line-height:22.75px;"></span><span style="color:#333333;line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span>case RTMP_READ_ERROR:&nbsp;</span><span style="line-height:22px;color:rgb(51,51,51);font-family:Arial;">
</span><span style="color:#333333;line-height:22px;font-family:Arial;">&nbsp;</span><span style="line-height:22px;color:rgb(51,51,51);font-family:Arial;">
</span><span style="color:#008000;line-height:22px;font-family:Arial;">/* corrupted stream, resume failed */<br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span>r-&gt;m_sock.setsockerr(EINVAL);<br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span>return -1;<br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span>default:<br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span>break;<br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span>}<br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span><br style="line-height:22.75px;"><span style="line-height:22.75px;"></span><span style="color:#008000;line-height:22.75px;">/* first time thru */</span><br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span>if (!(r-&gt;m_read.flags &amp; RTMP_READ_HEADER))<br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span>{<br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span>if (!(r-&gt;m_read.flags &amp; RTMP_READ_RESUME))<br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span>{<br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span><span style="color:#008000;line-height:22.75px;">// 分配内存,分别指向缓冲区的首部和尾部</span><br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span>char *mybuf = malloc(HEADERBUF), *end = mybuf + HEADERBUF;<br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span>int cnt = 0;<br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span>r-&gt;m_read.buf = mybuf;<br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span>r-&gt;m_read.buflen = HEADERBUF;<br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span><br style="line-height:22.75px;"><span style="line-height:22.75px;"></span><span style="color:#008000;line-height:22.75px;">// 把Flv的首部复制到mybuf指向的内存 &nbsp;<br></span></span><span style="line-height:22px;font-family:Arial;"><span style="color:#008000;line-height:22.75px;"><span></span>// RTMP传递的多媒体数据是“砍头”的FLV文件&nbsp;<br></span></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span>memcpy(mybuf, flvHeader, sizeof(flvHeader));<br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span>r-&gt;m_read.buf &nbsp; &nbsp;+= sizeof(flvHeader);</span><span style="line-height:22px;color:rgb(51,51,51);font-family:Arial;">
</span><span style="color:#008000;line-height:22px;font-family:Arial;">// m_read.buf指针后移flvheader个单位<br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span>r-&gt;m_read.buflen -= sizeof(flvHeader);</span><span style="line-height:22px;color:rgb(51,51,51);font-family:Arial;">
</span><span style="color:#008000;line-height:22px;font-family:Arial;">// buf剩下的空间大小减少nRead&nbsp;<br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;color:rgb(0,128,0);"></span><br style="line-height:22.75px;"><span style="line-height:22.75px;color:rgb(0,128,0);"></span><span style="color:#008000;line-height:22.75px;">// timestamp=0,不是多媒体数据 &nbsp;<br></span></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span>while (r-&gt;m_read.timestamp == 0)<br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span>{<br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span><span style="color:#008000;line-height:22.75px;">// 读取一个 Packet 到r-&gt;m_read.buf &nbsp;<br></span></span><span style="line-height:22px;font-family:Arial;"><span style="color:#008000;line-height:22.75px;"><span></span>// nRead为读取结果标记. 如果nRead &lt; 0,则表示读取出错</span><br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span>nRead =&nbsp;</span><span style="color:#ff0000;line-height:22px;font-family:Arial;">Read_1_Packet</span><span style="color:#333333;line-height:22px;font-family:Arial;">(r,
r-&gt;m_read.buf, r-&gt;m_read.buflen);<br style="line-height:22.75px;"></span><span style="line-height:22px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>if (nRead &lt; 0)<br style="line-height:22.75px;"></span><span style="line-height:22px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>{<br style="line-height:22.75px;"></span><span style="line-height:22px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>free(mybuf);<br style="line-height:22.75px;"></span><span style="line-height:22px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>r-&gt;m_read.buf = NULL;<br style="line-height:22.75px;"></span><span style="line-height:22px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>r-&gt;m_read.buflen = 0;<br style="line-height:22.75px;"></span><span style="line-height:22px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>r-&gt;m_read.status = nRead;<br style="line-height:22.75px;"></span><span style="line-height:22px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>goto fail;<br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;color:rgb(51,51,51);"></span><span style="color:#333333;line-height:22.75px;">}<br></span></span><span style="line-height:22px;font-family:Arial;"><span style="color:#333333;line-height:22.75px;"><br></span><span style="line-height:22.75px;"></span><span style="color:#008000;line-height:22.75px;">/* buffer overflow, fix buffer and give up */</span><br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span>if (r-&gt;m_read.buf &lt; mybuf || r-&gt;m_read.buf &gt; end)<br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span>{<br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span>mybuf = realloc(mybuf, cnt + nRead);<br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span>memcpy(mybuf+cnt, r-&gt;m_read.buf, nRead);<br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span>r-&gt;m_read.buf = mybuf+cnt+nRead;<br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span>break;<br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span>}<br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><br style="line-height:22.75px;"><span style="line-height:22.75px;"></span>cnt += nRead;</span><span style="line-height:22px;color:rgb(51,51,51);font-family:Arial;">
</span><span style="color:#008000;line-height:22px;font-family:Arial;">// 记录读取的字节数<br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span>r-&gt;m_read.buf &nbsp; &nbsp;+= nRead;</span><span style="line-height:22px;color:rgb(51,51,51);font-family:Arial;">
</span><span style="color:#008000;line-height:22px;font-family:Arial;">// m_read.buf指针后移nRead个单位<br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span>r-&gt;m_read.buflen -= nRead; &nbsp;</span><span style="line-height:22px;color:rgb(51,51,51);font-family:Arial;">
</span><span style="color:#008000;line-height:22px;font-family:Arial;">// buf剩下的空间大小减少nRead<br style="line-height:22.75px;"><br style="line-height:22.75px;"></span><span style="font-family:Arial;line-height:22px;"><span style="color:#008000;line-height:22.75px;"><span></span>// 当dataType = 00000101时,即有视频和音频 ;&nbsp;</span></span><span style="line-height:22px;font-family:Arial;"><span style="color:#008000;line-height:22.75px;">说明有多媒体数据了<br></span></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span>if (r-&gt;m_read.dataType == 5)<br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span>break;<br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span>}<br style="line-height:22.75px;"></span><span style="font-family:Arial;line-height:22px;"><br style="line-height:22.75px;"><span style="line-height:22.75px;"></span><span style="color:#008000;line-height:22.75px;">//&nbsp;</span></span><span style="color:#008000;line-height:22px;"><span style="font-family:Arial;">读入数据类型。</span><span style="font-family:Arial;">注意:mybuf指针位置一直没动
&nbsp;<br style="line-height:22.75px;"></span></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;color:rgb(0,128,0);"></span><span style="color:#008000;line-height:22.75px;">// mybuf[4]中第 6 位表示是否存在音频Tag。第 8 位表示是否存在视频Tag。<br></span></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span>mybuf[4] = r-&gt;m_read.dataType;<br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span>r-&gt;m_read.buflen = r-&gt;m_read.buf - mybuf;</span><span style="line-height:22px;color:rgb(51,51,51);font-family:Arial;">
</span><span style="color:#008000;line-height:22px;font-family:Arial;">// 两个指针之间的差&nbsp;<br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span>r-&gt;m_read.buf &nbsp; &nbsp; = mybuf;<br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span>r-&gt;m_read.bufpos = mybuf;</span><span style="line-height:22px;color:rgb(51,51,51);font-family:Arial;">
</span><span style="color:#008000;line-height:22px;font-family:Arial;">// 这句很重要!后面memcopy<br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span>}<br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"></span><span style="line-height:22px;font-family:Arial;"><br style="line-height:22.75px;"><span style="line-height:22.75px;"></span><span style="color:#008000;line-height:22.75px;">// flags标明已经读完了文件头</span><br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span>r-&gt;m_read.flags |= RTMP_READ_HEADER;<br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span>}<br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><br style="line-height:22.75px;"><span style="line-height:22.75px;"></span>if ((r-&gt;m_read.flags &amp; RTMP_READ_SEEKING) &amp;&amp; r-&gt;m_read.buf)<br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span>{<br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span><span style="color:#008000;line-height:22.75px;">/* drop whatever's here */</span><br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span>free(r-&gt;m_read.buf);<br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span>r-&gt;m_read.buf = NULL;<br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span>r-&gt;m_read.bufpos = NULL;<br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span>r-&gt;m_read.buflen = 0;<br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span>}<br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><br style="line-height:22.75px;"><span style="line-height:22.75px;"></span><span style="color:#008000;line-height:22.75px;">/* If there's leftover data buffered, use it up */</span><br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span>if (r-&gt;m_read.buf)<br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span>{<br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span>nRead = r-&gt;m_read.buflen;<br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span>if (nRead &gt; size)<br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span>nRead = size;<br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><br style="line-height:22.75px;"><span style="line-height:22.75px;"></span><span style="color:#008000;line-height:22.75px;">// m_read.bufpos指向mybuf&nbsp;</span><br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span>memcpy(buf, r-&gt;m_read.bufpos, nRead);<br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span>r-&gt;m_read.buflen -= nRead;<br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span>if (!r-&gt;m_read.buflen)<br style="line-height:22.75px;"></span><span style="line-height:22px;font-family:Arial;"><span style="line-height:22.75px;"></span
buf, size)) &gt;= 0)<br style="line-height:22.75px;"></span><span style="line-height:22px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>{<br style="line-height:22.75px;"></span><span style="line-height:22px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>if (!nRead) continue;<br style="line-height:22.75px;"></span><span style="line-height:22px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>buf &nbsp; += nRead;<br style="line-height:22.75px;"></span><span style="line-height:22px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>total += nRead;<br style="line-height:22.75px;"></span><span style="line-height:22px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>size &nbsp;-= nRead;<br style="line-height:22.75px;"></span><span style="line-height:22px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>break;<br style="line-height:22.75px;"></span><span style="line-height:22px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>}<br style="line-height:22.75px;"></span><span style="line-height:22px;color:rgb(51,51,51);font-family:Arial;"><br style="line-height:22.75px;"><span style="line-height:22.75px;"></span>if (nRead &lt; 0)<br style="line-height:22.75px;"></span><span style="line-height:22px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>r-&gt;m_read.status = nRead;<br style="line-height:22.75px;"></span><span style="line-height:22px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>if (size &lt; 0)<br style="line-height:22.75px;"></span><span style="line-height:22px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>total += size;<br style="line-height:22.75px;"></span><span style="line-height:22px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span><br style="line-height:22.75px;"><span style="line-height:22.75px;"></span>return total;<br style="line-height:22.75px;"></span><span style="line-height:22px;color:rgb(51,51,51);font-family:Arial;">}</span></span></p>
<p style="line-height:28px;color:rgb(59,59,59);font-family:'Hiragino Sans GB W3', 'Hiragino Sans GB', Arial, Helvetica, simsun, u5b8bu4f53;font-size:16px;">
<span style="font-size:12px;line-height:22.75px;"><span style="font-family:Arial;color:#ff0000;"><span style="line-height:22px;">注意:</span></span><span style="color:rgb(51,51,51);font-family:Arial;"><span style="line-height:26px;">RTMP传送的视音频数据的格式和FLV(FLash
Video)格式是一样的,把接收下来的数据直接存入文件就可以了。但是这些视音频数据没有文件头,是<a href="https://www.baidu.com/s?wd=%E7%BA%AF%E8%A7%86&amp;tn=24004469_oem_dg&amp;rsv_dl=gh_pl_sl_csd" target="_blank">纯视</a>音频数据,因此需要在其前面加上FLV格式的文件头,这样得到的数据存成文件后才能被一般的视频播放器所播放。FLV格式的文件头是13个字节,如代码中所示。<br style="line-height:22.75px;"></span></span><span style="line-height:22px;color:rgb(51,51,51);font-family:Arial;">RTMP_Read()中实际读取数据的函数是Read_1_Packet(),它的功能是从网络上读取一个RTMPPacket的数据,接下来分析该函数代码。</span></span></p>
<p style="line-height:28px;color:rgb(59,59,59);font-family:'Hiragino Sans GB W3', 'Hiragino Sans GB', Arial, Helvetica, simsun, u5b8bu4f53;font-size:16px;">
<span style="font-size:12px;line-height:22.75px;"><span style="font-family:Arial;color:#0000ff;"><span style="line-height:24px;">/**<br style="line-height:22.75px;"></span></span><span style="line-height:24px;color:rgb(0,0,255);font-family:Arial;">&nbsp;* @brief Read from the stream until we get a media packet.<br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(0,0,255);font-family:Arial;">&nbsp;* &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;从网络上读取一个RTMPPacket的数据.<br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(0,0,255);font-family:Arial;">&nbsp;* @return -3 if Play.Close/Stop, -2 if fatal error, -1 if no more media<br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(0,0,255);font-family:Arial;">&nbsp;* &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;packets, 0 if ignorable error, &gt;0 if there is a media packet.<br style="line-height:22.75px;"></span><span style="line-height:24px;font-family:Arial;"><span style="color:#0000ff;line-height:22.75px;">&nbsp;*/<br></span></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;">static int Read_1_Packet(RTMP *r, char *buf, unsigned int buflen)<br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;">{<br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>uint32_t prevTagSize = 0;<br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>int rtnGetNextMediaPacket = 0, ret = RTMP_READ_EOF;<br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>RTMPPacket packet = { 0 };<br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>int recopy = FALSE;<br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>unsigned int size;<br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>char *ptr, *pend;<br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>uint32_t nTimeStamp = 0;<br style="line-height:22.75px;"></span><span style="font-family:Arial;"><span style="line-height:24px;color:rgb(51,51,51);"></span><span style="color:#333333;"><span style="line-height:24px;">unsigned int len;<br style="line-height:22.75px;"></span></span></span><span style="font-family:Arial;"><span style="color:#333333;"><span style="line-height:24px;"><br style="line-height:22.75px;"></span></span><span></span><span style="color:#008000;">// 获取下一个packet&nbsp;</span><br></span><span style="font-family:Arial;"><span></span>rtnGetNextMediaPacket =&nbsp;<span style="color:#ff0000;">RTMP_GetNextMediaPacket</span>(r, &amp;packet);<br></span><span style="font-family:Arial;"><span></span>while (rtnGetNextMediaPacket)<br></span><span style="font-family:Arial;"><span></span>{<br></span><span style="font-family:Arial;"><span></span>char *packetBody = packet.m_body;<br></span><span style="font-family:Arial;"><span></span>unsigned int nPacketLen = packet.m_nBodySize;<br></span><span style="font-family:Arial;"><br><span style="line-height:22px;"></span><span style="color:#008000;">/* Return RTMP_READ_COMPLETE if this was completed nicely with<br></span></span><span style="font-family:Arial;"><span style="color:#008000;"><span></span>&nbsp;* invoke message Play.Stop or Play.Complete */</span><br></span><span style="font-family:Arial;"><span></span>if (rtnGetNextMediaPacket == 2)<br></span><span style="font-family:Arial;"><span></span>{<br></span><span style="font-family:Arial;"><span></s
</span><br></span><span style="font-family:Arial;"><span style="line-height:22px;"></span><span style="color:#008000;">// messageID=18,数据消息(AMF0)</span><br></span><span style="font-family:Arial;"><span></span>if (r-&gt;m_read.nMetaHeaderSize &gt; 0 &amp;&amp; packet.m_packetType == RTMP_PACKET_TYPE_INFO)<br></span><span style="font-family:Arial;"><span></span>{<br></span><span style="font-family:Arial;"><span style="line-height:22px;"></span><span style="color:#008000;">// 获取metadata<br></span></span><span style="font-family:Arial;"><span></span>AMFObject metaObj;<br></span><span style="font-family:Arial;"><span></span>int nRes = AMF_Decode(&amp;metaObj, packetBody, nPacketLen, FALSE);<br></span><span style="font-family:Arial;"><span></span>if (nRes &gt;= 0)<br></span><span style="font-family:Arial;"><span></span>{<br></span><span style="font-family:Arial;"><span></span>AVal metastring;<br></span><span style="font-family:Arial;"><span></span>AMFProp_GetString(AMF_GetProp(&amp;metaObj, NULL, 0), &amp;metastring);<br><br></span><span style="font-family:Arial;"><span></span>if (AVMATCH(&amp;metastring, &amp;av_onMetaData))<br></span><span style="font-family:Arial;"><span></span>{<br></span><span style="font-family:Arial;"><span style="line-height:22px;"></span><span style="color:#008000;">/* compare */</span><br></span><span style="font-family:Arial;"><span></span>if ((r-&gt;m_read.nMetaHeaderSize != nPacketLen)<br></span><span style="font-family:Arial;"><span></span>&nbsp; &nbsp;|| (memcmp(r-&gt;m_read.metaHeader, packetBody, r-&gt;m_read.nMetaHeaderSize) != 0))<br></span><span style="font-family:Arial;"><span></span>{<br></span><span style="font-family:Arial;"><span></span>ret = RTMP_READ_ERROR;<br></span><span style="font-family:Arial;"><span></span>}<br></span><span style="font-family:Arial;"><span></span>}<br></span><span style="font-family:Arial;"><span></span><br><span></span>AMF_Reset(&amp;metaObj);<br></span><span style="font-family:Arial;"><span></span>if (ret == RTMP_READ_ERROR)<br></span><span style="font-family:Arial;"><span></span>break;<br></span><span style="font-family:Arial;"><span></span>}<br></span><span style="font-family:Arial;"><span></span>}<br><br></span></span></p>
<p style="line-height:28px;color:rgb(59,59,59);font-family:'Hiragino Sans GB W3', 'Hiragino Sans GB', Arial, Helvetica, simsun, u5b8bu4f53;font-size:16px;">
<span style="font-size:12px;line-height:22.75px;"><span style="font-family:Arial;"><span style="line-height:24px;color:rgb(51,51,51);"></span><span style="color:#008000;"><span style="line-height:24px;">/* check
first keyframe to make sure we got the right position</span><br></span></span><span style="font-family:Arial;"><span style="color:rgb(0,128,0);"></span><span style="color:#008000;">&nbsp;* in the stream! (the first non ignored frame) */<br></span></span><span style="font-family:Arial;"><span></span>if (r-&gt;m_read.nInitialFrameSize &gt; 0)<br></span><span style="font-family:Arial;"><span></span>{<br></span><span style="font-family:Arial;"><span style="line-height:22px;"></span><span style="color:#008000;">/* video or audio data */</span><br></span><span style="font-family:Arial;"><span></span>if (packet.m_packetType == r-&gt;m_read.initialFrameType&nbsp;<br><span></span>&nbsp; &nbsp;&amp;&amp; r-&gt;m_read.nInitialFrameSize == nPacketLen)<br></span><span style="font-family:Arial;"><span></span>{<br></span><span style="font-family:Arial;"><span style="line-height:22px;"></span><span style="color:#008000;">/* we don't compare the sizes since the packet can<br></span></span><span style="color:#008000;"><span style="font-family:Arial;"><span></span>&nbsp;* contain several FLV packets, just make sure the<br></span><span style="font-family:Arial;"><span></span>&nbsp;* first frame is our keyframe (which we are going<br></span><span style="font-family:Arial;"><span></span>&nbsp;* to rewrite)</span></span><span style="line-height:24px;font-family:Arial;"><span style="color:#008000;line-height:22.75px;">&nbsp;*/<br></span></span><span style="line-height:24px;font-family:Arial;"><span style="line-height:22.75px;"></span>if (memcmp(r-&gt;m_read.initialFrame, packetBody, r-&gt;m_read.nInitialFrameSize) == 0)<br style="line-height:22.75px;"></span><span style="line-height:24px;font-family:Arial;"><span style="line-height:22.75px;"></span>{<br style="line-height:22.75px;"></span><span style="line-height:24px;font-family:Arial;"><span style="line-height:22.75px;"></span>RTMP_Log(RTMP_LOGDEBUG, "Checked keyframe successfully!");&nbsp;<br style="line-height:22.75px;"></span><span style="font-family:Arial;"><span style="line-height:24px;"></span><span style="line-height:24px;">r-&gt;m_read.flags |= RTMP_READ_GOTKF;<br style="line-height:22.75px;"><br style="line-height:22.75px;"></span></span><span style="font-family:Arial;"><span></span><span style="color:#008000;">/* ignore it! (what about audio data after it? it is<br></span></span><span style="font-family:Arial;"><span style="color:#008000;"><span></span>* handled by ignoring all 0ms frames, see below) &nbsp;*/</span><br></span><span style="font-family:Arial;"><span></span>ret = RTMP_READ_IGNORE;<br></span><span style="font-family:Arial;"><span></span>break;<br></span><span style="font-family:Arial;"><span></span>}<br></span><span style="font-family:Arial;"><span></span>}<br></span><span style="line-height:22px;font-family:Arial;"><br style="line-height:22.75px;"><span style="line-height:22.75px;"></span><span style="color:#008000;line-height:22.75px;">/* hande FLV streams, even though the server resends the<br></span></span><span style="color:#008000;"><span style="font-family:Arial;"><span style="line-height:22px;"></span>&nbsp;* keyframe as an extra video packet it is also included<br></span><span style="font-family:Arial;"><span></span>&nbsp;* in the first FLV stream chunk and we have to compare<br></span><span style="font-family:Arial;"><span></span>&nbsp;* it and filter it out !! */<br></span></span><span style="font-family:Arial;"><span style="color:#008000;"><span></span>// MessageID=22,聚合消息</span><br></span><span style="font-family:Arial;"><span></span>if (packet.m_packetType == RTMP_PACKET_TYPE_FLASH_VIDEO)<br></span><span style="font-family:Arial;"><span></span>{<br></span><span style="font-family:Arial;line-height:22px;"><span style="line-height:24px;"><span style="line-height:22.75px;"></span><span style="color:#008000;line-height:22.75px;">/* basically we have to find the keyframe with the&nbsp;</span></span></span><span style="font-family:Arial;"><span style="color:#008000;"><span style="line-height:24px;">correct
TS being nResumeTS &nbsp;*/</span><br></span></span><span style="font-family:Arial;"><span></span>unsigned int pos = 0;<br></span><span style="font-family:Arial;"><span></span>uint32_t ts = 0;<br></span><span style="font-family:Arial;"><br><span></span>while (pos + 11 &lt; nPacketLen)<br></span><span style="font-family:Arial;"><span></span>{<br></span><span style="font-family:Arial;"><span style="line-height:22px;"></span><span style="color:#008000;">/* size without header (11) and prevTagSize (4) */</span><br></span><span style="font-family:Arial;"><span></span>uint32_t dataSize = AMF_DecodeInt24(packetBody + pos + 1);<br></span><span style="font-family:Arial;"><span></span>ts = AMF_DecodeInt24(packetBody + pos + 4);<br></span><span style="font-family:Arial;"><span style="line-height:22px;"></span>ts |= (packetBody[pos + 7] &lt;&lt; 24);<br></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;">#ifdef _DEBUG<br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>RTMP_Log(RTMP_LOGDEBUG, "keyframe search: FLV Packet: type %02X,&nbsp;<br style="line-height:22.75px;"><span style="line-height:22.75px;"></span>&nbsp;dataSize: %d, timeStamp: %d ms", packetBody[pos], dataSize, ts);<br style="line-height:22.75px;"></span><span style="font-family:Arial;"><span style="color:#333333;"><span style="line-height:24px;">#endif<br style="line-height:22.75px;"></span></span></span><span style="font-family:Arial;"><span></span><span style="color:#008000;">/* ok, is it a keyframe?:<br></span></span><span style="font-family:Arial;"><span style="color:#008000;"><span></span>&nbsp;* well doesn't work for audio! */</span><br></span><span style="font-family:Arial;"><span></span>if (packetBody[pos&nbsp;</span><span style="color:#008000;font-family:Arial;">/*6928, test 0 */&nbsp;</span><span style="color:#333333;font-family:Arial;">] ==&nbsp;<br></span><span style="color:#333333;font-family:Arial;"><span></span>r-&gt;m_read.initialFrameType&nbsp;</span><span style="color:#008000;font-family:Arial;">/* &amp;&amp; (packetBody[11]&amp;0xf0) == 0x10 */</span><span style="color:#333333;font-family:Arial;">&nbsp;)<br></span><span style="color:rgb(51,51,51);font-family:Arial;"><span></span>{<br></span><span style="color:rgb(51,51,51);font-family:Arial;"><span></span>if (ts == r-&gt;m_read.nResumeTS)<br></span><span style="color:rgb(51,51,51);font-family:Arial;"><span></span>{<br></span><span style="color:rgb(51,51,51);font-family:Arial;"><span></span>RTMP_Log(RTMP_LOGDEBUG, "Found keyframe with&nbsp;<br><span></span>&nbsp;<span> </span>resume-keyframe timestamp!");<br></span><span style="color:rgb(51,51,51);font-family:Arial;"><span></span>if &nbsp;(r-&gt;m_read.nInitialFrameSize != dataSize ||&nbsp;<br><span></span>&nbsp; &nbsp; &nbsp;<span> </span>memcmp(r-&gt;m_read.initialFrame,&nbsp;</span><span style="color:rgb(51,51,51);font-family:Arial;">packetBody + pos + 11,&nbsp;<br><span></span>r-&gt;m_read.nInitialFrameSize) != 0)<br></span><span style="color:rgb(51,51,51);font-family:Arial;"><span></span>{<br></span><span style="color:rgb(51,51,51);font-family:Arial;"><span></span>RTMP_Log(RTMP_LOGERROR, "FLV Stream:&nbsp;<br><span></span>Keyframe doesn't match!");<br></span><span style="color:rgb(51,51,51);font-family:Arial;"><span></span>ret = RTMP_READ_ERROR;<br></span><span style="color:rgb(51,51,51);font-family:Arial;"><span></span>break;<br></span><span style="color:rgb(51,51,51);font-family:Arial;"><span></span>}<br></span><span style="font-family:Arial;"><br><span style="color:rgb(51,51,51);"></span><span style="color:#333333;">r-&gt;m_read.flags |= RTMP_READ_GOTFLVK;<br><br></span></span><span style="line-height:22px;color:rgb(0,128,0);font-family:Arial;"><span style="line-height:22.75px;"></span>/* skip this packet?&nbsp;<br style="line-height:22.75px;"></span><span style="line-height:24px;font-family:Arial;"><span style="color:#008000;line-height:22.75px;"><span></span>&nbsp;* check whether skippable: &nbsp;*/<br></span></span
</span><span style="color:#008000;font-family:Arial;">// end of if (packet.m_packetType == RTMP_PACKET_TYPE_FLASH_VIDEO)<br></span><span style="font-family:Arial;"><span></span>}</span><span style="color:rgb(51,51,51);font-family:Arial;">
</span><span style="color:#008000;font-family:Arial;">// end of if (r-&gt;m_read.nInitialFrameSize &gt; 0)<br></span><span style="font-family:Arial;"><span></span>}</span><span style="color:rgb(51,51,51);font-family:Arial;">
</span><span style="color:#008000;font-family:Arial;">// end of if (packet.m_nTimeStamp == 0)<br></span><span style="font-family:Arial;"><span style="color:#008000;"><br></span><span></span>if (packet.m_nTimeStamp &gt; 0 &amp;&amp; (r-&gt;m_read.flags &amp; (RTMP_READ_GOTKF|RTMP_READ_GOTFLVK)))<br></span><span style="font-family:Arial;"><span></span>{<br></span><span style="font-family:Arial;"><span style="line-height:22px;"></span><span style="color:#008000;">/* another problem is that the server can actually change from<br></span></span><span style="color:#008000;"><span style="font-family:Arial;"><span></span>&nbsp;* 09/08 video/audio packets to an FLV stream or vice versa and<br></span><span style="font-family:Arial;"><span></span>&nbsp;* our keyframe check will prevent us from going along with the<br></span><span style="font-family:Arial;"><span></span>&nbsp;* new stream if we resumed.<br></span><span style="font-family:Arial;"><span></span>&nbsp;*<br></span><span style="font-family:Arial;"><span></span>&nbsp;* in this case set the 'found keyframe' variables to true.<br></span><span style="font-family:Arial;"><span></span>&nbsp;* We assume that if we found one keyframe somewhere and were<br></span><span style="font-family:Arial;"><span></span>&nbsp;* already beyond TS &gt; 0 we have written data to the output<br></span><span style="font-family:Arial;"><span></span>&nbsp;* which means we can accept all forthcoming data including the<br></span></span><span style="font-family:Arial;"><span style="color:#008000;"><span></span>&nbsp;* change between 08/09 &lt;-&gt; FLV packets &nbsp;<br><span></span>&nbsp;*/</span><br></span><span style="font-family:Arial;"><span></span>r-&gt;m_read.flags |= (RTMP_READ_GOTKF|RTMP_READ_GOTFLVK);</span></span></p>
<p style="line-height:28px;color:rgb(59,59,59);font-family:'Hiragino Sans GB W3', 'Hiragino Sans GB', Arial, Helvetica, simsun, u5b8bu4f53;font-size:16px;">
<span style="font-size:12px;line-height:22.75px;"><span style="font-family:Arial;color:#333333;"><span style="line-height:24px;"></span><span style="line-height:24px;">}<br style="line-height:22.75px;"></span></span><span style="font-family:Arial;"><span style="color:#333333;"><span style="line-height:24px;"><br style="line-height:22.75px;"></span></span><span></span><span style="color:#008000;">/* skip till we find our keyframe<br></span></span><span style="color:#008000;"><span style="font-family:Arial;"><span></span></span><span style="line-height:24px;font-family:Arial;">* (seeking might put us somewhere before it) &nbsp; */<br style="line-height:22.75px;"></span></span><span style="line-height:24px;font-family:Arial;"><span style="line-height:22.75px;"></span>if &nbsp;( !(r-&gt;m_read.flags &amp; RTMP_READ_GOTKF) &amp;&amp;&nbsp;<br style="line-height:22.75px;"><span style="line-height:22.75px;"></span>&nbsp; &nbsp;&nbsp;packet.m_packetType != RTMP_PACKET_TYPE_FLASH_VIDEO )<br style="line-height:22.75px;"></span><span style="line-height:24px;font-family:Arial;"><span style="line-height:22.75px;"></span>{<br style="line-height:22.75px;"></span><span style="line-height:24px;font-family:Arial;"><span style="line-height:22.75px;"></span>RTMP_Log(RTMP_LOGWARNING, "Stream does not start with requested frame, ignoring data... ");<br style="line-height:22.75px;"></span><span style="line-height:24px;font-family:Arial;"><span style="line-height:22.75px;"></span>r-&gt;m_read.nIgnoredFrameCounter++;<br style="line-height:22.75px;"><br style="line-height:22.75px;"></span><span style="line-height:24px;font-family:Arial;"><span style="line-height:22.75px;"></span>if (r-&gt;m_read.nIgnoredFrameCounter &gt; MAX_IGNORED_FRAMES)<br style="line-height:22.75px;"></span><span style="line-height:24px;font-family:Arial;"><span style="line-height:22.75px;"></span>ret = RTMP_READ_ERROR;</span><span style="color:rgb(51,51,51);font-family:Arial;">
</span><span style="line-height:24px;font-family:Arial;"><span style="color:#008000;line-height:22.75px;">/* fatal error, couldn't continue stream */</span><br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>else<br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>ret = RTMP_READ_IGNORE;<br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>break;<br style="line-height:22.75px;"></span><span style="font-family:Arial;"><span style="line-height:24px;color:rgb(51,51,51);"></span><span style="color:#333333;"><span style="line-height:24px;">}<br style="line-height:22.75px;"></span></span></span><span style="font-family:Arial;"><span style="color:#333333;"><span style="line-height:24px;"><br style="line-height:22.75px;"></span></span><span></span><span style="color:#008000;">/* ok, do the same for FLV streams */</span><br></span><span style="font-family:Arial;"><span></span>if &nbsp;( !(r-&gt;m_read.flags &amp; RTMP_READ_GOTFLVK) &amp;&amp;&nbsp;<br><span></span>&nbsp; &nbsp;&nbsp;packet.m_packetType == RTMP_PACKET_TYPE_FLASH_VIDEO )<br></span><span style="font-family:Arial;"><span></span>{<br></span><span style="font-family:Arial;"><span></span>RTMP_Log(RTMP_LOGWARNING, "Stream does not start with requested FLV frame, ignoring data... ");<br></span><span style="font-family:Arial;"><span></span>r-&gt;m_read.nIgnoredFlvFrameCounter++;<br><br></span><span style="font-family:Arial;"><span></span>if (r-&gt;m_read.nIgnoredFlvFrameCounter &gt; MAX_IGNORED_FRAMES)<br></span><span style="font-family:Arial;"><span></span>ret = RTMP_READ_ERROR;<br></span><span style="font-family:Arial;"><span></span>else<br></span><span style="font-family:Arial;"><span></span>ret = RTMP_READ_IGNORE;<br></span><span style="font-family:Arial;"><span></span>break;<br></span><span style="font-family:Arial;"><span></span>}<br></span><span style="font-family:Arial;"><br><span style="line-height:22px;"></span><span style="color:#008000;">/* we have to ignore the 0ms frames since these are the first<br></span></span><span style="color:#008000;"><span style="font-family:Arial;"><span></span>&nbsp;* keyframes; we've got these so don't mess around with multiple<br></span><span style="font-family:Arial;"><span></span>&nbsp;* copies sent by the server to us! (if the keyframe is found at a<br></span><span style="font-family:Arial;"><span></span>&nbsp;* later position there is only one copy and it will be ignored by<br></span></span><span style="font-family:Arial;"><span style="color:#008000;"><span></span>&nbsp;* the preceding if clause) &nbsp;*/</span><br></span><span style="font-family:Arial;"><span></span>if &nbsp;( !(r-&gt;m_read.flags &amp; RTMP_READ_NO_IGNORE) &amp;&amp;&nbsp;<br><span></span>&nbsp; &nbsp;&nbsp;packet.m_packetType != RTMP_PACKET_TYPE_FLASH_VIDEO )<br></span><span style="font-family:Arial;"><span></span>{<br></span><span style="font-family:Arial;"><span style="line-height:22px;"></span>/* exclude type RTMP_PACKET_TYPE_FLASH_VIDEO since it can<br></span><span style="font-family:Arial;"><span></span>&nbsp;* contain several FLV packets &nbsp;*/<br></span><span style="font-family:Arial;"><span></span>if (packet.m_nTimeStamp == 0)<br></span><span style="font-family:Arial;"><span></span>{<br></span><span style="font-family:Arial;"><span></span>ret = RTMP_READ_IGNORE;<br></span><span style="font-family:Arial;"><span></span>break;<br></span><span style="font-family:Arial;"><span></span>}<br></span><span style="font-family:Arial;"><span></span>else<br></span><span style="font-family:Arial;"><span></span>{<br></span><span style="font-family:Arial;"><span style="line-height:22px;"></span><span style="color:#008000;">/* stop ignoring packets */</span><br></span><span style="font-family:Arial;"><span></span>r-&gt;m_read.flags |= RTMP_READ_NO_IGNORE;<br></span><span s
</span><span style="line-height:24px;font-family:Arial;"><span style="color:#008000;line-height:22.75px;">/* fatal error */</span><br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>break;<br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>}<br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>recopy = TRUE;<br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>ptr = r-&gt;m_read.buf;<br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>}<br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>else<br style="line-height:22.75px;"></span><span style="font-family:Arial;color:#333333;"><span style="line-height:24px;"><span style="line-height:22.75px;"></span>{<br style="line-height:22.75px;"></span></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>ptr = buf;<br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>}<br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;"><br style="line-height:22.75px;"><span style="line-height:22.75px;"></span>pend = ptr + size + 4;</span></span></p>
<p style="line-height:28px;color:rgb(59,59,59);font-family:'Hiragino Sans GB W3', 'Hiragino Sans GB', Arial, Helvetica, simsun, u5b8bu4f53;font-size:16px;">
<span style="font-size:12px;line-height:22.75px;"><span style="font-family:Arial;"><span style="line-height:24px;color:rgb(51,51,51);"></span><span style="color:#008000;"><span style="line-height:24px;">/* use
to return timestamp of last processed packet */</span><br></span></span><span style="color:rgb(0,128,0);font-family:Arial;"><br><span></span>/* audio (0x08), video (0x09) or metadata (0x12) packets :<br></span><span style="font-family:Arial;"><span style="color:rgb(0,128,0);"></span><span style="color:#008000;">&nbsp;* construct 11 byte header then add rtmp packet's data */<br></span></span><span style="font-family:Arial;"><span></span>if &nbsp;(packet.m_packetType == RTMP_PACKET_TYPE_AUDIO ||&nbsp;<br></span><span style="font-family:Arial;"><span></span>packet.m_packetType == RTMP_PACKET_TYPE_VIDEO ||&nbsp;<br></span><span style="font-family:Arial;"><span></span>packet.m_packetType == RTMP_PACKET_TYPE_INFO)<br></span><span style="font-family:Arial;"><span></span>{<br></span><span style="font-family:Arial;"><span></span>nTimeStamp = r-&gt;m_read.nResumeTS + packet.m_nTimeStamp;<br></span><span style="font-family:Arial;"><span></span>prevTagSize = 11 + nPacketLen;<br></span><span style="font-family:Arial;"><br><span></span>*ptr = packet.m_packetType;<br></span><span style="font-family:Arial;"><span></span>ptr++;<br></span><span style="font-family:Arial;"><span></span>ptr = AMF_EncodeInt24(ptr, pend, nPacketLen);<br></span><span style="font-family:Arial;"><span style="color:#333333;"><span style="line-height:24px;">#if 0<br style="line-height:22.75px;"></span></span></span><span style="font-family:Arial;"><span></span><span style="color:#808080;">if(packet.m_packetType == RTMP_PACKET_TYPE_VIDEO)&nbsp;<br></span></span><span style="color:#808080;"><span style="font-family:Arial;"><span></span>{<br></span><span style="font-family:Arial;"><span></span>/* H264 fix: */<br></span><span style="font-family:Arial;"><span></span>if((packetBody[0] &amp; 0x0f) == 7)&nbsp;<br></span><span style="font-family:Arial;"><span></span>{<span><br></span></span><span style="font-family:Arial;"><span></span>/* CodecId = H264 */<br></span><span style="font-family:Arial;"><span></span>uint8_t packetType = *(packetBody+1);<br></span><span style="font-family:Arial;"><span></span>uint32_t ts = AMF_DecodeInt24(packetBody+2); /* composition time */<br></span><span style="font-family:Arial;"><span></span>int32_t cts = (ts+0xff800000)^0xff800000;<br></span><span style="font-family:Arial;"><span></span>RTMP_Log(RTMP_LOGDEBUG, "cts &nbsp;: %d\n", cts);<br></span><span style="line-height:24px;font-family:Arial;"><br style="line-height:22.75px;"><span style="line-height:22.75px;"></span>nTimeStamp -= cts;<br style="line-height:22.75px;"></span><span style="line-height:24px;font-family:Arial;"><span style="line-height:22.75px;"></span>/* get rid of the composition time */<br style="line-height:22.75px;"></span><span style="line-height:24px;font-family:Arial;"><span style="line-height:22.75px;"></span>CRTMP::EncodeInt24(packetBody+2, 0);<br style="line-height:22.75px;"></span><span style="line-height:24px;font-family:Arial;"><span style="line-height:22.75px;"></span>}<br style="line-height:22.75px;"></span><span style="line-height:24px;font-family:Arial;"><span style="line-height:22.75px;"></span>RTMP_Log(RTMP_LOGDEBUG, "VIDEO: nTimeStamp: 0x%08X (%d)\n", nTimeStamp, nTimeStamp);<br style="line-height:22.75px;"></span><span style="line-height:24px;font-family:Arial;"><span style="line-height:22.75px;"></span>}<br style="line-height:22.75px;"></span></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;">#endif<br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>ptr = AMF_EncodeInt24(ptr, pend, nTimeStamp);<br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>*ptr = (char)((nTimeStamp &amp; 0xFF000000) &gt;&gt; 24);<br style="line-height:22.75px;"></span><span style="font-family:Arial;"><span style="line-height:24px;color:rgb(51,51,51);"></span><span style="color:#333333;"><span style="line-height:24px;">ptr++;<br style="line-height:22.75px;"></
</span><span style="color:rgb(51,51,51);font-family:Arial;"><span style="line-height:24px;">/*(11+dataSize+4); */<br style="line-height:22.75px;"></span></span><span style="color:#333333;font-family:Arial;"><span></span>} &nbsp;</span><span style="color:#008000;font-family:Arial;">// end of while (pos + 11 &lt; nPacketLen)<br></span><span style="font-family:Arial;"><span></span>}</span><span style="font-family:Arial;"><br><span></span>ptr += len;<br><br></span><span style="font-family:Arial;"><span></span>if (packet.m_packetType != RTMP_PACKET_TYPE_FLASH_VIDEO)<br></span><span style="font-family:Arial;"><span></span>{<br></span><span style="font-family:Arial;"><span></span>/* FLV tag packets contain their own prevTagSize */<br></span><span style="font-family:Arial;"><span></span>AMF_EncodeInt32(ptr, pend, prevTagSize);<br></span><span style="font-family:Arial;"><span></span>}<br></span><span style="font-family:Arial;"><br><span style="line-height:22px;"></span><span style="color:#008000;">/* In non-live this nTimeStamp can contain an absolute TS.<br></span></span><span style="color:#008000;"><span style="font-family:Arial;"><span></span>&nbsp;* Update ext timestamp with this absolute offset in non-live mode<br></span><span style="font-family:Arial;"><span></span>&nbsp;* otherwise report the relative one &nbsp;*/<br></span><span style="font-family:Arial;"><span style="line-height:22px;"></span>/* RTMP_Log(RTMP_LOGDEBUG, "type: %02X, size: %d, pktTS: %dms, TS: %dms, bLiveStream: %d",&nbsp;<br></span></span><span style="font-family:Arial;"><span style="color:#008000;"><span></span>&nbsp; &nbsp;packet.m_packetType, nPacketLen, packet.m_nTimeStamp, nTimeStamp, r-&gt;Link.lFlags &amp; RTMP_LF_LIVE); */</span><br></span><span style="font-family:Arial;"><span></span>r-&gt;m_read.timestamp = (r-&gt;Link.lFlags &amp; RTMP_LF_LIVE) ? packet.m_nTimeStamp : nTimeStamp;<br></span><span style="font-family:Arial;"><span></span>ret = size;<br></span><span style="font-family:Arial;"><span></span>break;<br></span><span style="font-family:Arial;"><span></span>}<br></span><span style="font-family:Arial;"><br><span></span>if (rtnGetNextMediaPacket)<br></span><span style="font-family:Arial;"><span></span>RTMPPacket_Free(&amp;packet);</span></span></p>
<p style="line-height:28px;color:rgb(59,59,59);font-family:'Hiragino Sans GB W3', 'Hiragino Sans GB', Arial, Helvetica, simsun, u5b8bu4f53;font-size:16px;">
<span style="font-size:12px;line-height:22.75px;"><span style="font-family:Arial;color:#333333;"><span style="line-height:24px;"><span style="line-height:22.75px;"></span>if (recopy)<br style="line-height:22.75px;"></span></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>{<br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>len = ret &gt; buflen ? buflen : ret;<br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>memcpy(buf, r-&gt;m_read.buf, len);<br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>r-&gt;m_read.bufpos = r-&gt;m_read.buf + len;<br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>r-&gt;m_read.buflen = ret - len;<br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>}</span></span></p>
<p style="line-height:28px;color:rgb(59,59,59);font-family:'Hiragino Sans GB W3', 'Hiragino Sans GB', Arial, Helvetica, simsun, u5b8bu4f53;font-size:16px;">
<span style="font-size:12px;line-height:22.75px;"><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>return ret;<br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;">}<br style="line-height:22.75px;"><br style="line-height:22.75px;"></span><span style="line-height:26px;color:rgb(51,51,51);font-family:Arial;">函数Read_1_Packet()里面实现从网络中读取视音频数据的函数是RTMP_GetNextMediaPacket()。下面我们来看看该函数的源代码:<br style="line-height:22.75px;"></span><span style="line-height:24px;font-family:Arial;"><br style="line-height:22.75px;"><span style="color:#0000ff;line-height:22.75px;">/**<br></span></span><span style="line-height:24px;font-family:Arial;"><span style="color:#0000ff;line-height:22.75px;">&nbsp;* @brief 获取下一个多媒体包(音频、视频或者metadata)<br></span></span><span style="line-height:24px;font-family:Arial;"><span style="color:#0000ff;line-height:22.75px;">&nbsp;*/</span><br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;">int RTMP_GetNextMediaPacket(RTMP *r, RTMPPacket *packet)<br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;">{<br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>int bHasMediaPacket = 0;</span></span></p>
<p style="line-height:28px;color:rgb(59,59,59);font-family:'Hiragino Sans GB W3', 'Hiragino Sans GB', Arial, Helvetica, simsun, u5b8bu4f53;font-size:16px;">
<span style="font-size:12px;line-height:22.75px;"><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>while (!bHasMediaPacket &amp;&amp; RTMP_IsConnected(r)
&amp;&amp;&nbsp;</span><span style="line-height:24px;font-family:Arial;"><span style="color:#ff0000;line-height:22.75px;">RTMP_ReadPacket</span></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;">(r, packet))<br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>{<br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>if (!RTMPPacket_IsReady(packet))<br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>{<br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>continue;<br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>}<br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span><br style="line-height:22.75px;"><span style="line-height:22.75px;"></span>bHasMediaPacket =&nbsp;</span><span style="line-height:24px;font-family:Arial;"><span style="color:#ff0000;line-height:22.75px;">RTMP_ClientPacket</span></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;">(r,
packet);<br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>if (!bHasMediaPacket)<br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>{<br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>RTMPPacket_Free(packet);<br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>}<br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>else if (r-&gt;m_pausing == 3)<br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>{</span></span></p>
<p style="line-height:28px;color:rgb(59,59,59);font-family:'Hiragino Sans GB W3', 'Hiragino Sans GB', Arial, Helvetica, simsun, u5b8bu4f53;font-size:16px;">
<span style="font-size:12px;line-height:22.75px;"><span><span style="font-family:Arial;color:rgb(51,51,51);"><span style="line-height:24px;"><span style="line-height:22.75px;"></span>if (packet-&gt;m_nTimeStamp
&lt;= r-&gt;m_mediaStamp)<br style="line-height:22.75px;"></span></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>{<br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>bHasMediaPacket = 0;<br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;">#ifdef _DEBUG<br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>RTMP_Log(RTMP_LOGDEBUG, "Skipped type: %02X, size: %d, TS: %d ms,&nbsp;<br style="line-height:22.75px;"><span style="line-height:22.75px;"></span>abs TS: %d, pause: %d ms",<span style="line-height:22.75px;">&nbsp;</span></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;">packet-&gt;m_packetType, packet-&gt;m_nBodySize,&nbsp;<br style="line-height:22.75px;"><span style="line-height:22.75px;"></span>packet-&gt;m_nTimeStamp, packet-&gt;m_hasAbsTimestamp, r-&gt;m_mediaStamp);<br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;">#endif<br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>continue;<br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>}<br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>r-&gt;m_pausing = 0;<br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>}<br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>}<br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;"><br style="line-height:22.75px;"><span style="line-height:22.75px;"></span>if (bHasMediaPacket)<br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>r-&gt;m_bPlaying = TRUE;<br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>else if (r-&gt;m_sb.sb_timedout &amp;&amp; !r-&gt;m_pausing)<br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;"><span style="line-height:22.75px;"></span>r-&gt;m_pauseStamp = r-&gt;m_channelTimestamp[r-&gt;m_mediaChannel];<br style="line-height:22.75px;"></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;"><br style="line-height:22.75px;"><span style="line-height:22.75px;"></span>return bHasMediaPacket;<br style="line-height:22.75px;"></span></span><span style="line-height:24px;color:rgb(51,51,51);font-family:Arial;"><span>}</span><br style="line-height:22.75px;"></span></span></p>
</div>
</div>
</article>
</div>
<script>
(function(){
function collection(){
if (currentUserName) {
var markObj = {};
markObj.imgUrl ='https://csdnimg.cn/release/phoenix/static_blog/images/appqr.png';
var markPrompt = (new window.csdn.publicPrompt).init(markObj);
var maeked = '您已经收藏过';
if (!$(this).hasClass("liked")) {
$.ajax({
url: 'https://my.csdn.net/my/favorite/do_add/2',
dataType: 'json',
type: 'POST',
xhrFields: {
withCredentials: true
},
data: {
title: articleTit,
url: curentUrl,
share: 1,
map_name: ''
},
success: function(data) {
if (data.succ == 1) {
$('.btn-bookmark').addClass("liked");
$('.article-footer-bookmark-btn').addClass("liked").children('span').text('已收藏');
markPrompt.show({})
// alert('收藏成功,可以在个人中心查看我的收藏');
} else {
if (data.msg === "您已经收藏过") {
$('.btn-bookmark').addClass("liked");
$('.article-footer-bookmark-btn').addClass("liked").children('span').text('已收藏');
markPrompt.show({
titleStr: maeked
})
}else{
alert(data.msg);
}
}
}
});
} else {
markPrompt.show({
titleStr: maeked
})
}
} else {
window.csdn.loginBox.show();
}
}
window.csdn = window.csdn ? window.csdn : {};
window.csdn.articleCollection = collection;
function setArticleH(btnReadmore,posi){
var winH = $(window).height();
var articleBox = $("div.article_content");
var artH = articleBox.height();
if(artH > winH*posi){
articleBox.css({
'height':winH*posi+'px',
'overflow':'hidden'
})
btnReadmore.click(function(){
articleBox.removeAttr("style");
$(this).parent().remove()
})
}else{
btnReadmore.parent().remove()
}
}
var btnReadmore = $("#btn-readmore");
$('.article-footer-bookmark-btn').click(window.csdn.articleCollection)
if(btnReadmore.length>0){
if(currentUserName){
setArticleH(btnReadmore,3);
}else{
setArticleH(btnReadmore,1.2);
}
}else{
$('.hide-article-box').addClass('hide-article-style');
}
})()
</script>
<script>
$(".MathJax").remove();
if($('div.markdown_views pre.prettyprint code.hljs').length > 0 ){
$('div.markdown_views')[0].className = 'markdown_views';
}
</script>
<div id="dmp_ad_58"><div id="kp_box_58" data-pid="58" data-track-click="{&quot;mod&quot;:&quot;kp_popu_58-402&quot;,&quot;con&quot;:&quot;,,&quot;}"><div style="width:100%;background:#fff;border:3px solid #fff;">
<script type="text/javascript" src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/mvf_news_feed.js"></script>
<div class="mediav_ad"><newsfeed class="newsfeed QIHOO__WEB__SO__1551757398677_486" id="QIHOO__WEB__SO__1551757398677_486" style="display:block;margin:0;padding:0;border:none;width:900px;height:100px;overflow-y:hidden;overflow-x:hidden;position:relative;text-align:left;"><info-div id="QIHOO__WEB__SO__1551757398677_486-info" style="zoom:1"><info-div class="QIHOO__WEB__SO__1551757398677_486 singleImage clk" data-href="https://ssxd.mediav.com/s?type=2&amp;r=20&amp;mv_ref=blog.csdn.net&amp;enup=CAABPY1BbQgAAm1BjT0A&amp;mvid=MDUzMTc1NjU1MDczNzEwMDQwOTAwMTc&amp;bid=1332a93546a8242e&amp;price=AAAAAFx98FUAAAAAAAmA2bsmVay/HC1NlSenaA==&amp;finfo=DAABCAABAAACHQgAAgAAAG4EAAM/dCs9LsBJaQAIAAIAAAADCgADUYrsM4MiRwoIAAQAAABuBgAGLbcKAAkAAAAAAAIQGAYACgAACgAPAAAAAABSmCgA&amp;ugi=FcTgigEVyNtrTBUCFUAVXhUAABWYuYDUBRaACBXIARaA/efGldTBBQA&amp;uai=FZy4mwIlAhUCFs7VtNz0xvGKowEV8gglt8TzlQclABUaFAAA&amp;ubi=FZKVURWuj8oCFfLCtxcV6KDhWBUEFSIWnIeAnxcWztXJw/6M9oqjATQCFrDAECUGFar7n90GFfoFFQA29rmZt6mcmfXfAQA&amp;clickid=0&amp;cpx=__OFFSET_X__&amp;cpy=__OFFSET_Y__&amp;cs=__EVENT_TIME_START__&amp;ce=__EVENT_TIME_END__&amp;csign2=5kauX_FHTaj=&amp;url=http%3A%2F%2Fgp.yimugo.net%2F" data-clk="https://max-l.mediav.com/rtb?type=3&amp;d=100&amp;b=1332a93546a8242e&amp;p=2321934&amp;l=1136674&amp;s=1&amp;ps=0&amp;k=1HxdmwAAAAA=&amp;i=N7WEimVFZ9ZF&amp;v=05317565507371004090017&amp;x=__OFFSET_X__&amp;y=__OFFSET_Y__&amp;st=__EVENT_TIME_START__&amp;et=__EVENT_TIME_END__&amp;tc=&amp;turl=">
<info-div class="wrap">
<info-div class="singleImage-img singleImage-img-left">
<info-div class="img" style="background-image:url(https://s3m.mediav.com/galileo/664905-24814769f271ce57904e33d2ba5cdf17.jpg)"><info-div class="ads-tag"></info-div></info-div>
</info-div>
<info-div class="singleImage-body singleImage-body-left">
<info-div class="singleImage-title">股票“三不卖七不买“6字黄金口诀 只买井喷股 赢千万身价</info-div>
<info-div class="singleImage-desc">之星 · 顶新</info-div>
</info-div>
</info-div>
<info-div style="clear:both;"></info-div>
</info-div>
</info-div></newsfeed></div>
<script>
                                               NEWS_FEED({
                w: 900,
                h : 100,
                showid : 'ztvJV8',
                placeholderId: "three_ad1",
                inject : 'define',
                define : {
                    imagePosition : 'left',
                    imageBorderRadius : 0,
                    imageWidth: 90,
                    imageHeight: 68,
                    imageFill : 'clip',
                    displayImage : true,
                    displayTitle : true,
                    titleFontSize: 18,
                    titleFontColor: '#000',
                    titleFontFamily : 'Lato,-apple-system,SF UI Text,Arial,PingFang SC,Hiragino Sans GB,Microsoft YaHei,WenQuanYi Micro Hei,sans-serif',
                    titleFontWeight: 'bold',
                    titlePaddingTop : 0,
                    titlePaddingRight : 0,
                    titlePaddingBottom : 5,
                    titlePaddingLeft : 16,
                    displayDesc : true,
                    descFontSize: 14,
                    descFontColor: '#8e959a',
                    descFontFamily : 'Microsoft YaHei',
                    paddingTop : 20,
                    paddingRight : 0,
                    paddingBottom : 0,
                    paddingLeft : 20,
                    backgroundColor: '#fff',
                    hoverColor: '#000'
                      }
                  })
                                        </script>
</div></div></div> <a id="commentBox"></a>
<div class="comment-box">
<div class="comment-edit-box d-flex">
<a id="commentsedit"></a>
<div class="user-img">
<a href="javascript:void(0);" target="_blank">
<img class="show_loginbox" src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/anonymous-User-img.png">
</a>
</div>
<form id="commentform">
<input type="hidden" id="comment_replyId">
<textarea class="comment-content" name="comment_content" id="comment_content" placeholder="想对作者说点什么"></textarea>
<div class="opt-box"> <!-- d-flex -->
<div id="ubbtools" class="add_code">
<a href="#insertcode" code="code" target="_self"><i class="icon iconfont icon-daima"></i></a>
</div>
<input type="hidden" id="comment_replyId" name="comment_replyId">
<input type="hidden" id="article_id" name="article_id" value="48627039">
<input type="hidden" id="comment_userId" name="comment_userId" value="">
<input type="hidden" id="commentId" name="commentId" value="">
<div style="display: none;" class="csdn-tracking-statistics tracking-click" data-mod="popu_384"><a href="#" target="_blank" class="comment_area_btn">发表评论</a></div>
<div class="dropdown" id="myDrap">
<a class="dropdown-face d-flex align-items-center" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
<div class="txt-selected text-truncate">添加代码片</div>
<svg class="icon d-block" aria-hidden="true">
<use xlink:href="#csdnc-triangledown"></use>
</svg>
</a>
<ul class="dropdown-menu" id="commentCode" aria-labelledby="drop4">
<li><a data-code="html">HTML/XML</a></li>
<li><a data-code="objc">objective-c</a></li>
<li><a data-code="ruby">Ruby</a></li>
<li><a data-code="php">PHP</a></li>
<li><a data-code="csharp">C</a></li>
<li><a data-code="cpp">C++</a></li>
<li><a data-code="javascript">JavaScript</a></li>
<li><a data-code="python">Python</a></li>
<li><a data-code="java">Java</a></li>
<li><a data-code="css">CSS</a></li>
<li><a data-code="sql">SQL</a></li>
<li><a data-code="plain">其它</a></li>
</ul>
</div>
<div class="right-box">
<span id="tip_comment" class="tip">还能输入<em>1000</em>个字符</span>
<input type="submit" class="btn btn-sm btn-red btn-comment" value="发表评论">
</div>
</div>
</form>
</div>
<div class="comment-list-container">
<a id="comments"></a>
<div class="comment-list-box">
</div>
<div id="commentPage" class="pagination-box d-none"></div>
</div>
</div>
<div class="recommend-box">
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/wang542943220/article/details/80128895,BlogCommendFromBaidu_0,index_0&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/wang542943220/article/details/80128895" target="_blank" title="RTSP协议、RTMP协议、HTTP协议的区别">
<h4 class="text-truncate oneline" style="width: 552px;">
RTSP协议、RTMP协议、HTTP协议的区别 </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">04-06</span>
<span class="read-num hover-hide">
阅读数
103</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/wang542943220/article/details/80128895" target="_blank" title="RTSP协议、RTMP协议、HTTP协议的区别">
<span class="desc oneline">RTSP、RTMP、HTTP的共同点、区别共同点:1:RTSPRTMPHTTP都是在应用应用层。2:理论上RTSPRTMPHTTP都可以做直播和点播,但一般做直播用RTSPRTMP,做点播用HTTP。...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/wang542943220">来自: <span class="blog_title"> wang542943220的博客</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/occupy8/article/details/42812365,BlogCommendFromBaidu_1,index_1&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/occupy8/article/details/42812365" target="_blank" title="rtmplib rtmp协议过程分析">
<h4 class="text-truncate oneline" style="width: 552px;">
rtmplib rtmp协议过程分析 </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">01-17</span>
<span class="read-num hover-hide">
阅读数
1</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/occupy8/article/details/42812365" target="_blank" title="rtmplib rtmp协议过程分析">
<span class="desc oneline">转自:http://chenzhenianqing.cn/articles/1009.html写的很好,收藏如下,向作者致敬!没事碰到了librtmp库,这个库是ffmpeg的依赖库,用来接收,发布R...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/occupy8">来自: <span class="blog_title"> occupy8的专栏</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-box-ident recommend-download-box clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://download.csdn.net/download/b35838715/5738635,BlogCommendFromBaidu_2,index_2&quot;}" data-flg="true">
<a href="https://download.csdn.net/download/b35838715/5738635" target="_blank">
<div class="content clearfix">
<div class="">
<h4 class="text-truncate oneline clearfix">
rtmp数据抓取保存 </h4>
<span class="data float-right">07-11</span>
</div>
<div class="desc oneline">
rtmp rtmp协议 amf rtmp协议学习 可以学习rtmp协议与AMF协议 有疑问可以与我联系~ </div>
<span class="type-show type-show-download">下载</span>
</div>
</a>
</div>
<div class="recommend-item-box recommend-ad-box"><div id="kp_box_59" data-pid="59" data-track-view="{&quot;mod&quot;:&quot;kp_popu_59-517&quot;,&quot;con&quot;:&quot;,,&quot;}" data-track-click="{&quot;mod&quot;:&quot;kp_popu_59-517&quot;,&quot;con&quot;:&quot;,,&quot;}"><div class="mediav_ad"><newsfeed class="newsfeed QIHOO__WEB__SO__1551757398726_120" id="QIHOO__WEB__SO__1551757398726_120" style="display:block;margin:0;padding:0;border:none;width:852px;height:52px;overflow-y:hidden;overflow-x:hidden;position:relative;text-align:left;"><info-div id="QIHOO__WEB__SO__1551757398726_120-info" style="zoom:1"><info-div class="QIHOO__WEB__SO__1551757398726_120 singleImage clk" data-href="https://ssxd.mediav.com/s?type=2&amp;r=20&amp;mv_ref=blog.csdn.net&amp;enup=CAABPY1BbQgAAm1BjT0A&amp;mvid=MDUzMTc1NjU1MDczNzEwMDQwOTAwMTc&amp;bid=1332a9357011607e&amp;ugi=FcTgigEVyNtrTBUCFUAVXhUAABWYuYDUBRaACBXIARaA/efGldTBBQA&amp;uai=FaixkwIlAhUEFs7Vxcqr9oeeqQEV8gglner3xQclABUaFAAA&amp;ubi=Fcj8SxWg58cCFai6rhcVrP3LWBUEFRwW9NaK8BYWztXasbW8jJ6pATQCFrDAECUCFZXAubcGFaYBFQA2kLy01cmxgJHoAQA&amp;clickid=0&amp;cpx=__OFFSET_X__&amp;cpy=__OFFSET_Y__&amp;cs=__EVENT_TIME_START__&amp;ce=__EVENT_TIME_END__&amp;csign2=qQaNPZX6fvo=&amp;url=http%3A%2F%2Fsx2.aihuaiedu.cn%2Fzc360%2Fzd%2Fpc%2Fd2%2F%3Fll-zd-sz-A701" data-pv="https://ssxd.mediav.com/s?type=1&amp;r=20&amp;tid=MDUzMTc1NjU1MDczNzEwMDQwOTAwMTc&amp;finfo=DAABCAABAAAAeQgAAgAAAHMEAAM/8AAAAAAAAAAIAAIAAAABCgADVJ4Y8STWQa4IAAQAAAB5BgAGLbcKAAkAAAAAAAIQGAYACgAACgAPAAAAAAASdpAA&amp;mv_ref=blog.csdn.net&amp;enup=CAABPY1BbQgAAm1BjT0A&amp;mvid=MDUzMTc1NjU1MDczNzEwMDQwOTAwMTc&amp;bid=1332a9357011607e&amp;ugi=FcTgigEVyNtrTBUCFUAVXhUAABWYuYDUBRaACBXIARaA/efGldTBBQA&amp;uai=FaixkwIlAhUEFs7Vxcqr9oeeqQEV8gglner3xQclABUaFAAA&amp;ubi=Fcj8SxWg58cCFai6rhcVrP3LWBUEFRwW9NaK8BYWztXasbW8jJ6pATQCFrDAECUCFZXAubcGFaYBFQA2kLy01cmxgJHoAQA&amp;ds=1&amp;price=AAAAAFx98FUAAAAAAAkE89PymnjvwMwlMNK/Gw==,https://max-l.mediav.com/rtb?type=2&amp;d=100&amp;b=1332a9357011607e&amp;p=2255956&amp;l=1136674&amp;s=1&amp;z=1&amp;ps=0&amp;w=AAAAAFx98FUAAAAAAAkFFsvUct-d0xaqrN9Vpw&amp;pt=1&amp;k=LRsRzQAAAAA=&amp;i=OHbJ5mVFZ9gX&amp;v=05317565507371004090017" data-clk="https://max-l.mediav.com/rtb?type=3&amp;d=100&amp;b=1332a9357011607e&amp;p=2255956&amp;l=1136674&amp;s=1&amp;ps=0&amp;k=LRsRzQAAAAA=&amp;i=OHbJ5mVFZ9gX&amp;v=05317565507371004090017&amp;x=__OFFSET_X__&amp;y=__OFFSET_Y__&amp;st=__EVENT_TIME_START__&amp;et=__EVENT_TIME_END__&amp;tc=&amp;turl=">
<info-div class="wrap">
<info-div class="singleImage-img singleImage-img-left">
<info-div class="img" style="background-image:url(https://s3m.mediav.com/galileo/622372-0b7d400b523b02b5e524f00536006c3f.jpg)"><info-div class="ads-tag"></info-div></info-div>
</info-div>
<info-div class="singleImage-body singleImage-body-left">
<info-div class="singleImage-title">2月起,科技园有种学历叫免考本科,一年课程,正规本科,学信网可查</info-div>
<info-div class="singleImage-desc">爱华学历中心 · 顶新</info-div>
</info-div>
</info-div>
<info-div style="clear:both;"></info-div>
</info-div>
</info-div></newsfeed></div>
<script type="text/javascript" src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/mvf_news_feed.js"></script>
<script>
NEWS_FEED({
w: 852,
h : 52,
showid : 'GNKXx7',
placeholderId: "three_ad1",
inject : 'define',
define : {
imagePosition : 'left',
imageBorderRadius : 3,
imageWidth: 90,
imageHeight: 52,
imageFill : 'clip',
displayImage : true,
displayTitle : true,
titleFontSize: 18,
titleFontColor: '#000',
titleFontFamily : 'Lato,-apple-system,SF UI Text,Arial,PingFang SC,Hiragino Sans GB,Microsoft YaHei,WenQuanYi Micro Hei,sans-serif',
titleFontWeight: 'bold',
titlePaddingTop : 0,
titlePaddingRight : 0,
titlePaddingBottom : 5,
titlePaddingLeft : 16,
displayDesc : true,
descFontSize: 14,
descFontColor: '#8e959a',
descFontFamily : 'Microsoft Yahei',
paddingTop : 0,
paddingRight : 0,
paddingBottom : 0,
paddingLeft : 0,
backgroundColor: '#fff',
hoverColor: '#000'
}
})
</script></div></div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/leiych/article/details/18268815,BlogCommendFromBaidu_3,index_3&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/leiych/article/details/18268815" target="_blank" title="Rtmp协议简单分析(一)——协议数据">
<h4 class="text-truncate oneline" style="width: 552px;">
Rtmp协议简单分析(一)——协议数据 </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">01-14</span>
<span class="read-num hover-hide">
阅读数
1228</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/leiych/article/details/18268815" target="_blank" title="Rtmp协议简单分析(一)——协议数据">
<span class="desc oneline">首先说下rtmp协议包的格式。握手之后,rtmp传输一个数据默认的长度是128bytes,这128bytes不包括包头的长度,只是数据的长度,文档上面没有说明,很憋了我一段时间,数据超过这个长度之后就...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/leiych">来自: <span class="blog_title"> 守得云开见月明</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/u011046042/article/details/53017992,BlogCommendFromBaidu_4,index_4&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/u011046042/article/details/53017992" target="_blank" title="linux下利用RTMP协议接收数据">
<h4 class="text-truncate oneline" style="width: 552px;">
linux下利用RTMP协议<em>接收</em>数据 </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">11-03</span>
<span class="read-num hover-hide">
阅读数
4139</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/u011046042/article/details/53017992" target="_blank" title="linux下利用RTMP协议接收数据">
<span class="desc oneline">在windows下利用RTMP接收数据的代码有很多的例子可以参考,但是在linux下利用rtmp协议接收数据,例子特别少。在无计可用的情况下,只能自己写代码了。在写代码之前需要做一点事情,去rtmp官...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/u011046042">来自: <span class="blog_title"> 求是07的专栏</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/fishmai/article/details/74840514,BlogCommendFromGuangxin_5,index_5&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/fishmai/article/details/74840514" target="_blank" title="iOS单个app最大内存占用限制">
<h4 class="text-truncate oneline" style="width: 552px;">
iOS单个app最大内存占用限制 </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">07-08</span>
<span class="read-num hover-hide">
阅读数
5529</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/fishmai/article/details/74840514" target="_blank" title="iOS单个app最大内存占用限制">
<span class="desc oneline">device:(crashamount/totalamount/percentageoftotal)iPad1:127MB/256MB/49%iPad2:275MB/512MB/53%iPad3:64...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/fishmai">来自: <span class="blog_title"> fishmai的专栏</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/tong5956/article/details/81480043,BlogCommendFromGuangxin_6,index_6&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/tong5956/article/details/81480043" target="_blank" title="OBS-rtmp源码剖析之rtmp客户端通信介绍(三)">
<h4 class="text-truncate oneline" style="width: 552px;">
OBS-rtmp源码剖析之rtmp客户端通信介绍(三) </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">08-07</span>
<span class="read-num hover-hide">
阅读数
101</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/tong5956/article/details/81480043" target="_blank" title="OBS-rtmp源码剖析之rtmp客户端通信介绍(三)">
<span class="desc oneline">这里主要接着上一篇继续网络连接部分的讲解。1、socket协议协商staticintSocksNegotiate(RTMP*r){unsignedlongaddr;structsockaddr_sto...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/tong5956">来自: <span class="blog_title"> tong5956的专栏</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/lyp_558/article/details/79687886,BlogCommendFromGuangxin_7,index_7&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/lyp_558/article/details/79687886" target="_blank" title="Android为什么会有65536的方法数量限制">
<h4 class="text-truncate oneline" style="width: 552px;">
Android为什么会有65536的方法数量限制 </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">03-25</span>
<span class="read-num hover-hide">
阅读数
968</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/lyp_558/article/details/79687886" target="_blank" title="Android为什么会有65536的方法数量限制">
<span class="desc oneline">这里给大家推荐一个Android源码网站:http://androidxref.com/(无需翻墙)前言65536是什么样的数?2的16次方或者说64KB下边这个error是不是很熟悉较高版本的And...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/lyp_558">来自: <span class="blog_title"> 狂野之士</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-ad-box"><div id="kp_box_60" data-pid="60" data-track-view="{&quot;mod&quot;:&quot;kp_popu_60-43&quot;,&quot;con&quot;:&quot;,,&quot;}" data-track-click="{&quot;mod&quot;:&quot;kp_popu_60-43&quot;,&quot;con&quot;:&quot;,,&quot;}"><div class="mediav_ad"><newsfeed class="newsfeed QIHOO__WEB__SO__1551757398775_645" id="QIHOO__WEB__SO__1551757398775_645" style="display:block;margin:0;padding:0;border:none;width:900px;height:84px;overflow-y:hidden;overflow-x:hidden;position:relative;text-align:left;"><info-div id="QIHOO__WEB__SO__1551757398775_645-info" style="zoom:1"><info-div class="QIHOO__WEB__SO__1551757398775_645 singleImage clk" data-href="https://s1.shucaixiaoshuo.com/s?type=2&amp;r=20&amp;mv_ref=blog.csdn.net&amp;enup=CAABPY1BbQgAAm1BjT0A&amp;mvid=MDUzMTc1NjU1MDczNzEwMDQwOTAwMTc&amp;bid=1332a93543ec52ae&amp;price=AAAAAFx98FUAAAAAAAn8OMM4k9PDS5XGKzV+EA==&amp;finfo=DAABCAABAAAAzQgAAgAAAGIEAAM/XkaCfvLbLAAIAAIAAAADCgADXSapPOOxgxUIAAQAAABvBgAGLbcKAAkAAAAAAAIQFAYACgAACAAOAAAAPwoADwAAAAAAH0fQAA&amp;ugi=FcTgigEVyNtrTBUCFUAVXhUAABWYuYDUBRaACBXIARaA/efGldTBBQA&amp;uai=FeTGlAIlAhUEFs7V39CEidCmugEV8ggljb7zZyUAFRoUAAA&amp;ubi=FdqGURXKxskCFby0tRcV/KHiWBUEFRwW7pnrnhcWztX0t47P1Ka6ATQCFqjAkIAIJQYV883a5Q4VvgMVADaM7ty2icTPnJkBAA&amp;clickid=0&amp;cpx=__OFFSET_X__&amp;cpy=__OFFSET_Y__&amp;cs=__EVENT_TIME_START__&amp;ce=__EVENT_TIME_END__&amp;csign2=QzWflBYie8G=&amp;url=http%3A%2F%2Fgp.51ysh.top" data-pv="https://s1.shucaixiaoshuo.com/s?type=1&amp;r=20&amp;tid=MDUzMTc1NjU1MDczNzEwMDQwOTAwMTc&amp;finfo=DAABCAABAAAAzQgAAgAAAGIEAAM/XkaCfvLbLAAIAAIAAAADCgADXSapPOOxgxUIAAQAAABvBgAGLbcKAAkAAAAAAAIQFAYACgAACAAOAAAAPwoADwAAAAAAH0fQAA&amp;mv_ref=blog.csdn.net&amp;enup=CAABPY1BbQgAAm1BjT0A&amp;mvid=MDUzMTc1NjU1MDczNzEwMDQwOTAwMTc&amp;bid=1332a93543ec52ae&amp;ugi=FcTgigEVyNtrTBUCFUAVXhUAABWYuYDUBRaACBXIARaA/efGldTBBQA&amp;uai=FeTGlAIlAhUEFs7V39CEidCmugEV8ggljb7zZyUAFRoUAAA&amp;ubi=FdqGURXKxskCFby0tRcV/KHiWBUEFRwW7pnrnhcWztX0t47P1Ka6ATQCFqjAkIAIJQYV883a5Q4VvgMVADaM7ty2icTPnJkBAA&amp;ds=1&amp;price=AAAAAFx98FUAAAAAAAn8OMM4k9PDS5XGKzV+EA==,https://max-l.mediav.com/rtb?type=2&amp;d=100&amp;b=1332a93543ec52ae&amp;p=2265522&amp;l=1136674&amp;s=1&amp;z=1&amp;ps=0&amp;w=AAAAAFx98FUAAAAAAAn8bVRqs4BGjQZAda84cw&amp;pt=1&amp;k=h95JOgAAAAA=&amp;i=xYcPiBVFZ9hi&amp;v=05317565507371004090017" data-clk="https://max-l.mediav.com/rtb?type=3&amp;d=100&amp;b=1332a93543ec52ae&amp;p=2265522&amp;l=1136674&amp;s=1&amp;ps=0&amp;k=h95JOgAAAAA=&amp;i=xYcPiBVFZ9hi&amp;v=05317565507371004090017&amp;x=__OFFSET_X__&amp;y=__OFFSET_Y__&amp;st=__EVENT_TIME_START__&amp;et=__EVENT_TIME_END__&amp;tc=&amp;turl=">
<info-div class="wrap">
<info-div class="singleImage-img singleImage-img-left">
<info-div class="img" style="background-image:url(https://s3m.milkjpg.com/galileo/663981-d4b27abf1da927c2af63850bd9fcd3fc.jpg)"><info-div class="ads-tag"></info-div></info-div>
</info-div>
<info-div class="singleImage-body singleImage-body-left">
<info-div class="singleImage-title">一位退役操盘手肺腑之言,写给无数正在亏钱的散户!</info-div>
<info-div class="singleImage-desc">豪嘉利 · 鹓鶵</info-div>
</info-div>
</info-div>
<info-div style="clear:both;"></info-div>
</info-div>
</info-div></newsfeed></div>
<script type="text/javascript" src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/mvf_news_feed.js"></script>
<script>
NEWS_FEED({
w: 900,
h : 84,
showid : 'Afihld',
placeholderId: "three_ad8",
inject : 'define',
define : {
imagePosition : 'left',
imageBorderRadius : 3,
imageWidth: 90,
imageHeight: 60,
imageFill : 'clip',
displayImage : true,
displayTitle : true,
titleFontSize: 18,
titleFontColor: '#000',
titleFontFamily : 'Lato,-apple-system,SF UI Text,Arial,PingFang SC,Hiragino Sans GB,Microsoft YaHei,WenQuanYi Micro Hei,sans-serif',
titleFontWeight: 'bold',
titlePaddingTop : 0,
titlePaddingRight : 0,
titlePaddingBottom : 5,
titlePaddingLeft : 16,
displayDesc : true,
descFontSize: 14,
descFontColor: '#8e959a',
descFontFamily : 'Microsoft Yahei',
paddingTop : 10,
paddingRight : 0,
paddingBottom : 0,
paddingLeft : 0,
backgroundColor: '#fff',
hoverColor: '#000'
}
})
</script></div></div><div class="recommend-item-box baiduSearch recommend-box-ident" data-track-view="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/wongainia158158/article/details/48626907,searchFromBaidu1_0,-&quot;}" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/wongainia158158/article/details/48626907,searchFromBaidu1_0,-&quot;}" data-flg="true"> <a href="https://blog.csdn.net/wongainia158158/article/details/48626907" target="_blank"> <h4 class="text-truncate oneline"><em>LibRTMP</em><em>源代码分析</em>6 - wongainia158158的博客 - CSDN博客</h4> <div class="info-box d-flex align-content-center"> <p> <span class="date">11-20</span> </p> </div> <p class="content oneline"></p> </a> </div><div class="recommend-item-box baiduSearch recommend-box-ident" data-track-view="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/wongainia158158/article/details/48625871,searchFromBaidu1_1,-&quot;}" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/wongainia158158/article/details/48625871,searchFromBaidu1_1,-&quot;}" data-flg="true"> <a href="https://blog.csdn.net/wongainia158158/article/details/48625871" target="_blank"> <h4 class="text-truncate oneline"><em>LibRTMP</em><em>源代码分析</em>5:建立网络连接 - wongainia158158的博客 - ...</h4> <div class="info-box d-flex align-content-center"> <p> <span class="date">11-2</span> </p> </div> <p class="content oneline">来自: wongainia158158的博客 LibRTMP源代码分析8:发送消息(Send RTMPPacket) ...RTMPdump(libRTMP) 源代码分析 9: 接收消息(Message)(接收视音频数据) 10-...</p> </a> </div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/hcmsdc/article/details/82178937,BlogCommendFromGuangxin_8,index_8&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/hcmsdc/article/details/82178937" target="_blank" title="转换H264视频流到RTMP服务器">
<h4 class="text-truncate oneline" style="width: 552px;">
转换H264视频流到RTMP服务器 </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">08-29</span>
<span class="read-num hover-hide">
阅读数
221</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/hcmsdc/article/details/82178937" target="_blank" title="转换H264视频流到RTMP服务器">
<span class="desc oneline">最近一直想做一个简易的直播服务,上网参考了很多朋友写的如何转换RTMP流的文章,https://blog.csdn.net/scnu20142005027/article/details/606236...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/hcmsdc">来自: <span class="blog_title"> hcmsdc的专栏</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/lucyTheSlayer/article/details/79788561,BlogCommendFromGuangxin_9,index_9&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/lucyTheSlayer/article/details/79788561" target="_blank" title="librtmp 源码分析笔记 RTMP_ReadPacket">
<h4 class="text-truncate oneline" style="width: 552px;">
<em>librtmp</em> 源码分析笔记 RTMP_ReadPacket </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">04-02</span>
<span class="read-num hover-hide">
阅读数
338</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/lucyTheSlayer/article/details/79788561" target="_blank" title="librtmp 源码分析笔记 RTMP_ReadPacket">
<span class="desc oneline">索性一口气把RTMP_ReadPacket也记录下来,好尽快开始对具体上层协议实现细节进行细读。与RTMP_SendPacket不同,RTMP_ReadPacket需要多次调用(每次读取一个chunk...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/lucyTheSlayer">来自: <span class="blog_title"> lucyTheSlayer的博客</span></a>
</span>
</p>
</div>
</div><div class="recommend-item-box baiduSearch recommend-box-ident" data-track-view="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/wongainia158158/article/details/48626615,searchFromBaidu1_2,-&quot;}" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/wongainia158158/article/details/48626615,searchFromBaidu1_2,-&quot;}" data-flg="true"> <a href="https://blog.csdn.net/wongainia158158/article/details/48626615" target="_blank"> <h4 class="text-truncate oneline">...代码分析6:建立网络流 - wongainia158158的博客 - CSDN博客...</h4> <div class="info-box d-flex align-content-center"> <p> <span class="date">11-3</span> </p> </div> <p class="content oneline">LibRTMP源代码分析6:建立网络流 2015年09月21日 15:06:41 wongainia158158 阅读数:346 建立了RTMP网络连...</p> </a> </div><div class="recommend-item-box baiduSearch recommend-box-ident" data-track-view="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/hffgjh/article/details/87929630,searchFromBaidu1_3,-&quot;}" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/hffgjh/article/details/87929630,searchFromBaidu1_3,-&quot;}" data-flg="true"> <a href="https://blog.csdn.net/hffgjh/article/details/87929630" target="_blank"> <h4 class="text-truncate oneline">RTMPdump(<em>libRTMP</em>) <em>源代码分析</em> 9 <em>接收</em><em>消息</em>(Message)(接..._CSDN博客</h4> <div class="info-box d-flex align-content-center"> <p> <span class="date">2-26</span> </p> </div> <p class="content oneline">RTMPdump (libRTMP) 源代码分析9: 接收消息 (Message) (接收视音频数据) ...博文 来自: wongainia158158的博客 使用librtmp接收直播流和点播流并保存 05...</p> </a> </div>
<div class="recommend-item-box blog-expert-recommend-box" style="display: block;">
<div class="d-flex">
<div class="blog-expert-recommend">
<div class="blog-expert">
<div class="blog-expert-flexbox" data-track-view="{&quot;mod&quot;:&quot;popu_709&quot;,&quot;con&quot;:&quot;https://blog.csdn.net/wongainia158158/article/details/48627039&quot;}"><div class="blog-expert-item"><div class="blog-expert-info-box"><div class="blog-expert-img-box" data-track-click="{&quot;mod&quot;:&quot;popu_709&quot;,&quot;con&quot;:&quot;https://blog.csdn.net/wongainia158158/article/details/48627039&quot;}"><a href="https://blog.csdn.net/byxdaz" target="_blank"><img src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/3_byxdaz.jpg" alt="byxdaz" title="byxdaz"><svg class="icon" aria-hidden="true"><use xlink:href="#csdnc-blogexpert"></use></svg></a><span data-track-click="{&quot;mod&quot;:&quot;popu_710&quot;,&quot;con&quot;:&quot;https://blog.csdn.net/wongainia158158/article/details/48627039&quot;}"><span class="blog-expert-button-follow btn-red-follow" data-name="byxdaz" data-nick="byxdaz">关注</span></span></div><div class="info"><span data-track-click="{&quot;mod&quot;:&quot;popu_709&quot;,&quot;con&quot;:&quot;https://blog.csdn.net/wongainia158158/article/details/48627039&quot;}"><a href="https://blog.csdn.net/byxdaz" target="_blank"><h5 class="oneline" title="byxdaz">byxdaz</h5></a></span> <p></p><p class="article-num" title="949篇文章"> 949篇文章</p><p class="article-num" title="排名:86"> 排名:86</p><p></p></div></div></div><div class="blog-expert-item"><div class="blog-expert-info-box"><div class="blog-expert-img-box" data-track-click="{&quot;mod&quot;:&quot;popu_709&quot;,&quot;con&quot;:&quot;https://blog.csdn.net/wongainia158158/article/details/48627039&quot;}"><a href="https://blog.csdn.net/wongainia158158" target="_blank"><img src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/3_wongainia158158.gif" alt="wongainia158158" title="wongainia158158"></a><span data-track-click="{&quot;mod&quot;:&quot;popu_710&quot;,&quot;con&quot;:&quot;https://blog.csdn.net/wongainia158158/article/details/48627039&quot;}"><span class="blog-expert-button-follow btn-red-follow" data-name="wongainia158158" data-nick="wongainia158158">关注</span></span></div><div class="info"><span data-track-click="{&quot;mod&quot;:&quot;popu_709&quot;,&quot;con&quot;:&quot;https://blog.csdn.net/wongainia158158/article/details/48627039&quot;}"><a href="https://blog.csdn.net/wongainia158158" target="_blank"><h5 class="oneline" title="wongainia158158">wongainia158158</h5></a></span> <p></p><p class="article-num" title="47篇文章"> 47篇文章</p><p class="article-num" title="排名:千里之外"> 排名:千里之外</p><p></p></div></div></div><div class="blog-expert-item"><div class="blog-expert-info-box"><div class="blog-expert-img-box" data-track-click="{&quot;mod&quot;:&quot;popu_709&quot;,&quot;con&quot;:&quot;https://blog.csdn.net/wongainia158158/article/details/48627039&quot;}"><a href="https://blog.csdn.net/leixiaohua1020" target="_blank"><img src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/3_leixiaohua1020.jpg" alt="雷霄骅" title="雷霄骅"><svg class="icon" aria-hidden="true"><use xlink:href="#csdnc-blogexpert"></use></svg></a><span data-track-click="{&quot;mod&quot;:&quot;popu_710&quot;,&quot;con&quot;:&quot;https://blog.csdn.net/wongainia158158/article/details/48627039&quot;}"><span class="blog-expert-button-follow btn-red-follow" data-name="leixiaohua1020" data-nick="雷霄骅">关注</span></span></div><div class="info"><span data-track-click="{&quot;mod&quot;:&quot;popu_709&quot;,&quot;con&quot;:&quot;https://blog.csdn.net/wongainia158158/article/details/48627039&quot;}"><a href="https://blog.csdn.net/leixiaohua1020" target="_blank"><h5 class="oneline" title="雷霄骅">雷霄骅</h5></a><
</div>
</div>
</div>
</div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/wongainia158158/article/details/48627119,BlogCommendFromQuerySearch_10,index_10&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/wongainia158158/article/details/48627119" target="_blank" title="LibRTMP源代码分析10:处理消息">
<h4 class="text-truncate oneline" style="width: 552px;">
<em>LibRTMP</em><em>源代码分析</em>10:处理<em>消息</em> </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">09-21</span>
<span class="read-num hover-hide">
阅读数
303</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/wongainia158158/article/details/48627119" target="_blank" title="LibRTMP源代码分析10:处理消息">
<span class="desc oneline">函数RTMP_ClientPacket()是libRTMP中最重要的核心函数之一,主要完成各种消息的处理。/**&nbsp;*@brief根据接收到的消息类型的不同,作出不同的处理。&nbsp;*&nbsp;消息类型有协议控制消息...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/wongainia158158">来自: <span class="blog_title"> wongainia158158的博客</span></a>
</span>
</p>
</div>
</div><div class="recommend-item-box baiduSearch recommend-box-ident" data-track-view="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/tongjing524/article/details/38061317,searchFromBaidu1_4,-&quot;}" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/tongjing524/article/details/38061317,searchFromBaidu1_4,-&quot;}" data-flg="true"> <a href="https://blog.csdn.net/tongjing524/article/details/38061317" target="_blank"> <h4 class="text-truncate oneline"><em>LibRTMP</em><em>源代码分析</em>10:处理<em>消息</em>(Handle Message) - tong..._CSDN博客</h4> <div class="info-box d-flex align-content-center"> <p> <span class="date">11-17</span> </p> </div> <p class="content oneline">函数RTMP_ClientPacket()是libRTMP中最重要的核心函数之一,主要完成各种消息的处理。/**&nbsp;* @brief 根据接收到的消息类型的不同,作出不同的处理。...</p> </a> </div><div class="recommend-item-box baiduSearch recommend-box-ident" data-track-view="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/leixiaohua1020/article/details/12958747,searchFromBaidu1_5,-&quot;}" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/leixiaohua1020/article/details/12958747,searchFromBaidu1_5,-&quot;}" data-flg="true"> <a href="https://blog.csdn.net/leixiaohua1020/article/details/12958747" target="_blank"> <h4 class="text-truncate oneline">RTMPdump(<em>libRTMP</em>) <em>源代码分析</em> 8: 发送<em>消息</em>(Message) -..._CSDN博客</h4> <div class="info-box d-flex align-content-center"> <p> <span class="date">12-22</span> </p> </div> <p class="content oneline">RTMPdump (libRTMP) 源代码分析9: 接收消息 (Message) &nbsp;(接收视音频数据)...来自: wongainia158158的博客 实时直播协议:编译RTMPdump(libRTMP) 09-11 2689...</p> </a> </div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/leixiaohua1020/article/details/12952977,BlogCommendFromQuerySearch_11,index_11&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/leixiaohua1020/article/details/12952977" target="_blank" title="RTMPdump 源代码分析 1: main()函数">
<h4 class="text-truncate oneline" style="width: 552px;">
RTMPdump <em>源代码分析</em> 1: main()函数 </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">10-22</span>
<span class="read-num hover-hide">
阅读数
2</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/leixiaohua1020/article/details/12952977" target="_blank" title="RTMPdump 源代码分析 1: main()函数">
<span class="desc oneline">rtmpdump是一个用来处理RTMP流媒体的工具包,支持rtmp://,rtmpt://,rtmpe://,rtmpte://,andrtmps://等。之前在学习RTMP协议的时候,发现没有讲它源...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/leixiaohua1020">来自: <span class="blog_title"> 雷霄骅(leixiaohua1020)的专栏</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/qq_29214249/article/details/70859671,BlogCommendFromQuerySearch_12,index_12&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/qq_29214249/article/details/70859671" target="_blank" title="linux下基于libRTMP的接收流媒体的程序">
<h4 class="text-truncate oneline" style="width: 552px;">
linux下基于<em>libRTMP</em><em>接收</em>流媒体的程序 </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">04-27</span>
<span class="read-num hover-hide">
阅读数
647</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/qq_29214249/article/details/70859671" target="_blank" title="linux下基于libRTMP的接收流媒体的程序">
<span class="desc oneline">看了雷博的一篇关于rtmp的文章,学习记录以作备忘。使用librtmp接收RTMP流的函数执行流程图如下图:流程图中关键函数的作用如下所列:InitSockets():初始化SocketRTMP_Al...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/qq_29214249">来自: <span class="blog_title"> 狗尾巴草的一亩三分地儿</span></a>
</span>
</p>
</div>
</div><div class="recommend-item-box baiduSearch recommend-box-ident" data-track-view="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/tongjing524/article/details/38061235,searchFromBaidu1_6,-&quot;}" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/tongjing524/article/details/38061235,searchFromBaidu1_6,-&quot;}" data-flg="true"> <a href="https://blog.csdn.net/tongjing524/article/details/38061235" target="_blank"> <h4 class="text-truncate oneline"><em>LibRTMP</em><em>源代码分析</em>7:发送<em>消息</em>(Send Message) - tongjin..._CSDN博客</h4> <div class="info-box d-flex align-content-center"> <p> <span class="date">10-15</span> </p> </div> <p class="content oneline">RTMPdump(libRTMP) 源代码分析 9: 接收消息(Message)(接收视音频数据) leixiaohua...wongainia158158 09-21 330 在详细分析函数RTMP_SendPacket()之前,让我们...</p> </a> </div><div class="recommend-item-box baiduSearch recommend-box-ident" data-track-view="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/huangmindong/article/details/26574653,searchFromBaidu1_7,-&quot;}" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/huangmindong/article/details/26574653,searchFromBaidu1_7,-&quot;}" data-flg="true"> <a href="https://blog.csdn.net/huangmindong/article/details/26574653" target="_blank"> <h4 class="text-truncate oneline"><em>LibRTMP</em><em>源代码分析</em>8:发送<em>消息</em>(Send RTMPPacket) - huan..._CSDN博客</h4> <div class="info-box d-flex align-content-center"> <p> <span class="date">11-18</span> </p> </div> <p class="content oneline">Type; // Message type ID(1-7协议控制;8,9音视频;10以后为AMF编码消息)...RTMP协议分析及H.264打包原理 - 灿哥哥的博客 10-20 1.3万 RTMP是Real ...</p> </a> </div>
<div class="recommend-item-box recommend-ad-box"><div id="kp_box_61" data-pid="61" data-track-view="{&quot;mod&quot;:&quot;kp_popu_61-557&quot;,&quot;con&quot;:&quot;,,&quot;}" data-track-click="{&quot;mod&quot;:&quot;kp_popu_61-557&quot;,&quot;con&quot;:&quot;,,&quot;}"><div class="mediav_ad"><newsfeed class="newsfeed QIHOO__WEB__SO__1551757398853_387" id="QIHOO__WEB__SO__1551757398853_387" style="display:block;margin:0;padding:0;border:none;width:852px;height:60px;overflow-y:hidden;overflow-x:hidden;position:relative;text-align:left;"><info-div id="QIHOO__WEB__SO__1551757398853_387-info" style="zoom:1"><info-div class="QIHOO__WEB__SO__1551757398853_387 singleImage clk" data-href="https://s1.shucaixiaoshuo.com/s?type=2&amp;r=20&amp;mv_ref=blog.csdn.net&amp;enup=CAABPY1BbQgAAm1BjT0A&amp;mvid=MDUzMTc1NjU1MDczNzEwMDQwOTAwMTc&amp;bid=1332a9357011607e&amp;price=AAAAAFx98FUAAAAAAAkFYfbCPb53hma7xb/7vA==&amp;finfo=DAABCAABAAAAWQgAAgAAAEEEAAM/VekM2N9oUgAIAAIAAAADCgADVMGo/PTaNY4IAAQAAABDBgAGLbcKAAkAAAAAAAIQGAYACgAACAAOAAAAPAoADwAAAAAADbNtAA&amp;ugi=FcTgigEVyNtrTBUCFUAVXhUAABWYuYDUBRaACBXIARaA/efGldTBBQA&amp;uai=FaixkwIlAhUEFs7Vxcqr9oeeqQEV8gglner3xQclABUaFAAA&amp;ubi=FfakUBW2xMoCFfqluRcVxpPlWBUEFRwWsOmSnBcWztX3lI2/1MGpATQEFrDAkIAIJQYV0rymyQoVpgEVADbC3onUyZrJ3hoA&amp;clickid=0&amp;cpx=__OFFSET_X__&amp;cpy=__OFFSET_Y__&amp;cs=__EVENT_TIME_START__&amp;ce=__EVENT_TIME_END__&amp;csign2=8Ym2UWyboQ-=&amp;url=http%3A%2F%2Fxmx.zhechaigu.cn%2F" data-pv="https://s1.shucaixiaoshuo.com/s?type=1&amp;r=20&amp;tid=MDUzMTc1NjU1MDczNzEwMDQwOTAwMTc&amp;finfo=DAABCAABAAAAWQgAAgAAAEEEAAM/VekM2N9oUgAIAAIAAAADCgADVMGo/PTaNY4IAAQAAABDBgAGLbcKAAkAAAAAAAIQGAYACgAACAAOAAAAPAoADwAAAAAADbNtAA&amp;mv_ref=blog.csdn.net&amp;enup=CAABPY1BbQgAAm1BjT0A&amp;mvid=MDUzMTc1NjU1MDczNzEwMDQwOTAwMTc&amp;bid=1332a9357011607e&amp;ugi=FcTgigEVyNtrTBUCFUAVXhUAABWYuYDUBRaACBXIARaA/efGldTBBQA&amp;uai=FaixkwIlAhUEFs7Vxcqr9oeeqQEV8gglner3xQclABUaFAAA&amp;ubi=FfakUBW2xMoCFfqluRcVxpPlWBUEFRwWsOmSnBcWztX3lI2/1MGpATQEFrDAkIAIJQYV0rymyQoVpgEVADbC3onUyZrJ3hoA&amp;ds=2&amp;price=AAAAAFx98FUAAAAAAAkFYfbCPb53hma7xb/7vA==,https://max-l.mediav.com/rtb?type=2&amp;d=100&amp;b=1332a9357011607e&amp;p=2255956&amp;l=1136674&amp;s=2&amp;z=1&amp;ps=0&amp;w=AAAAAFx98FUAAAAAAAkFgPrXFHi94OGIfs0_lQ&amp;pt=1&amp;k=LRsRzQAAAAA=&amp;i=OHtJ5mVFZ9gT&amp;v=05317565507371004090017" data-clk="https://max-l.mediav.com/rtb?type=3&amp;d=100&amp;b=1332a9357011607e&amp;p=2255956&amp;l=1136674&amp;s=2&amp;ps=0&amp;k=LRsRzQAAAAA=&amp;i=OHtJ5mVFZ9gT&amp;v=05317565507371004090017&amp;x=__OFFSET_X__&amp;y=__OFFSET_Y__&amp;st=__EVENT_TIME_START__&amp;et=__EVENT_TIME_END__&amp;tc=&amp;turl=">
<info-div class="wrap">
<info-div class="singleImage-img singleImage-img-left">
<info-div class="img" style="background-image:url(https://s3m.milkjpg.com/galileo/657723-f8bb080369cfe31efb2c4d02bedbc5e9.gif)"><info-div class="ads-tag"></info-div></info-div>
</info-div>
<info-div class="singleImage-body singleImage-body-left">
<info-div class="singleImage-title">一个长期喝土蜂蜜的人,竟然变成了这样,再忙也要看一下</info-div>
<info-div class="singleImage-desc">科技 · 鹓鶵</info-div>
</info-div>
</info-div>
<info-div style="clear:both;"></info-div>
</info-div>
</info-div></newsfeed></div>
<script type="text/javascript" src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/mvf_news_feed.js"></script>
<script>
NEWS_FEED({
w: 852,
h : 60,
showid : 'GNKXx7',
placeholderId: "three_ad13",
inject : 'define',
define : {
imagePosition : 'left',
imageBorderRadius : 3,
imageWidth: 90,
imageHeight: 60,
imageFill : 'clip',
displayImage : true,
displayTitle : true,
titleFontSize: 18,
titleFontColor: '#000',
titleFontFamily : 'Lato,-apple-system,SF UI Text,Arial,PingFang SC,Hiragino Sans GB,Microsoft YaHei,WenQuanYi Micro Hei,sans-serif',
titleFontWeight: 'bold',
titlePaddingTop : 0,
titlePaddingRight : 0,
titlePaddingBottom : 5,
titlePaddingLeft : 16,
displayDesc : true,
descFontSize: 14,
descFontColor: '#8e959a',
descFontFamily : 'Microsoft Yahei',
paddingTop : 0,
paddingRight : 0,
paddingBottom : 0,
paddingLeft : 0,
backgroundColor: '#fff',
hoverColor: '#000'
}
})
</script></div></div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/chinabinlang/article/details/45690607,BlogCommendFromQuerySearch_13,index_13&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/chinabinlang/article/details/45690607" target="_blank" title="使用librtmp接收直播流和点播流并保存">
<h4 class="text-truncate oneline" style="width: 552px;">
使用<em>librtmp</em><em>接收</em>直播流和点播流并保存 </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">05-13</span>
<span class="read-num hover-hide">
阅读数
5143</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/chinabinlang/article/details/45690607" target="_blank" title="使用librtmp接收直播流和点播流并保存">
<span class="desc oneline">来自rtmpdump.crtmpdump可使用命令直播流rtmpdump.exe-osavename.flv-rrtmp://127.0.0.1/live/testlive-v点播流rtmpdump....</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/chinabinlang">来自: <span class="blog_title"> chinabinlang的专栏</span></a>
</span>
</p>
</div>
</div><div class="recommend-item-box baiduSearch recommend-box-ident" data-track-view="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/lcalqf/article/details/78849912,searchFromBaidu1_8,-&quot;}" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/lcalqf/article/details/78849912,searchFromBaidu1_8,-&quot;}" data-flg="true"> <a href="https://blog.csdn.net/lcalqf/article/details/78849912" target="_blank"> <h4 class="text-truncate oneline">rtmp源码分析 - lcalqf的专栏 - CSDN博客</h4> <div class="info-box d-flex align-content-center"> <p> <span class="date">11-17</span> </p> </div> <p class="content oneline">LibRTMP源代码分析5:建立网络连接 - wongainia158158的博客 09-21 557 服务...RTMPdump(libRTMP) 源代码分析 9: 接收消息(Message)(接收视音频数据) - 雷霄...</p> </a> </div><div class="recommend-item-box baiduSearch recommend-box-ident" data-track-view="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/leixiaohua1020/article/details/12954329,searchFromBaidu1_9,-&quot;}" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/leixiaohua1020/article/details/12954329,searchFromBaidu1_9,-&quot;}" data-flg="true"> <a href="https://blog.csdn.net/leixiaohua1020/article/details/12954329" target="_blank"> <h4 class="text-truncate oneline">RTMPdump(<em>libRTMP</em>)<em>源代码分析</em> 4: 连接第一步——握手(H..._CSDN博客</h4> <div class="info-box d-flex align-content-center"> <p> <span class="date">11-5</span> </p> </div> <p class="content oneline">RTMPdump (libRTMP) 源代码分析9: 接收消息 (Message) &nbsp;(接收视音频数据)...LibRTMP源代码分析5:建立网络连接 - wongainia158158的博客 09-21 549 服务...</p> </a> </div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/gengxt2003/article/details/51678565,BlogCommendFromQuerySearch_14,index_14&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/gengxt2003/article/details/51678565" target="_blank" title="用librtmp 接收数据">
<h4 class="text-truncate oneline" style="width: 552px;">
<em>librtmp</em> <em>接收</em>数据 </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">06-15</span>
<span class="read-num hover-hide">
阅读数
1752</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/gengxt2003/article/details/51678565" target="_blank" title="用librtmp 接收数据">
<span class="desc oneline">使用librtmp接收数据时,需要注意的几个问题。</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/gengxt2003">来自: <span class="blog_title"> 为了理想而奋斗</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/leixiaohua1020/article/details/42104893,BlogCommendFromBaidu_15,index_15&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/leixiaohua1020/article/details/42104893" target="_blank" title="最简单的基于librtmp的示例:接收(RTMP保存为FLV)">
<h4 class="text-truncate oneline" style="width: 552px;">
最简单的基于<em>librtmp</em>的示例:<em>接收</em>(RTMP保存为FLV) </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">12-25</span>
<span class="read-num hover-hide">
阅读数
2</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/leixiaohua1020/article/details/42104893" target="_blank" title="最简单的基于librtmp的示例:接收(RTMP保存为FLV)">
<span class="desc oneline">本文记录一个基于libRTMP的接收流媒体的程序:SimplestlibRTMPReceive。该程序可以将RTMP流保存成本地FLV文件。实际上本文记录的程序就是一个“精简”过的RTMPDump。R...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/leixiaohua1020">来自: <span class="blog_title"> 雷霄骅(leixiaohua1020)的专栏</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/mandagod/article/details/53495638,BlogCommendFromBaidu_16,index_16&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/mandagod/article/details/53495638" target="_blank" title="RTMPdump源码分析: 接收消息(Message)(接收视音频数据)(9)">
<h4 class="text-truncate oneline" style="width: 552px;">
RTMPdump源码分析: <em>接收</em><em>消息</em>(Message)(<em>接收</em>视音频数据)(9) </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">12-06</span>
<span class="read-num hover-hide">
阅读数
297</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/mandagod/article/details/53495638" target="_blank" title="RTMPdump源码分析: 接收消息(Message)(接收视音频数据)(9)">
<span class="desc oneline">函数调用结构图RTMPDump(libRTMP)的整体的函数调用结构图如下图所示。详细分析在这里在研究研究接收消息(Message)的源代码,接收消息最典型的应用就是接收视音频数据了,因为视频和音频分...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/mandagod">来自: <span class="blog_title"> mandagod的博客</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/NB_vol_1/article/details/59112170,BlogCommendFromBaidu_17,index_17&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/NB_vol_1/article/details/59112170" target="_blank" title="RTMP学习(十二)rtmpdump源码阅读(6)数据接收">
<h4 class="text-truncate oneline" style="width: 552px;">
RTMP学习(十二)rtmpdump源码阅读(6)数据<em>接收</em> </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">03-01</span>
<span class="read-num hover-hide">
阅读数
464</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/NB_vol_1/article/details/59112170" target="_blank" title="RTMP学习(十二)rtmpdump源码阅读(6)数据接收">
<span class="desc oneline">数据接收&nbsp;&nbsp;&nbsp;这一篇很重要,下面将结合chunk的结构来分析,数据是怎么样从网络上读取的,以及如何解析它们。chunk的结构 //rtmp消息块 typedefstructRTMPPacket { ...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/NB_vol_1">来自: <span class="blog_title"> NB_vol_1的专栏</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-ad-box"><div id="kp_box_62" data-pid="62" data-track-view="{&quot;mod&quot;:&quot;kp_popu_62-556&quot;,&quot;con&quot;:&quot;,,&quot;}" data-track-click="{&quot;mod&quot;:&quot;kp_popu_62-556&quot;,&quot;con&quot;:&quot;,,&quot;}"><div class="mediav_ad"><newsfeed class="newsfeed QIHOO__WEB__SO__1551757398904_111" id="QIHOO__WEB__SO__1551757398904_111" style="display:block;margin:0;padding:0;border:none;width:852px;height:60px;overflow-y:hidden;overflow-x:hidden;position:relative;text-align:left;"><info-div id="QIHOO__WEB__SO__1551757398904_111-info" style="zoom:1"><info-div class="QIHOO__WEB__SO__1551757398904_111 singleImage clk" data-href="https://s1.shucaixiaoshuo.com/s?type=2&amp;r=20&amp;mv_ref=blog.csdn.net&amp;enup=CAABPY1BbQgAAm1BjT0A&amp;mvid=MDUzMTc1NjU1MDczNzEwMDQwOTAwMTc&amp;bid=1332a93543ec52ae&amp;price=AAAAAFx98FUAAAAAAAn83CubVI0XshrvXX6lng==&amp;finfo=DAABCAABAAAAtAgAAgAAAEUEAAM/ZWfHcBXuKAAIAAIAAAADCgADXSayVHj5o+8IAAQAAABFBgAGLbcKAAkAAAAAAAIQFAYACgAACAAOAAAAPwoADwAAAAAAG3dAAA&amp;ugi=FcTgigEVyNtrTBUCFUAVXhUAABWYuYDUBRaACBXIARaA/efGldTBBQA&amp;uai=FeTGlAIlAhUEFs7V39CEidCmugEV8ggljb7zZyUAFRoUAAA&amp;ubi=FbrKTxWU/skCFYzythcVlLXgWBUEFRwWuOjylRcWztWJn5iV2aa6ATQEFqjAkIAIJQYV4PDJtAMVpgEVADbngrbn8Mu1/VwA&amp;clickid=0&amp;cpx=__OFFSET_X__&amp;cpy=__OFFSET_Y__&amp;cs=__EVENT_TIME_START__&amp;ce=__EVENT_TIME_END__&amp;csign2=hAJ3LqJQ7-I=&amp;url=http%3A%2F%2Ffm.yanganghao.cn%2F" data-pv="https://s1.shucaixiaoshuo.com/s?type=1&amp;r=20&amp;tid=MDUzMTc1NjU1MDczNzEwMDQwOTAwMTc&amp;finfo=DAABCAABAAAAtAgAAgAAAEUEAAM/ZWfHcBXuKAAIAAIAAAADCgADXSayVHj5o+8IAAQAAABFBgAGLbcKAAkAAAAAAAIQFAYACgAACAAOAAAAPwoADwAAAAAAG3dAAA&amp;mv_ref=blog.csdn.net&amp;enup=CAABPY1BbQgAAm1BjT0A&amp;mvid=MDUzMTc1NjU1MDczNzEwMDQwOTAwMTc&amp;bid=1332a93543ec52ae&amp;ugi=FcTgigEVyNtrTBUCFUAVXhUAABWYuYDUBRaACBXIARaA/efGldTBBQA&amp;uai=FeTGlAIlAhUEFs7V39CEidCmugEV8ggljb7zZyUAFRoUAAA&amp;ubi=FbrKTxWU/skCFYzythcVlLXgWBUEFRwWuOjylRcWztWJn5iV2aa6ATQEFqjAkIAIJQYV4PDJtAMVpgEVADbngrbn8Mu1/VwA&amp;ds=2&amp;price=AAAAAFx98FUAAAAAAAn83CubVI0XshrvXX6lng==,https://max-l.mediav.com/rtb?type=2&amp;d=100&amp;b=1332a93543ec52ae&amp;p=2265522&amp;l=1136674&amp;s=2&amp;z=1&amp;ps=0&amp;w=AAAAAFx98FUAAAAAAAn9AyP2hUIrF-N4j9T1iw&amp;pt=1&amp;k=h95JOgAAAAA=&amp;i=xY5PiBVFZ9hk&amp;v=05317565507371004090017" data-clk="https://max-l.mediav.com/rtb?type=3&amp;d=100&amp;b=1332a93543ec52ae&amp;p=2265522&amp;l=1136674&amp;s=2&amp;ps=0&amp;k=h95JOgAAAAA=&amp;i=xY5PiBVFZ9hk&amp;v=05317565507371004090017&amp;x=__OFFSET_X__&amp;y=__OFFSET_Y__&amp;st=__EVENT_TIME_START__&amp;et=__EVENT_TIME_END__&amp;tc=&amp;turl=">
<info-div class="wrap">
<info-div class="singleImage-img singleImage-img-left">
<info-div class="img" style="background-image:url(https://s3m.milkjpg.com/galileo/651933-b2a9c3fea716f43f25f7267ebdbc79ff.gif)"><info-div class="ads-tag"></info-div></info-div>
</info-div>
<info-div class="singleImage-body singleImage-body-left">
<info-div class="singleImage-title">千万不要再乱喝蜂蜜了,记者亲赴深山,揭露背后惊人黑幕!</info-div>
<info-div class="singleImage-desc">树米 · 鹓鶵</info-div>
</info-div>
</info-div>
<info-div style="clear:both;"></info-div>
</info-div>
</info-div></newsfeed></div>
<script type="text/javascript" src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/mvf_news_feed.js"></script>
<script>
NEWS_FEED({
w: 852,
h : 60,
showid : 'Afihld',
placeholderId: "three_ad18",
inject : 'define',
define : {
imagePosition : 'left',
imageBorderRadius : 3,
imageWidth: 90,
imageHeight: 60,
imageFill : 'clip',
displayImage : true,
displayTitle : true,
titleFontSize: 18,
titleFontColor: '#000',
titleFontFamily : 'Lato,-apple-system,SF UI Text,Arial,PingFang SC,Hiragino Sans GB,Microsoft YaHei,WenQuanYi Micro Hei,sans-serif',
titleFontWeight: 'bold',
titlePaddingTop : 0,
titlePaddingRight : 0,
titlePaddingBottom : 5,
titlePaddingLeft : 16,
displayDesc : true,
descFontSize: 14,
descFontColor: '#8e959a',
descFontFamily : 'Microsoft Yahei',
paddingTop : 0,
paddingRight : 0,
paddingBottom : 0,
paddingLeft : 0,
backgroundColor: '#fff',
hoverColor: '#000'
}
})
</script></div></div>
<div class="recommend-item-box recommend-box-ident recommend-download-box clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://download.csdn.net/download/b35838715/6440845,BlogCommendFromBaidu_18,index_18&quot;}" data-flg="true">
<a href="https://download.csdn.net/download/b35838715/6440845" target="_blank">
<div class="content clearfix">
<div class="">
<h4 class="text-truncate oneline clearfix">
rtmp源数据抓取并保存 </h4>
<span class="data float-right">10-23</span>
</div>
<div class="desc oneline">
非常适合学习RTMP协议及加解密的朋友 优化了之前发布的rtmp client程序 1 使用hmac进行三次握手,解决不发送h264流的问题 2 支持 Aggreagte支持 3 加入心跳时间,同步服 </div>
<span class="type-show type-show-download">下载</span>
</div>
</a>
</div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/leixiaohua1020/article/details/12971635,BlogCommendFromBaidu_19,index_19&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/leixiaohua1020/article/details/12971635" target="_blank" title="RTMPdump(libRTMP) 源代码分析 9: 接收消息(Message)(接收视音频数据)">
<h4 class="text-truncate oneline" style="width: 552px;">
RTMPdump(<em>libRTMP</em><em>源代码分析</em> 9: <em>接收</em><em>消息</em>(Message)(<em>接收</em>视音频数据) </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">10-23</span>
<span class="read-num hover-hide">
阅读数
1</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/leixiaohua1020/article/details/12971635" target="_blank" title="RTMPdump(libRTMP) 源代码分析 9: 接收消息(Message)(接收视音频数据)">
<span class="desc oneline">前一篇文章分析了RTMPdump(libRTMP)的发送消息(Message)方面的源代码:RTMPdump(libRTMP)源代码分析8:发送消息(Message)在这里在研究研究接收消息(Mess...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/leixiaohua1020">来自: <span class="blog_title"> 雷霄骅(leixiaohua1020)的专栏</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/huangmindong/article/details/26574653,BlogCommendFromQuerySearch_20,index_20&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/huangmindong/article/details/26574653" target="_blank" title="LibRTMP源代码分析8:发送消息(Send RTMPPacket)">
<h4 class="text-truncate oneline" style="width: 552px;">
<em>LibRTMP</em><em>源代码分析</em>8:发送<em>消息</em>(Send RTMPPacket) </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">05-22</span>
<span class="read-num hover-hide">
阅读数
1739</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/huangmindong/article/details/26574653" target="_blank" title="LibRTMP源代码分析8:发送消息(Send RTMPPacket)">
<span class="desc oneline">在详细分析函数RTMP_SendPacket()之前,让我们来看看RTMPPacket结构体的定义:typedefstructRTMPPacket{&nbsp;&nbsp;&nbsp;&nbsp;uint8_t&nbsp;m_headerType;/...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/huangmindong">来自: <span class="blog_title"> huangmindong的专栏</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/byxdaz/article/details/53993791,BlogCommendFromQuerySearch_21,index_21&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/byxdaz/article/details/53993791" target="_blank" title="librtmp获取视频流和音频流1">
<h4 class="text-truncate oneline" style="width: 552px;">
<em>librtmp</em>获取视频流和音频流1 </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">01-03</span>
<span class="read-num hover-hide">
阅读数
3444</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/byxdaz/article/details/53993791" target="_blank" title="librtmp获取视频流和音频流1">
<span class="desc oneline">libRTMP从RTMP包中获取音频和视频数据。</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/byxdaz">来自: <span class="blog_title"> 深之JohnChen的专栏</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/xiapang009/article/details/79626327,BlogCommendFromQuerySearch_22,index_22&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/xiapang009/article/details/79626327" target="_blank" title="librtmp 时间戳超过 0xffffff时,crtmpserver掉连接">
<h4 class="text-truncate oneline" style="width: 552px;">
<em>librtmp</em> 时间戳超过 0xffffff时,crtmpserver掉连接 </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">03-20</span>
<span class="read-num hover-hide">
阅读数
122</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/xiapang009/article/details/79626327" target="_blank" title="librtmp 时间戳超过 0xffffff时,crtmpserver掉连接">
<span class="desc oneline">最近在IPCamer上做rtmp推流,遇到很多问题,究其因,对协议本身不熟悉。遇到问题,当使用librtmp,发送实时码流时,4.66小时后即会掉连接。网上有帖子讲解是什么原因造成的,但始终没找到一个...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/xiapang009">来自: <span class="blog_title"> xiapang009的专栏</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-ad-box"><div id="kp_box_63" data-pid="63" data-track-view="{&quot;mod&quot;:&quot;kp_popu_63-555&quot;,&quot;con&quot;:&quot;,,&quot;}" data-track-click="{&quot;mod&quot;:&quot;kp_popu_63-555&quot;,&quot;con&quot;:&quot;,,&quot;}"><div class="mediav_ad"><newsfeed class="newsfeed QIHOO__WEB__SO__1551757398975_12" id="QIHOO__WEB__SO__1551757398975_12" style="display:block;margin:0;padding:0;border:none;width:852px;height:60px;overflow-y:hidden;overflow-x:hidden;position:relative;text-align:left;"><info-div id="QIHOO__WEB__SO__1551757398975_12-info" style="zoom:1"><info-div class="QIHOO__WEB__SO__1551757398975_12 singleImage clk" data-href="https://s1.shucaixiaoshuo.com/s?type=2&amp;r=20&amp;mv_ref=blog.csdn.net&amp;enup=CAABPY1BbQgAAm1BjT0A&amp;mvid=MDUzMTc1NjU1MDczNzEwMDQwOTAwMTc&amp;bid=1332a9357011607e&amp;price=AAAAAFx98FUAAAAAAAkFyLr/W1v8Y/nEguLu0w==&amp;finfo=DAABCAABAAAATAgAAgAAAEQEAAM/Ue3xh4E5fgAIAAIAAAADCgADVMGyFAhbEUcIAAQAAABFBgAGLbcKAAkAAAAAAAIQGAYACgAACAAOAAAAPAoADwAAAAAAC5moAA&amp;ugi=FcTgigEVyNtrTBUCFUAVXhUAABWYuYDUBRaACBXIARaA/efGldTBBQA&amp;uai=FaixkwIlAhUEFs7Vxcqr9oeeqQEV8gglner3xQclABUaFAAA&amp;ubi=FbrKTxWU/skCFYzythcVlLXgWBUEFRwWuOjylRcWztWM/JaF2cGpATQGFrDAkIAIJQYV+vORggsVpgEVADbngrbn8Mu1/VwA&amp;clickid=0&amp;cpx=__OFFSET_X__&amp;cpy=__OFFSET_Y__&amp;cs=__EVENT_TIME_START__&amp;ce=__EVENT_TIME_END__&amp;csign2=hAJ3LqJQ7-I=&amp;url=http%3A%2F%2Ffm.yanganghao.cn%2F" data-pv="https://s1.shucaixiaoshuo.com/s?type=1&amp;r=20&amp;tid=MDUzMTc1NjU1MDczNzEwMDQwOTAwMTc&amp;finfo=DAABCAABAAAATAgAAgAAAEQEAAM/Ue3xh4E5fgAIAAIAAAADCgADVMGyFAhbEUcIAAQAAABFBgAGLbcKAAkAAAAAAAIQGAYACgAACAAOAAAAPAoADwAAAAAAC5moAA&amp;mv_ref=blog.csdn.net&amp;enup=CAABPY1BbQgAAm1BjT0A&amp;mvid=MDUzMTc1NjU1MDczNzEwMDQwOTAwMTc&amp;bid=1332a9357011607e&amp;ugi=FcTgigEVyNtrTBUCFUAVXhUAABWYuYDUBRaACBXIARaA/efGldTBBQA&amp;uai=FaixkwIlAhUEFs7Vxcqr9oeeqQEV8gglner3xQclABUaFAAA&amp;ubi=FbrKTxWU/skCFYzythcVlLXgWBUEFRwWuOjylRcWztWM/JaF2cGpATQGFrDAkIAIJQYV+vORggsVpgEVADbngrbn8Mu1/VwA&amp;ds=3&amp;price=AAAAAFx98FUAAAAAAAkFyLr/W1v8Y/nEguLu0w==,https://max-l.mediav.com/rtb?type=2&amp;d=100&amp;b=1332a9357011607e&amp;p=2255956&amp;l=1136674&amp;s=3&amp;z=1&amp;ps=0&amp;w=AAAAAFx98FUAAAAAAAkF57RqdarIIdF8eOpFXQ&amp;pt=1&amp;k=LRsRzQAAAAA=&amp;i=OHpJ5mVFZ9hd&amp;v=05317565507371004090017" data-clk="https://max-l.mediav.com/rtb?type=3&amp;d=100&amp;b=1332a9357011607e&amp;p=2255956&amp;l=1136674&amp;s=3&amp;ps=0&amp;k=LRsRzQAAAAA=&amp;i=OHpJ5mVFZ9hd&amp;v=05317565507371004090017&amp;x=__OFFSET_X__&amp;y=__OFFSET_Y__&amp;st=__EVENT_TIME_START__&amp;et=__EVENT_TIME_END__&amp;tc=&amp;turl=">
<info-div class="wrap">
<info-div class="singleImage-img singleImage-img-left">
<info-div class="img" style="background-image:url(https://s3m.milkjpg.com/galileo/651933-b2a9c3fea716f43f25f7267ebdbc79ff.gif)"><info-div class="ads-tag"></info-div></info-div>
</info-div>
<info-div class="singleImage-body singleImage-body-left">
<info-div class="singleImage-title">千万不要再乱喝蜂蜜了,记者亲赴深山,揭露背后惊人黑幕!</info-div>
<info-div class="singleImage-desc">树米 · 鹓鶵</info-div>
</info-div>
</info-div>
<info-div style="clear:both;"></info-div>
</info-div>
</info-div></newsfeed></div>
<script type="text/javascript" src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/mvf_news_feed.js"></script>
<script>
NEWS_FEED({
w: 852,
h : 60,
showid : 'GNKXx7',
placeholderId: "three_ad23",
inject : 'define',
define : {
imagePosition : 'left',
imageBorderRadius : 3,
imageWidth: 90,
imageHeight: 60,
imageFill : 'clip',
displayImage : true,
displayTitle : true,
titleFontSize: 18,
titleFontColor: '#000',
titleFontFamily : 'Lato,-apple-system,SF UI Text,Arial,PingFang SC,Hiragino Sans GB,Microsoft YaHei,WenQuanYi Micro Hei,sans-serif',
titleFontWeight: 'bold',
titlePaddingTop : 0,
titlePaddingRight : 0,
titlePaddingBottom : 5,
titlePaddingLeft : 16,
displayDesc : true,
descFontSize: 14,
descFontColor: '#8e959a',
descFontFamily : 'Microsoft Yahei',
paddingTop : 0,
paddingRight : 0,
paddingBottom : 0,
paddingLeft : 0,
backgroundColor: '#fff',
hoverColor: '#000'
}
})
</script></div></div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/wishfly/article/details/74583491,BlogCommendFromQuerySearch_23,index_23&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/wishfly/article/details/74583491" target="_blank" title="librtmp接收flv流中提取h264码流:根据多个资料汇总">
<h4 class="text-truncate oneline" style="width: 552px;">
<em>librtmp</em><em>接收</em>flv流中提取h264码流:根据多个资料汇总 </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">07-06</span>
<span class="read-num hover-hide">
阅读数
1511</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/wishfly/article/details/74583491" target="_blank" title="librtmp接收flv流中提取h264码流:根据多个资料汇总">
<span class="desc oneline">rtmpdump可以下载rtmp流并保存成flv文件。如果要对流中的音频或视频单独处理,需要根据flv协议分别提取。简单修改rtmpdump代码,增加相应功能。1提取音频:rtmpdump程序在Dow...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/wishfly">来自: <span class="blog_title"> tianyu的专栏</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/tongjing524/article/details/38061317,BlogCommendFromQuerySearch_24,index_24&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/tongjing524/article/details/38061317" target="_blank" title="LibRTMP源代码分析10:处理消息(Handle Message)">
<h4 class="text-truncate oneline" style="width: 552px;">
<em>LibRTMP</em><em>源代码分析</em>10:处理<em>消息</em>(Handle Message) </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">07-23</span>
<span class="read-num hover-hide">
阅读数
1623</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/tongjing524/article/details/38061317" target="_blank" title="LibRTMP源代码分析10:处理消息(Handle Message)">
<span class="desc oneline">转载自:http://nkwavelet.blog.163.com/blog/static/227756038201412473745809/</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/tongjing524">来自: <span class="blog_title"> tongjing524的专栏</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-box-ident recommend-download-box clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://download.csdn.net/download/leixiaohua1020/8291757,BlogCommendFromQuerySearch_25,index_25&quot;}" data-flg="true">
<a href="https://download.csdn.net/download/leixiaohua1020/8291757" target="_blank">
<div class="content clearfix">
<div class="">
<h4 class="text-truncate oneline clearfix">
最简单的基于<em>libRTMP</em>的示例 </h4>
<span class="data float-right">12-23</span>
</div>
<div class="desc oneline">
本工程包含了LibRTMP的使用示例,包含如下子工程:
simplest_librtmp_receive: 接收RTMP流媒体并在本地保存成FLV格式的文件。
simplest_librtmp_send_flv: 将FLV格式的视音频文件... </div>
<span class="type-show type-show-download">下载</span>
</div>
</a>
</div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/weixin_36983723/article/details/83542415,BlogCommendFromQuerySearch_26,index_26&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/weixin_36983723/article/details/83542415" target="_blank" title="基于librtmp的直播推流方案">
<h4 class="text-truncate oneline" style="width: 552px;">
基于<em>librtmp</em>的直播推流方案 </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">10-30</span>
<span class="read-num hover-hide">
阅读数
191</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/weixin_36983723/article/details/83542415" target="_blank" title="基于librtmp的直播推流方案">
<span class="desc oneline">最近在做关于rtmp直播推流的项目,本身对rtmp也是一窍不通的,关于连接封装方面的资料也是看了很多,软件实现还是没有什么头绪,在看了雷神的基于librtmp的例子后(https://blog.csd...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/weixin_36983723">来自: <span class="blog_title"> weixin_36983723的博客</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/fireroll/article/details/18942873,BlogCommendFromQuerySearch_27,index_27&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/fireroll/article/details/18942873" target="_blank" title="RTMPDump(libRTMP) 源代码分析">
<h4 class="text-truncate oneline" style="width: 552px;">
RTMPDump(<em>libRTMP</em><em>源代码分析</em> </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">02-05</span>
<span class="read-num hover-hide">
阅读数
2461</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/fireroll/article/details/18942873" target="_blank" title="RTMPDump(libRTMP) 源代码分析">
<span class="desc oneline">之前分析了一下RTMPDump的Main()函数,其中获取RTMP流媒体数据很重要的前提是RTMP的URL的解析。如果没有这一步,那程序在强大也是白搭。现在来解析一下这个函数吧:RTMP_ParseU...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/fireroll">来自: <span class="blog_title"> 北雨南萍</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-ad-box"><div id="kp_box_64" data-pid="64" data-track-view="{&quot;mod&quot;:&quot;kp_popu_64-81&quot;,&quot;con&quot;:&quot;,,&quot;}" data-track-click="{&quot;mod&quot;:&quot;kp_popu_64-81&quot;,&quot;con&quot;:&quot;,,&quot;}"><div class="mediav_ad"><newsfeed class="newsfeed QIHOO__WEB__SO__1551757399033_760" id="QIHOO__WEB__SO__1551757399033_760" style="display:block;margin:0;padding:0;border:none;width:852px;height:60px;overflow-y:hidden;overflow-x:hidden;position:relative;text-align:left;"><info-div id="QIHOO__WEB__SO__1551757399033_760-info" style="zoom:1"><info-div class="QIHOO__WEB__SO__1551757399033_760 singleImage clk" data-href="https://s1.shucaixiaoshuo.com/s?type=2&amp;r=20&amp;mv_ref=blog.csdn.net&amp;enup=CAABPY1BbQgAAm1BjT0A&amp;mvid=MDUzMTc1NjU1MDczNzEwMDQwOTAwMTc&amp;bid=1332a93543ec52ae&amp;price=AAAAAFx98FUAAAAAAAn9bAY80ijsWsjfFuJmNQ==&amp;finfo=DAABCAABAAAAswgAAgAAAGUEAAM/W+zBxfUqhAAIAAIAAAADCgADXSbEhRBXCAAIAAQAAABpBgAGLbcKAAkAAAAAAAIQFAYACgAACAAOAAAAPwoADwAAAAAAG1AwAA&amp;ugi=FcTgigEVyNtrTBUCFUAVXhUAABWYuYDUBRaACBXIARaA/efGldTBBQA&amp;uai=FeTGlAIlAhUEFs7V39CEidCmugEV8ggljb7zZyUAFRoUAAA&amp;ubi=FfSAThXMlsICFebStBcV1PvaWBUEFRwWkrvwkBcWztWz7auh4qa6ATQGFqjAkIAIJQYV0c6exwkVvgUVADaf7sHm/rWoqXQA&amp;clickid=0&amp;cpx=__OFFSET_X__&amp;cpy=__OFFSET_Y__&amp;cs=__EVENT_TIME_START__&amp;ce=__EVENT_TIME_END__&amp;csign2=QzWflBYie8G=&amp;url=http%3A%2F%2Fvip.qqqssp.top%2F" data-pv="https://s1.shucaixiaoshuo.com/s?type=1&amp;r=20&amp;tid=MDUzMTc1NjU1MDczNzEwMDQwOTAwMTc&amp;finfo=DAABCAABAAAAswgAAgAAAGUEAAM/W+zBxfUqhAAIAAIAAAADCgADXSbEhRBXCAAIAAQAAABpBgAGLbcKAAkAAAAAAAIQFAYACgAACAAOAAAAPwoADwAAAAAAG1AwAA&amp;mv_ref=blog.csdn.net&amp;enup=CAABPY1BbQgAAm1BjT0A&amp;mvid=MDUzMTc1NjU1MDczNzEwMDQwOTAwMTc&amp;bid=1332a93543ec52ae&amp;ugi=FcTgigEVyNtrTBUCFUAVXhUAABWYuYDUBRaACBXIARaA/efGldTBBQA&amp;uai=FeTGlAIlAhUEFs7V39CEidCmugEV8ggljb7zZyUAFRoUAAA&amp;ubi=FfSAThXMlsICFebStBcV1PvaWBUEFRwWkrvwkBcWztWz7auh4qa6ATQGFqjAkIAIJQYV0c6exwkVvgUVADaf7sHm/rWoqXQA&amp;ds=3&amp;price=AAAAAFx98FUAAAAAAAn9bAY80ijsWsjfFuJmNQ==,https://max-l.mediav.com/rtb?type=2&amp;d=100&amp;b=1332a93543ec52ae&amp;p=2265522&amp;l=1136674&amp;s=3&amp;z=1&amp;ps=0&amp;w=AAAAAFx98FUAAAAAAAn9lLFbB1lbCG4-ndHByA&amp;pt=1&amp;k=h95JOgAAAAA=&amp;i=xYkPiBVFZ9gJ&amp;v=05317565507371004090017" data-clk="https://max-l.mediav.com/rtb?type=3&amp;d=100&amp;b=1332a93543ec52ae&amp;p=2265522&amp;l=1136674&amp;s=3&amp;ps=0&amp;k=h95JOgAAAAA=&amp;i=xYkPiBVFZ9gJ&amp;v=05317565507371004090017&amp;x=__OFFSET_X__&amp;y=__OFFSET_Y__&amp;st=__EVENT_TIME_START__&amp;et=__EVENT_TIME_END__&amp;tc=&amp;turl=">
<info-div class="wrap">
<info-div class="singleImage-img singleImage-img-left">
<info-div class="img" style="background-image:url(https://s3m.milkjpg.com/galileo/639034-eb8e829aa15cdc57f1a4d2803f397e8e.gif)"><info-div class="ads-tag"></info-div></info-div>
</info-div>
<info-div class="singleImage-body singleImage-body-left">
<info-div class="singleImage-title">科技园25岁美女手机做这个,1年存款吓呆父母!!</info-div>
<info-div class="singleImage-desc">中泰投资 · 鹓鶵</info-div>
</info-div>
</info-div>
<info-div style="clear:both;"></info-div>
</info-div>
</info-div></newsfeed></div>
<script type="text/javascript" src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/mvf_news_feed.js"></script>
<script>
NEWS_FEED({
w: 852,
h : 60,
showid : 'Afihld',
placeholderId: "three_ad28",
inject : 'define',
define : {
imagePosition : 'left',
imageBorderRadius : 3,
imageWidth: 90,
imageHeight: 60,
imageFill : 'clip',
displayImage : true,
displayTitle : true,
titleFontSize: 18,
titleFontColor: '#000',
titleFontFamily : 'Lato,-apple-system,SF UI Text,Arial,PingFang SC,Hiragino Sans GB,Microsoft YaHei,WenQuanYi Micro Hei,sans-serif',
titleFontWeight: 'bold',
titlePaddingTop : 0,
titlePaddingRight : 0,
titlePaddingBottom : 5,
titlePaddingLeft : 16,
displayDesc : true,
descFontSize: 14,
descFontColor: '#8e959a',
descFontFamily : 'Microsoft Yahei',
paddingTop : 0,
paddingRight : 0,
paddingBottom : 0,
paddingLeft : 0,
backgroundColor: '#fff',
hoverColor: '#000'
}
})
</script></div></div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/wongainia158158/article/details/48624409,BlogCommendFromQuerySearch_28,index_28&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/wongainia158158/article/details/48624409" target="_blank" title="LibRTMP源代码分析1">
<h4 class="text-truncate oneline" style="width: 552px;">
<em>LibRTMP</em><em>源代码分析</em>1 </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">09-21</span>
<span class="read-num hover-hide">
阅读数
439</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/wongainia158158/article/details/48624409" target="_blank" title="LibRTMP源代码分析1">
<span class="desc oneline">1.&nbsp;背景知识&nbsp;&nbsp;RTMP(RealTimeMessagingProtocol)实时消息传送协议是Adobe&nbsp;Systems公司为Flash播放器和服务器之间音频、视频和数据传输开发的开放协议。RTM...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/wongainia158158">来自: <span class="blog_title"> wongainia158158的博客</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/tongjing524/article/details/38061083,BlogCommendFromQuerySearch_29,index_29&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/tongjing524/article/details/38061083" target="_blank" title="LibRTMP源代码分析1:概述">
<h4 class="text-truncate oneline" style="width: 552px;">
<em>LibRTMP</em><em>源代码分析</em>1:概述 </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">07-23</span>
<span class="read-num hover-hide">
阅读数
652</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/tongjing524/article/details/38061083" target="_blank" title="LibRTMP源代码分析1:概述">
<span class="desc oneline">此系列文章主要总结一下我在学习RTMP协议以及LibRTMP源代码过程中积累的经验。&nbsp;详细分析了RTMP源代码是如何与RTMP协议对应起来的,使得代码与协议有明确的对应关系,便于理解协议和使用LibR...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/tongjing524">来自: <span class="blog_title"> tongjing524的专栏</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/wongainia158158/article/details/48625123,BlogCommendFromQuerySearch_30,index_30&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/wongainia158158/article/details/48625123" target="_blank" title="LibRTMP源代码分析2">
<h4 class="text-truncate oneline" style="width: 552px;">
<em>LibRTMP</em><em>源代码分析</em>2 </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">09-21</span>
<span class="read-num hover-hide">
阅读数
305</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/wongainia158158/article/details/48625123" target="_blank" title="LibRTMP源代码分析2">
<span class="desc oneline">获取RTMP流媒体数据很重要的前提是RTMP的URL的解析,首先回顾一下
RTMP的URL的格
式:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url=“rtmp://pub1.guoshi.com:1935
/pushstation/2...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/wongainia158158">来自: <span class="blog_title"> wongainia158158的博客</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/wongainia158158/article/details/48630207,BlogCommendFromQuerySearch_31,index_31&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/wongainia158158/article/details/48630207" target="_blank" title="LibRTMP源代码分析3">
<h4 class="text-truncate oneline" style="width: 552px;">
<em>LibRTMP</em><em>源代码分析</em>3 </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">09-21</span>
<span class="read-num hover-hide">
阅读数
263</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/wongainia158158/article/details/48630207" target="_blank" title="LibRTMP源代码分析3">
<span class="desc oneline">AMF协议是ActionMessageFormat协议的简称,AMF协议是Adobe公司的协议,主要用于数据交互和远程过程调用,在功能上与WebService相当,但AMF与WebService中的x...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/wongainia158158">来自: <span class="blog_title"> wongainia158158的博客</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/wongainia158158/article/details/48625103,BlogCommendFromQuerySearch_32,index_32&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/wongainia158158/article/details/48625103" target="_blank" title="LibRTMP源代码分析4">
<h4 class="text-truncate oneline" style="width: 552px;">
<em>LibRTMP</em><em>源代码分析</em>4 </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">09-21</span>
<span class="read-num hover-hide">
阅读数
277</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/wongainia158158/article/details/48625103" target="_blank" title="LibRTMP源代码分析4">
<span class="desc oneline">在RTMP客户端和服务器端网络层连接成功之后,第一件事情就是RTMP的握手。至于为什么要握手,协议本身没有太多的描述,我理解的握手目的:握手的主要目的就是让客户端和服务器端互相打个招呼,其主要内容应该...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/wongainia158158">来自: <span class="blog_title"> wongainia158158的博客</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-ad-box"><div id="kp_box_65" data-pid="65" data-track-view="{&quot;mod&quot;:&quot;kp_popu_65-84&quot;,&quot;con&quot;:&quot;,,&quot;}" data-track-click="{&quot;mod&quot;:&quot;kp_popu_65-84&quot;,&quot;con&quot;:&quot;,,&quot;}"><div class="mediav_ad"><newsfeed class="newsfeed QIHOO__WEB__SO__1551757399045_886" id="QIHOO__WEB__SO__1551757399045_886" style="display:block;margin:0;padding:0;border:none;width:852px;height:60px;overflow-y:hidden;overflow-x:hidden;position:relative;text-align:left;"><info-div id="QIHOO__WEB__SO__1551757399045_886-info" style="zoom:1"><info-div class="QIHOO__WEB__SO__1551757399045_886 singleImage clk" data-href="https://s1.shucaixiaoshuo.com/s?type=2&amp;r=20&amp;mv_ref=blog.csdn.net&amp;enup=CAABPY1BbQgAAm1BjT0A&amp;mvid=MDUzMTc1NjU1MDczNzEwMDQwOTAwMTc&amp;bid=1332a9357011607e&amp;price=AAAAAFx98FUAAAAAAAkGM5Hiqc6Ein5cK/0acw==&amp;finfo=DAABCAABAAAANAgAAgAAAGEEAAM/QSWw1zwwHAAIAAIAAAADCgADVMG7Lba0eUEIAAQAAABkBgAGLbcKAAkAAAAAAAIQGAYACgAACAAOAAAAPAoADwAAAAAACAKZAA&amp;ugi=FcTgigEVyNtrTBUCFUAVXhUAABWYuYDUBRaACBXIARaA/efGldTBBQA&amp;uai=FaixkwIlAhUEFs7Vxcqr9oeeqQEV8gglner3xQclABUaFAAA&amp;ubi=FfaUURWIiMoCFe6etxcVoNPgWBUEFRwW5s6XnxcWztWh46DL3cGpATQIFrDAkIAIJQYVxJiv4w8VvgUVADaY4I7a6qL22cEBAA&amp;clickid=0&amp;cpx=__OFFSET_X__&amp;cpy=__OFFSET_Y__&amp;cs=__EVENT_TIME_START__&amp;ce=__EVENT_TIME_END__&amp;csign2=iM1nJ4mUj2d=&amp;url=http%3A%2F%2Faaa.wfkge.cn%2F" data-pv="https://s1.shucaixiaoshuo.com/s?type=1&amp;r=20&amp;tid=MDUzMTc1NjU1MDczNzEwMDQwOTAwMTc&amp;finfo=DAABCAABAAAANAgAAgAAAGEEAAM/QSWw1zwwHAAIAAIAAAADCgADVMG7Lba0eUEIAAQAAABkBgAGLbcKAAkAAAAAAAIQGAYACgAACAAOAAAAPAoADwAAAAAACAKZAA&amp;mv_ref=blog.csdn.net&amp;enup=CAABPY1BbQgAAm1BjT0A&amp;mvid=MDUzMTc1NjU1MDczNzEwMDQwOTAwMTc&amp;bid=1332a9357011607e&amp;ugi=FcTgigEVyNtrTBUCFUAVXhUAABWYuYDUBRaACBXIARaA/efGldTBBQA&amp;uai=FaixkwIlAhUEFs7Vxcqr9oeeqQEV8gglner3xQclABUaFAAA&amp;ubi=FfaUURWIiMoCFe6etxcVoNPgWBUEFRwW5s6XnxcWztWh46DL3cGpATQIFrDAkIAIJQYVxJiv4w8VvgUVADaY4I7a6qL22cEBAA&amp;ds=4&amp;price=AAAAAFx98FUAAAAAAAkGM5Hiqc6Ein5cK/0acw==,https://max-l.mediav.com/rtb?type=2&amp;d=100&amp;b=1332a9357011607e&amp;p=2255956&amp;l=1136674&amp;s=4&amp;z=1&amp;ps=0&amp;w=AAAAAFx98FUAAAAAAAkGUFeG50ntGWJlbQ0xng&amp;pt=1&amp;k=LRsRzQAAAAA=&amp;i=OSbJ5mVFZ9Zh&amp;v=05317565507371004090017" data-clk="https://max-l.mediav.com/rtb?type=3&amp;d=100&amp;b=1332a9357011607e&amp;p=2255956&amp;l=1136674&amp;s=4&amp;ps=0&amp;k=LRsRzQAAAAA=&amp;i=OSbJ5mVFZ9Zh&amp;v=05317565507371004090017&amp;x=__OFFSET_X__&amp;y=__OFFSET_Y__&amp;st=__EVENT_TIME_START__&amp;et=__EVENT_TIME_END__&amp;tc=&amp;turl=">
<info-div class="wrap">
<info-div class="singleImage-img singleImage-img-left">
<info-div class="img" style="background-image:url(https://s3m.milkjpg.com/galileo/664891-77d5bea369e8d5db59b4caf3c367e636.gif)"><info-div class="ads-tag"></info-div></info-div>
</info-div>
<info-div class="singleImage-body singleImage-body-left">
<info-div class="singleImage-title">科技园25岁美女手机做这个,1年存款吓呆父母!!</info-div>
<info-div class="singleImage-desc">顺意网络 · 鹓鶵</info-div>
</info-div>
</info-div>
<info-div style="clear:both;"></info-div>
</info-div>
</info-div></newsfeed></div>
<script>
NEWS_FEED({
w: 852,
h : 60,
showid : 'GNKXx7',
placeholderId: "three_ad33",
inject : 'define',
define : {
imagePosition : 'left',
imageBorderRadius : 3,
imageWidth: 90,
imageHeight: 60,
imageFill : 'clip',
displayImage : true,
displayTitle : true,
titleFontSize: 18,
titleFontColor: '#000',
titleFontFamily : 'Lato,-apple-system,SF UI Text,Arial,PingFang SC,Hiragino Sans GB,Microsoft YaHei,WenQuanYi Micro Hei,sans-serif',
titleFontWeight: 'bold',
titlePaddingTop : 0,
titlePaddingRight : 0,
titlePaddingBottom : 5,
titlePaddingLeft : 16,
displayDesc : true,
descFontSize: 14,
descFontColor: '#8e959a',
descFontFamily : 'Microsoft Yahei',
paddingTop : 0,
paddingRight : 0,
paddingBottom : 0,
paddingLeft : 0,
backgroundColor: '#fff',
hoverColor: '#000'
}
})
</script></div></div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/wongainia158158/article/details/48626907,BlogCommendFromQuerySearch_33,index_33&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/wongainia158158/article/details/48626907" target="_blank" title="LibRTMP源代码分析6">
<h4 class="text-truncate oneline" style="width: 552px;">
<em>LibRTMP</em><em>源代码分析</em>6 </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">09-21</span>
<span class="read-num hover-hide">
阅读数
641</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/wongainia158158/article/details/48626907" target="_blank" title="LibRTMP源代码分析6">
<span class="desc oneline">前面介绍了建立网络连接(NetConnection)和建立网络流(NetStream),这些命令数据是怎么发送出去的呢?在底层是怎么实现的呢?接下来就要详细分析各种消息的发送过程。首先大致列举一下消息...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/wongainia158158">来自: <span class="blog_title"> wongainia158158的博客</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/wongainia158158/article/details/48627003,BlogCommendFromQuerySearch_34,index_34&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/wongainia158158/article/details/48627003" target="_blank" title="LibRTMP源代码分析8:发送消息">
<h4 class="text-truncate oneline" style="width: 552px;">
<em>LibRTMP</em><em>源代码分析</em>8:发送<em>消息</em> </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">09-21</span>
<span class="read-num hover-hide">
阅读数
335</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/wongainia158158/article/details/48627003" target="_blank" title="LibRTMP源代码分析8:发送消息">
<span class="desc oneline">在详细分析函数RTMP_SendPacket()之前,让我们来看看RTMPPacket结构体的定义:typedefstructRTMPPacket{&nbsp;&nbsp;&nbsp;&nbsp;uint8_t&nbsp;m_headerType;/...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/wongainia158158">来自: <span class="blog_title"> wongainia158158的博客</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/leixiaohua1020/article/details/42105049,BlogCommendFromQuerySearch_35,index_35&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/leixiaohua1020/article/details/42105049" target="_blank" title="最简单的基于librtmp的示例:发布H.264(H.264通过RTMP发布)">
<h4 class="text-truncate oneline" style="width: 552px;">
最简单的基于<em>librtmp</em>的示例:发布H.264(H.264通过RTMP发布) </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">12-27</span>
<span class="read-num hover-hide">
阅读数
4</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/leixiaohua1020/article/details/42105049" target="_blank" title="最简单的基于librtmp的示例:发布H.264(H.264通过RTMP发布)">
<span class="desc oneline">本文记录一个基于libRTMP的发布H.264码流的程序。该程序可以将H.264数据发布到RTMP流媒体服务器。目前这个例子还不是很稳定,下一步还有待修改。本程序使用回调函数作为输入,通过自定义的回调...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/leixiaohua1020">来自: <span class="blog_title"> 雷霄骅(leixiaohua1020)的专栏</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/u014287775/article/details/53505525,BlogCommendFromQuerySearch_36,index_36&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/u014287775/article/details/53505525" target="_blank" title="基于libRTMP的流媒体直播之音频推送">
<h4 class="text-truncate oneline" style="width: 552px;">
基于<em>libRTMP</em>的流媒体直播之音频推送 </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">12-07</span>
<span class="read-num hover-hide">
阅读数
3133</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/u014287775/article/details/53505525" target="_blank" title="基于libRTMP的流媒体直播之音频推送">
<span class="desc oneline">不论像RTMP服务器推送视频还是音频,都需要按照FLV格式进行封包,然后调用librtmp接口函数进行发送。透过对FLV文件协议的理解,我们在向RTMP服务器发送yin数据包之前,需要...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/u014287775">来自: <span class="blog_title"> 落幕的专栏</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/huibailingyu/article/details/50554315,BlogCommendFromQuerySearch_37,index_37&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/huibailingyu/article/details/50554315" target="_blank" title="librtmp发送AVC,AAC数据包">
<h4 class="text-truncate oneline" style="width: 552px;">
<em>librtmp</em>发送AVC,AAC数据包 </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">01-21</span>
<span class="read-num hover-hide">
阅读数
3968</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/huibailingyu/article/details/50554315" target="_blank" title="librtmp发送AVC,AAC数据包">
<span class="desc oneline">1.libRTMP的包结构typedefstructRTMPPacket{uint8_tm_headerType;uint8_tm_packetType;uint8_tm_hasAbsTimestam...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/huibailingyu">来自: <span class="blog_title"> huibailingyu的专栏</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-ad-box"><div id="kp_box_66" data-pid="66" data-track-view="{&quot;mod&quot;:&quot;kp_popu_66-808&quot;,&quot;con&quot;:&quot;,,&quot;}" data-track-click="{&quot;mod&quot;:&quot;kp_popu_66-808&quot;,&quot;con&quot;:&quot;,,&quot;}"><iframe style="width: 100%; height: 60px; border: 0px none;" scrolling="no"></iframe></div></div>
<div class="recommend-item-box recommend-box-ident recommend-download-box clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://download.csdn.net/download/u014427391/10489377,BlogCommendFromQuerySearch_38,index_38&quot;}" data-flg="true">
<a href="https://download.csdn.net/download/u014427391/10489377" target="_blank">
<div class="content clearfix">
<div class="">
<h4 class="text-truncate oneline clearfix">
RocketMQ<em>源代码分析</em>-事务<em>消息</em>-赵彬 </h4>
<span class="data float-right">06-20</span>
</div>
<div class="desc oneline">
RocketMQ源代码分析-事务消息-赵彬 RocketMQ源代码分析-事务消息-赵彬 </div>
<span class="type-show type-show-download">下载</span>
</div>
</a>
</div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/gongluck93/article/details/79126801,BlogCommendFromQuerySearch_39,index_39&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/gongluck93/article/details/79126801" target="_blank" title="使用librtmp推流/拉流">
<h4 class="text-truncate oneline" style="width: 552px;">
使用<em>librtmp</em>推流/拉流 </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">01-22</span>
<span class="read-num hover-hide">
阅读数
848</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/gongluck93/article/details/79126801" target="_blank" title="使用librtmp推流/拉流">
<span class="desc oneline">准备工作#include"librtmp/rtmp_sys.h"#include"librtmp/log.h"#pragmacomment(lib,"librtmp.lib")#pragmacomme...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/gongluck93">来自: <span class="blog_title"> gongluck93的博客</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/tongjing524/article/details/38061187,BlogCommendFromQuerySearch_40,index_40&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/tongjing524/article/details/38061187" target="_blank" title="LibRTMP源代码分析4:握手(HandShake)">
<h4 class="text-truncate oneline" style="width: 552px;">
<em>LibRTMP</em><em>源代码分析</em>4:握手(HandShake) </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">07-23</span>
<span class="read-num hover-hide">
阅读数
1348</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/tongjing524/article/details/38061187" target="_blank" title="LibRTMP源代码分析4:握手(HandShake)">
<span class="desc oneline">转载自:http://nkwavelet.blog.163.com/blog/static/227756038201412052439295/在RTMP客户端和服务器端网络层连接成功之后,第一件事情就...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/tongjing524">来自: <span class="blog_title"> tongjing524的专栏</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/wongainia158158/article/details/48625871,BlogCommendFromQuerySearch_41,index_41&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/wongainia158158/article/details/48625871" target="_blank" title="LibRTMP源代码分析5:建立网络连接">
<h4 class="text-truncate oneline" style="width: 552px;">
<em>LibRTMP</em><em>源代码分析</em>5:建立网络连接 </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">09-21</span>
<span class="read-num hover-hide">
阅读数
634</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/wongainia158158/article/details/48625871" target="_blank" title="LibRTMP源代码分析5:建立网络连接">
<span class="desc oneline">服务器和客户端之间只能建立一个网络连接,但是基于该连接可以创建很多网络流。他们的关系如图所示:&nbsp;网络连接的基本步骤在第一篇文章中有所介绍,此处不再重复。源代码中的RTMP_Connect(...)用于...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/wongainia158158">来自: <span class="blog_title"> wongainia158158的博客</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/wongainia158158/article/details/48626615,BlogCommendFromQuerySearch_42,index_42&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/wongainia158158/article/details/48626615" target="_blank" title="LibRTMP源代码分析6:建立网络流">
<h4 class="text-truncate oneline" style="width: 552px;">
<em>LibRTMP</em><em>源代码分析</em>6:建立网络流 </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">09-21</span>
<span class="read-num hover-hide">
阅读数
378</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/wongainia158158/article/details/48626615" target="_blank" title="LibRTMP源代码分析6:建立网络流">
<span class="desc oneline">建立了RTMP网络连接之后,客户端发送createStream命令到服务器端为消息连接创建一个逻辑通道。NetStream定义了这个传输逻辑通道,通过这个通道,音频流、视频流以及数据消息流可以通过连接...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/wongainia158158">来自: <span class="blog_title"> wongainia158158的博客</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-ad-box"><div id="kp_box_67" data-pid="67" data-track-view="{&quot;mod&quot;:&quot;kp_popu_67-808&quot;,&quot;con&quot;:&quot;,,&quot;}" data-track-click="{&quot;mod&quot;:&quot;kp_popu_67-808&quot;,&quot;con&quot;:&quot;,,&quot;}"><iframe style="width: 100%; height: 60px; border: 0px none;" scrolling="no"></iframe></div></div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/tongjing524/article/details/38061151,BlogCommendFromQuerySearch_43,index_43&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/tongjing524/article/details/38061151" target="_blank" title="LibRTMP源代码分析3:AMF编码">
<h4 class="text-truncate oneline" style="width: 552px;">
<em>LibRTMP</em><em>源代码分析</em>3:AMF编码 </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">07-23</span>
<span class="read-num hover-hide">
阅读数
936</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/tongjing524/article/details/38061151" target="_blank" title="LibRTMP源代码分析3:AMF编码">
<span class="desc oneline">AMF协议是ActionMessageFormat协议的简称,AMF协议是Adobe公司的协议,主要用于数据交互和远程过程调用,在功能上与WebService相当,但AMF与WebService中的x...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/tongjing524">来自: <span class="blog_title"> tongjing524的专栏</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/darkdragonking/article/details/40657451,BlogCommendFromQuerySearch_44,index_44&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/darkdragonking/article/details/40657451" target="_blank" title="RTMPdump(libRTMP) 源代码分析大汇总">
<h4 class="text-truncate oneline" style="width: 552px;">
RTMPdump(<em>libRTMP</em><em>源代码分析</em>大汇总 </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">10-31</span>
<span class="read-num hover-hide">
阅读数
433</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/darkdragonking/article/details/40657451" target="_blank" title="RTMPdump(libRTMP) 源代码分析大汇总">
<span class="desc oneline">从高手那里转载来的,因为人家都直接弄好了链接了,我直接抄的链接,作为尊重...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/darkdragonking">来自: <span class="blog_title"> 暗黑世界</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/STN_LCD/article/details/72903226,BlogCommendFromQuerySearch_45,index_45&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/STN_LCD/article/details/72903226" target="_blank" title="最简单的基于librtmp的示例:发布H.264(H.264通过RTMP发布)——雷神经典">
<h4 class="text-truncate oneline" style="width: 552px;">
最简单的基于<em>librtmp</em>的示例:发布H.264(H.264通过RTMP发布)——雷神经典 </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">06-07</span>
<span class="read-num hover-hide">
阅读数
1060</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/STN_LCD/article/details/72903226" target="_blank" title="最简单的基于librtmp的示例:发布H.264(H.264通过RTMP发布)——雷神经典">
<span class="desc oneline">http://blog.csdn.net/leixiaohua1020/article/details/42105049版权声明:本文为博主原创文章,未经博主允许不得转载。目录(?)[+]======...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/STN_LCD">来自: <span class="blog_title"> STN_LCD的专栏</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/leixiaohua1020/article/details/15814587,BlogCommendFromQuerySearch_46,index_46&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/leixiaohua1020/article/details/15814587" target="_blank" title="[总结]RTMP流媒体技术零基础学习方法">
<h4 class="text-truncate oneline" style="width: 552px;">
[总结]RTMP流媒体技术零基础学习方法 </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">11-18</span>
<span class="read-num hover-hide">
阅读数
10</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/leixiaohua1020/article/details/15814587" target="_blank" title="[总结]RTMP流媒体技术零基础学习方法">
<span class="desc oneline">本文主要总结一些我在学习RTMP流媒体技术过程中积累的经验。也为后来学习RTMP流媒体技术的人们一个参考。本文力图从简到难,循序渐进的介绍RTMP流媒体技术的方方面面,先从应用说起,逐步深化剖析相关工...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/leixiaohua1020">来自: <span class="blog_title"> 雷霄骅(leixiaohua1020)的专栏</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/leixiaohua1020/article/details/12972399,BlogCommendFromQuerySearch_47,index_47&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/leixiaohua1020/article/details/12972399" target="_blank" title="RTMPdump(libRTMP) 源代码分析 10: 处理各种消息(Message)">
<h4 class="text-truncate oneline" style="width: 552px;">
RTMPdump(<em>libRTMP</em><em>源代码分析</em> 10: 处理各种<em>消息</em>(Message) </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">10-24</span>
<span class="read-num hover-hide">
阅读数
1</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/leixiaohua1020/article/details/12972399" target="_blank" title="RTMPdump(libRTMP) 源代码分析 10: 处理各种消息(Message)">
<span class="desc oneline">已经连续写了一系列的博客了,其实大部分内容都是去年搞RTMP研究的时候积累的经验,回顾一下过去的知识,其实RTMPdump(libRTMP)主要的功能也都分析的差不多了,现在感觉还需要一些查漏补缺。主...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/leixiaohua1020">来自: <span class="blog_title"> 雷霄骅(leixiaohua1020)的专栏</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-ad-box"><div id="kp_box_68" data-pid="68" data-track-view="{&quot;mod&quot;:&quot;kp_popu_68-654&quot;,&quot;con&quot;:&quot;,,&quot;}" data-track-click="{&quot;mod&quot;:&quot;kp_popu_68-654&quot;,&quot;con&quot;:&quot;,,&quot;}"><div class="mediav_ad"><newsfeed class="newsfeed QIHOO__WEB__SO__1551757399065_202" id="QIHOO__WEB__SO__1551757399065_202" style="display:block;margin:0;padding:0;border:none;width:900px;height:84px;overflow-y:hidden;overflow-x:hidden;position:relative;text-align:left;"><info-div id="QIHOO__WEB__SO__1551757399065_202-info" style="zoom:1"><info-div class="QIHOO__WEB__SO__1551757399065_202 singleImage clk" data-href="https://ssxd.mediav.com/s?type=2&amp;r=20&amp;mv_ref=blog.csdn.net&amp;enup=CAABPY1BbQgAAm1BjT0A&amp;mvid=MDUzMTc1NjU1MDczNzEwMDQwOTAwMTc&amp;bid=1332a93543ec52ae&amp;price=AAAAAFx98FUAAAAAAAn982IFMS6PnyyddmxWvA==&amp;finfo=DAABCAABAAAApggAAgAAAGwEAAM/WLC4BjHAgQAIAAIAAAADCgADXSbNnTUJtQcIAAQAAABuBgAGLbcKAAkAAAAAAAIQFAYACgAACAAOAAAAPwoADwAAAAAAGVRgAA&amp;ugi=FcTgigEVyNtrTBUCFUAVXhUAABWYuYDUBRaACBXIARaA/efGldTBBQA&amp;uai=FeTGlAIlAhUEFs7V39CEidCmugEV8ggljb7zZyUAFRoUAAA&amp;ubi=FZKVURWuj8oCFfbCtxcV2sThWBUEFSIWnIeAnxcWztXI1LXn5qa6ATQIFqjAECUGFZiPm+EHFfoFFQA29rmZt6mcmfXfAQA&amp;clickid=0&amp;cpx=__OFFSET_X__&amp;cpy=__OFFSET_Y__&amp;cs=__EVENT_TIME_START__&amp;ce=__EVENT_TIME_END__&amp;csign2=5kauX_FHTaj=&amp;url=http%3A%2F%2Fgp.yimugo.net%2F" data-pv="https://ssxd.mediav.com/s?type=1&amp;r=20&amp;tid=MDUzMTc1NjU1MDczNzEwMDQwOTAwMTc&amp;finfo=DAABCAABAAAApggAAgAAAGwEAAM/WLC4BjHAgQAIAAIAAAADCgADXSbNnTUJtQcIAAQAAABuBgAGLbcKAAkAAAAAAAIQFAYACgAACAAOAAAAPwoADwAAAAAAGVRgAA&amp;mv_ref=blog.csdn.net&amp;enup=CAABPY1BbQgAAm1BjT0A&amp;mvid=MDUzMTc1NjU1MDczNzEwMDQwOTAwMTc&amp;bid=1332a93543ec52ae&amp;ugi=FcTgigEVyNtrTBUCFUAVXhUAABWYuYDUBRaACBXIARaA/efGldTBBQA&amp;uai=FeTGlAIlAhUEFs7V39CEidCmugEV8ggljb7zZyUAFRoUAAA&amp;ubi=FZKVURWuj8oCFfbCtxcV2sThWBUEFSIWnIeAnxcWztXI1LXn5qa6ATQIFqjAECUGFZiPm+EHFfoFFQA29rmZt6mcmfXfAQA&amp;ds=4&amp;price=AAAAAFx98FUAAAAAAAn982IFMS6PnyyddmxWvA==,https://max-l.mediav.com/rtb?type=2&amp;d=100&amp;b=1332a93543ec52ae&amp;p=2265522&amp;l=1136674&amp;s=4&amp;z=1&amp;ps=0&amp;w=AAAAAFx98FUAAAAAAAn-Htd3-N49yv4FZWHmYg&amp;pt=1&amp;k=h95JOgAAAAA=&amp;i=xYnPiBVFZ9hY&amp;v=05317565507371004090017" data-clk="https://max-l.mediav.com/rtb?type=3&amp;d=100&amp;b=1332a93543ec52ae&amp;p=2265522&amp;l=1136674&amp;s=4&amp;ps=0&amp;k=h95JOgAAAAA=&amp;i=xYnPiBVFZ9hY&amp;v=05317565507371004090017&amp;x=__OFFSET_X__&amp;y=__OFFSET_Y__&amp;st=__EVENT_TIME_START__&amp;et=__EVENT_TIME_END__&amp;tc=&amp;turl=">
<info-div class="wrap">
<info-div class="singleImage-img singleImage-img-left">
<info-div class="img" style="background-image:url(https://s3m.mediav.com/galileo/664905-636564b39bd35b3e10c5a99b6167bfbc.jpg)"><info-div class="ads-tag"></info-div></info-div>
</info-div>
<info-div class="singleImage-body singleImage-body-left">
<info-div class="singleImage-title">股票“三不卖七不买“6字黄金口诀 只买井喷股 赢千万身价</info-div>
<info-div class="singleImage-desc">之星 · 顶新</info-div>
</info-div>
</info-div>
<info-div style="clear:both;"></info-div>
</info-div>
</info-div></newsfeed></div>
<script>
NEWS_FEED({
w: 900,
h : 84,
showid : 'Afihld',
placeholderId: "three_ad48",
inject : 'define',
define : {
imagePosition : 'left',
imageBorderRadius : 3,
imageWidth: 90,
imageHeight: 60,
imageFill : 'clip',
displayImage : true,
displayTitle : true,
titleFontSize: 16,
titleFontColor: '#000',
titleFontFamily : 'Microsoft Yahei',
titleFontWeight: 'bold',
titlePaddingTop : 0,
titlePaddingRight : 0,
titlePaddingBottom : 5,
titlePaddingLeft : 16,
displayDesc : true,
descFontSize: 14,
descFontColor: '#8e959a',
descFontFamily : 'Microsoft Yahei',
paddingTop : 10,
paddingRight : 0,
paddingBottom : 0,
paddingLeft : 0,
backgroundColor: '#fff',
hoverColor: '#000'
}
})
</script></div></div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/coloriy/article/details/47108713,BlogCommendFromQuerySearch_48,index_48&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/coloriy/article/details/47108713" target="_blank" title="librtmp使用实例">
<h4 class="text-truncate oneline" style="width: 552px;">
<em>librtmp</em>使用实例 </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">07-29</span>
<span class="read-num hover-hide">
阅读数
1225</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/coloriy/article/details/47108713" target="_blank" title="librtmp使用实例">
<span class="desc oneline">20140826修改修改源码原C++改为CUnix下编译通过(CentOS6.5)下载文件会有VC6和Unix两个文件夹////////////////////////////////////////...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/coloriy">来自: <span class="blog_title"> 专注流媒体技术与方案!</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/liulina603/article/details/51851950,BlogCommendFromQuerySearch_49,index_49&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/liulina603/article/details/51851950" target="_blank" title="win7下利用vs2010编译librtmp静态库">
<h4 class="text-truncate oneline" style="width: 552px;">
win7下利用vs2010编译<em>librtmp</em>静态库 </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">07-07</span>
<span class="read-num hover-hide">
阅读数
2777</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/liulina603/article/details/51851950" target="_blank" title="win7下利用vs2010编译librtmp静态库">
<span class="desc oneline">一、编译librtmp  下载rtmpdump的代码,你会发现,它是一个地道的linux项目,除了一个简单的Makefile,其他什么都没有。好像librtmp不依赖于系统,我们可以不用费太多功夫,把...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/liulina603">来自: <span class="blog_title"> liulina603的专栏</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/iwanghang/article/details/51290181,BlogCommendHotData_0,index_50&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/iwanghang/article/details/51290181" target="_blank" title="Android开发本地及网络Mp3音乐播放器(十二)创建NetMusicListAdapter、SearchResult显示网络音乐列表">
<h4 class="text-truncate oneline" style="width: 552px;">
Android开发本地及网络Mp3音乐播放器(十二)创建NetMusicListAdapter、SearchResult显示网络音乐列表 </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">05-01</span>
<span class="read-num hover-hide">
阅读数
7328</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/iwanghang/article/details/51290181" target="_blank" title="Android开发本地及网络Mp3音乐播放器(十二)创建NetMusicListAdapter、SearchResult显示网络音乐列表">
<span class="desc oneline">实现功能:
实现NetMusicListAdapter(网络音乐列表适配器)
实现SearchResult(搜索音乐对象)
使用Jsoup组件请求网络,并解析音乐数据,并,音乐数据加载到列表中
实现F...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/iwanghang">来自: <span class="blog_title"> iwanghang(一个播音与主持艺术专业、干过网游打金工作室,做过海鲜小吃排挡的新手程序员)</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/diandianxiyu/article/details/53068012,BlogCommendHotData_1,index_51&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/diandianxiyu/article/details/53068012" target="_blank" title="【小程序】微信小程序开发实践">
<h4 class="text-truncate oneline" style="width: 552px;">
【小程序】微信小程序开发实践 </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">11-07</span>
<span class="read-num hover-hide">
阅读数
15万+</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/diandianxiyu/article/details/53068012" target="_blank" title="【小程序】微信小程序开发实践">
<span class="desc oneline">帐号相关流程注册范围
企业
政府
媒体
其他组织换句话讲就是不让个人开发者注册。 :)填写企业信息不能使用和之前的公众号账户相同的邮箱,也就是说小程序是和微信公众号一个层级的。填写公司机构信息,对公账...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/diandianxiyu">来自: <span class="blog_title"> 小雨同学的技术博客</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/jhq0113/article/details/44226789,BlogCommendHotData_2,index_52&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/jhq0113/article/details/44226789" target="_blank" title="数据切分——原理">
<h4 class="text-truncate oneline" style="width: 552px;">
数据切分——原理 </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">03-12</span>
<span class="read-num hover-hide">
阅读数
3699</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/jhq0113/article/details/44226789" target="_blank" title="数据切分——原理">
<span class="desc oneline">声明:本系列教程参考资料《Mysql性能调优与架构设计》
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Why Mysql?
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 大家可能怀疑,数据库有好多种,为什么选择Mysql作为数据切分的案例,为什么不选...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/jhq0113">来自: <span class="blog_title"> 姜海强</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/u011711997/article/details/52350907,BlogCommendHotData_3,index_53&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/u011711997/article/details/52350907" target="_blank" title="整数在计算机中的编码">
<h4 class="text-truncate oneline" style="width: 552px;">
整数在计算机中的编码 </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">08-29</span>
<span class="read-num hover-hide">
阅读数
7338</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/u011711997/article/details/52350907" target="_blank" title="整数在计算机中的编码">
<span class="desc oneline">整数在计算机中是使用补码表示的,在讲解补码前,先看一下相关概念。
机器数与真值
数值在计算机中的表现形式叫做机器数,该数值就是机器数代表的真值。机器数是真值在计算机中的表现形式,真值是机器数的代表的数...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/u011711997">来自: <span class="blog_title"> gaoyi的专栏</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/hwhsong/article/details/78294965,BlogCommendHotData_4,index_54&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/hwhsong/article/details/78294965" target="_blank" title="EasyUI - 一个简单的后台管理系统入门实例">
<h4 class="text-truncate oneline" style="width: 552px;">
EasyUI - 一个简单的后台管理系统入门实例 </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">10-20</span>
<span class="read-num hover-hide">
阅读数
1万+</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/hwhsong/article/details/78294965" target="_blank" title="EasyUI - 一个简单的后台管理系统入门实例">
<span class="desc oneline">采用EasyUI 1.4.x 版本,默认default风格,异步加载页面,多Tab页展示,使用JSON文件模拟从后台动态获取数据。...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/hwhsong">来自: <span class="blog_title"> 般若</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/qq_36892341/article/details/73918672,BlogCommendHotData_5,index_55&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/qq_36892341/article/details/73918672" target="_blank" title="linux上安装Docker(非常简单的安装方法)">
<h4 class="text-truncate oneline" style="width: 552px;">
linux上安装Docker(非常简单的安装方法) </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">06-29</span>
<span class="read-num hover-hide">
阅读数
14万+</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/qq_36892341/article/details/73918672" target="_blank" title="linux上安装Docker(非常简单的安装方法)">
<span class="desc oneline">最近比较有空,大四出来实习几个月了,作为实习狗的我,被叫去研究Docker了,汗汗!
Docker的三大核心概念:镜像、容器、仓库
镜像:类似虚拟机的镜像、用俗话说就是安装文件。
容器:类似一个轻量...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/qq_36892341">来自: <span class="blog_title"> 我走小路的博客</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/wyx100/article/details/73080969,BlogCommendHotData_6,index_56&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/wyx100/article/details/73080969" target="_blank" title="人脸检测和识别 源代码 下载-opencv3+python3.6完整实战项目源代码 识别视频《欢乐颂》中人物">
<h4 class="text-truncate oneline" style="width: 552px;">
人脸检测和识别 源代码 下载-opencv3+python3.6完整实战项目源代码 识别视频《欢乐颂》中人物 </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">06-12</span>
<span class="read-num hover-hide">
阅读数
1万+</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/wyx100/article/details/73080969" target="_blank" title="人脸检测和识别 源代码 下载-opencv3+python3.6完整实战项目源代码 识别视频《欢乐颂》中人物">
<span class="desc oneline">人脸检测和识别- opencv3+python3完整实战项目源代码 识别视频《欢乐颂》中人物
python
opecv3人脸检测和识别
项目源代码
识别视频《欢乐颂》中人物...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/wyx100">来自: <span class="blog_title"> wyx100的专栏</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/roguesir/article/details/77104246,BlogCommendHotData_7,index_57&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/roguesir/article/details/77104246" target="_blank" title="人脸检测工具face_recognition的安装与应用">
<h4 class="text-truncate oneline" style="width: 552px;">
人脸检测工具face_recognition的安装与应用 </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">08-11</span>
<span class="read-num hover-hide">
阅读数
3万+</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/roguesir/article/details/77104246" target="_blank" title="人脸检测工具face_recognition的安装与应用">
<span class="desc oneline">人脸检测工具face_recognition的安装与应用</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/roguesir">来自: <span class="blog_title"> roguesir的博客</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/bob601450868/article/details/52073805,BlogCommendHotData_8,index_58&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/bob601450868/article/details/52073805" target="_blank" title="Spark2学习1之基本环境搭建(win)问题">
<h4 class="text-truncate oneline" style="width: 552px;">
Spark2学习1之基本环境搭建(win)问题 </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">07-30</span>
<span class="read-num hover-hide">
阅读数
3万+</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/bob601450868/article/details/52073805" target="_blank" title="Spark2学习1之基本环境搭建(win)问题">
<span class="desc oneline">更多代码请见:https://github.com/xubo245/SparkLearning 版本:Spark-2.0.01解释
从【2】中下载release版,idea打开mvn packag...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/bob601450868">来自: <span class="blog_title"> Keep Learning</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/u011860731/article/details/48733073,BlogCommendHotData_9,index_59&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/u011860731/article/details/48733073" target="_blank" title="ThreadLocal的设计理念与作用">
<h4 class="text-truncate oneline" style="width: 552px;">
ThreadLocal的设计理念与作用 </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">09-25</span>
<span class="read-num hover-hide">
阅读数
3万+</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/u011860731/article/details/48733073" target="_blank" title="ThreadLocal的设计理念与作用">
<span class="desc oneline">Java中的ThreadLocal类允许我们创建只能被同一个线程读写的变量。因此,如果一段代码含有一个ThreadLocal变量的引用,即使两个线程同时执行这段代码,它们也无法访问到对方的Thread...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/u011860731">来自: <span class="blog_title"> u011860731的专栏</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/wuchengzeng/article/details/50037611,BlogCommendHotData_10,index_60&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/wuchengzeng/article/details/50037611" target="_blank" title="jquery/js实现一个网页同时调用多个倒计时(最新的)">
<h4 class="text-truncate oneline" style="width: 552px;">
jquery/js实现一个网页同时调用多个倒计时(最新的) </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">11-25</span>
<span class="read-num hover-hide">
阅读数
25万+</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/wuchengzeng/article/details/50037611" target="_blank" title="jquery/js实现一个网页同时调用多个倒计时(最新的)">
<span class="desc oneline">jquery/js实现一个网页同时调用多个倒计时(最新的)
最近需要网页添加多个倒计时. 查阅网络,基本上都是千遍一律的不好用. 自己按需写了个.希望对大家有用. 有用请赞一个哦!
//js
...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/wuchengzeng">来自: <span class="blog_title"> websites</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/clover_hxy/article/details/50683832,BlogCommendHotData_11,index_61&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/clover_hxy/article/details/50683832" target="_blank" title="bsgs算法">
<h4 class="text-truncate oneline" style="width: 552px;">
bsgs算法 </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">02-18</span>
<span class="read-num hover-hide">
阅读数
1万+</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/clover_hxy/article/details/50683832" target="_blank" title="bsgs算法">
<span class="desc oneline">bsgs算法
bsgs算法,又称大小步算法(某大神称拔山盖世算法)。
主要用来解决
&nbsp; A^x=B(mod C)(C是质数),都是整数,已知A、B、C求x。(poj 2417&nbsp;Discrete Lo...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/clover_hxy">来自: <span class="blog_title"> clover_hxy的博客</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/bea_tree/article/details/51519844,BlogCommendHotData_12,index_62&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/bea_tree/article/details/51519844" target="_blank" title="CS231n 卷积神经网络与计算机视觉 6 数据预处理 权重初始化 规则化 损失函数 等常用方法总结">
<h4 class="text-truncate oneline" style="width: 552px;">
CS231n 卷积神经网络与计算机视觉 6 数据预处理 权重初始化 规则化 损失函数 等常用方法总结 </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">05-28</span>
<span class="read-num hover-hide">
阅读数
1万+</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/bea_tree/article/details/51519844" target="_blank" title="CS231n 卷积神经网络与计算机视觉 6 数据预处理 权重初始化 规则化 损失函数 等常用方法总结">
<span class="desc oneline">1 数据处理
首先注明我们要处理的数据是矩阵X,其shape为[N x D] (N =number of data, D =dimensionality).
1.1 Mean subtractio...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/bea_tree">来自: <span class="blog_title"> bea_tree的博客</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/u011046042/article/details/47067037,BlogCommendHotData_13,index_63&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/u011046042/article/details/47067037" target="_blank" title="基于Linux的智能家居的设计(5)">
<h4 class="text-truncate oneline" style="width: 552px;">
基于Linux的智能家居的设计(5) </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">07-26</span>
<span class="read-num hover-hide">
阅读数
1万+</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/u011046042/article/details/47067037" target="_blank" title="基于Linux的智能家居的设计(5)">
<span class="desc oneline">4&nbsp; 软件设计
&nbsp;
软件设计部分主要包括uboot移植、内核编译、系统移植、设备驱动编程、应用程序编程(QT编程、mysql数据库编程、控制系统编程)、各个模块的功能函数(部分是在windows下面的...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/u011046042">来自: <span class="blog_title"> 求是07的专栏</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/qq574857122/article/details/16361033,BlogCommendHotData_14,index_64&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/qq574857122/article/details/16361033" target="_blank" title="强连通分量及缩点tarjan算法解析">
<h4 class="text-truncate oneline" style="width: 552px;">
强连通分量及缩点tarjan算法解析 </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">11-16</span>
<span class="read-num hover-hide">
阅读数
38万+</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/qq574857122/article/details/16361033" target="_blank" title="强连通分量及缩点tarjan算法解析">
<span class="desc oneline">强连通分量:
简言之 就是找环(每条边只走一次,两两可达)
孤立的一个点也是一个连通分量
&nbsp;
使用tarjan算法 在嵌套的多个环中优先得到最大环( 最小环就是每个孤立点)
&nbsp;
定义:
int Ti...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/qq574857122">来自: <span class="blog_title"> 九野的博客</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/silentpebble/article/details/41279285,BlogCommendHotData_15,index_65&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/silentpebble/article/details/41279285" target="_blank" title="centos 查看命令源码">
<h4 class="text-truncate oneline" style="width: 552px;">
centos 查看命令源码 </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">11-19</span>
<span class="read-num hover-hide">
阅读数
3万+</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/silentpebble/article/details/41279285" target="_blank" title="centos 查看命令源码">
<span class="desc oneline"># yum install yum-utils
设置源:
[base-src]
name=CentOS-5.4 - Base src -
baseurl=http://vault.ce...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/silentpebble">来自: <span class="blog_title"> linux/unix</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/wwj_748/article/details/30072379,BlogCommendHotData_16,index_66&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/wwj_748/article/details/30072379" target="_blank" title="Cocos2d-x 2.2.3 使用NDK配置编译环境">
<h4 class="text-truncate oneline" style="width: 552px;">
Cocos2d-x 2.2.3 使用NDK配置编译环境 </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">06-11</span>
<span class="read-num hover-hide">
阅读数
1万+</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/wwj_748/article/details/30072379" target="_blank" title="Cocos2d-x 2.2.3 使用NDK配置编译环境">
<span class="desc oneline">Cocos2d-x 2.2.3 使用NDK配置编译环境2014年6月11日&nbsp;Cocos2d-x 3.0以下的开发环境的配置恐怕折磨了很多人,使用cygwin配置编译环境足够让初学者蛋疼一阵子了。本篇博...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/wwj_748">来自: <span class="blog_title"> 巫山老妖</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/gefangshuai/article/details/50328451,BlogCommendHotData_17,index_67&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/gefangshuai/article/details/50328451" target="_blank" title="关于SpringBoot bean无法注入的问题(与文件包位置有关)">
<h4 class="text-truncate oneline" style="width: 552px;">
关于SpringBoot bean无法注入的问题(与文件包位置有关) </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">12-16</span>
<span class="read-num hover-hide">
阅读数
11万+</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/gefangshuai/article/details/50328451" target="_blank" title="关于SpringBoot bean无法注入的问题(与文件包位置有关)">
<span class="desc oneline">问题场景描述整个项目通过Maven构建,大致结构如下:
核心Spring框架一个module spring-boot-base
service和dao一个module server-core
提供系统...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/gefangshuai">来自: <span class="blog_title"> 开发随笔</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/lxhjh/article/details/51764604,BlogCommendHotData_18,index_68&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/lxhjh/article/details/51764604" target="_blank" title="SpringBoot入门系列:第六篇 mybatis">
<h4 class="text-truncate oneline" style="width: 552px;">
SpringBoot入门系列:第六篇 mybatis </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">06-26</span>
<span class="read-num hover-hide">
阅读数
1万+</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/lxhjh/article/details/51764604" target="_blank" title="SpringBoot入门系列:第六篇 mybatis">
<span class="desc oneline">这一篇,代码折腾的时间较长,完成之后都是一些小细节,主要有三:
1、引入的依赖错误;
2、启动配置错误;
3、xml文件的mapper命名空间错误。
一、完整的pom.xml
...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/lxhjh">来自: <span class="blog_title"> lxhjh的专栏</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box recommend-box-ident type_blog clearfix" data-track-click="{&quot;mod&quot;:&quot;popu_387&quot;,&quot;con&quot;:&quot;,https://blog.csdn.net/VBcom/article/details/7245186,BlogCommendHotData_19,index_69&quot;}" data-flg="true">
<div class="content" style="width: 712px;">
<a href="https://blog.csdn.net/VBcom/article/details/7245186" target="_blank" title="DirectX修复工具增强版">
<h4 class="text-truncate oneline" style="width: 552px;">
DirectX修复工具增强版 </h4>
<div class="info-box d-flex align-content-center">
<p class="date-and-readNum oneline">
<span class="date hover-show">02-09</span>
<span class="read-num hover-hide">
阅读数
184万+</span>
</p>
</div>
</a>
<p class="content" style="width: 712px;">
<a href="https://blog.csdn.net/VBcom/article/details/7245186" target="_blank" title="DirectX修复工具增强版">
<span class="desc oneline">最后更新:2018-12-20
DirectX修复工具最新版:DirectX Repair V3.8 增强版&nbsp;&nbsp;NEW!
版本号:V3.8.0.11638
大小: 107MB/7z格式压缩,18...</span>
</a>
<span class="blog_title_box oneline ">
<span class="type-show type-show-blog type-show-after">博文</span>
<a target="_blank" href="https://blog.csdn.net/VBcom">来自: <span class="blog_title"> VBcom的专栏</span></a>
</span>
</p>
</div>
</div>
<div class="recommend-item-box type_hot_word">
<div class="content clearfix" style="width: 712px;">
<div class="word float-left">
<span>
<a href="https://edu.csdn.net/courses/o5329_s5330_k" target="_blank">
机器学习 </a></span>
<span>
<a href="https://edu.csdn.net/courses/o5329_s5330_k" target="_blank">
机器学习课程 </a></span>
<span>
<a href="https://edu.csdn.net/courses/o5329_s5330_k" target="_blank">
机器学习教程 </a></span>
<span>
<a href="https://edu.csdn.net/combos/o5329_s5331_l0_t" target="_blank">
深度学习视频教程 </a></span>
<span>
<a href="https://edu.csdn.net/combos/o5329_s5331_l0_t" target="_blank">
深度学习学习 </a></span>
</div>
</div>
</div>
<div class="recommend-loading-box">
<img src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/feedLoading.gif">
</div>
<div class="recommend-end-box">
<p class="text-center">没有更多推荐了,<a href="https://blog.csdn.net/" class="c-blue c-blue-hover c-blue-focus">返回首页</a></p>
</div>
</div>
</main>
<aside>
<div id="asideProfile" class="aside-box">
<!-- <h3 class="aside-title">个人资料</h3> -->
<div class="profile-intro d-flex">
<div class="avatar-box d-flex justify-content-center flex-column">
<a href="https://blog.csdn.net/wongainia158158">
<img src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/3_wongainia158158.gif" class="avatar_pic">
</a>
</div>
<div class="user-info d-flex justify-content-center flex-column">
<p class="name csdn-tracking-statistics tracking-click" data-mod="popu_379">
<a href="https://blog.csdn.net/wongainia158158" target="_blank" class="" id="uid">wongainia158158</a>
</p>
</div>
<div class="opt-box d-flex justify-content-center flex-column">
<span class="csdn-tracking-statistics tracking-click" data-mod="popu_379">
<a class="btn btn-sm btn-red-hollow attention" id="btnAttent" target="_blank">关注</a>
</span>
</div>
</div>
<div class="data-info d-flex item-tiling">
<dl class="text-center" title="24">
<dt><a href="https://blog.csdn.net/wongainia158158?t=1">原创</a></dt>
<dd><a href="https://blog.csdn.net/wongainia158158?t=1"><span class="count">24</span></a></dd>
</dl>
<dl class="text-center" id="fanBox" title="3">
<dt>粉丝</dt>
<dd><span class="count" id="fan">3</span></dd>
</dl>
<dl class="text-center" title="0">
<dt>喜欢</dt>
<dd><span class="count">0</span></dd>
</dl>
<dl class="text-center" title="0">
<dt>评论</dt>
<dd><span class="count">0</span></dd>
</dl>
</div>
<div class="grade-box clearfix">
<dl>
<dt>等级:</dt>
<dd>
<a href="https://blog.csdn.net/home/help.html#level" title="2级,点击查看等级说明" target="_blank">
<svg class="icon icon-level" aria-hidden="true">
<use xlink:href="#csdnc-bloglevel-2"></use>
</svg>
</a>
</dd>
</dl>
<dl>
<dt>访问:</dt>
<dd title="16498">
1万+ </dd>
</dl>
<dl>
<dt>积分:</dt>
<dd title="430">
430 </dd>
</dl>
<dl title="145284">
<dt>排名:</dt>
<dd>14万+</dd>
</dl>
</div>
<div class="badge-box d-flex">
<span>勋章:</span>
<div class="icon-badge" title="持之以恒">
<div class="mouse-box">
<svg class="icon" aria-hidden="true">
<use xlink:href="#csdnc-m-lasting"></use>
</svg>
<div class="icon-arrow"></div>
</div>
<div class="grade-detail-box">
<div class="pos-box">
<div class="left-box d-flex justify-content-center align-items-center flex-column">
<svg class="icon" aria-hidden="true">
<use xlink:href="#csdnc-m-lasting"></use>
</svg>
<p>持之以恒</p>
</div>
<div class="right-box d-flex justify-content-center align-items-center">
授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
</div>
</div>
</div>
</div>
<script>
(function ($) {
setTimeout(function(){
$('div.icon-badge.show-moment').removeClass('show-moment');
}, 5000);
})(window.jQuery)
</script>
</div>
</div>
<div class="csdn-tracking-statistics mb8 box-shadow" data-pid="blog" data-mod="popu_4" style="height:250px;">
<div class="aside-content text-center" id="cpro_u2734133">
<div id="kp_box_56" data-pid="56" data-track-click="{&quot;mod&quot;:&quot;kp_popu_56-76&quot;,&quot;con&quot;:&quot;,,&quot;}"><script type="text/javascript">
(function() {
var s = "_" + Math.random().toString(36).slice(2);
document.write('<div style="" id="' + s + '"></div>');
(window.slotbydup = window.slotbydup || []).push({
id: "u3032528",
container: s
});
})();
</script><div style="" id="_o0hk5b4z73i"><iframe id="iframeu3032528_0" name="iframeu3032528_0" src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/qclm.htm" vspace="0" hspace="0" marginwidth="0" marginheight="0" scrolling="no" style="border:0;vertical-align:bottom;margin:0;width:300px;height:250px" allowtransparency="true" width="300" height="250" frameborder="0" align="center,center"></iframe></div>
<!-- 多条广告如下脚本只需引入一次 -->
<script type="text/javascript" src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/c.js" async="async" defer="defer"></script></div> </div>
</div>
<div id="asideNewArticle" class="aside-box">
<h3 class="aside-title">最新文章</h3>
<div class="aside-content">
<ul class="inf_list clearfix csdn-tracking-statistics tracking-click" data-mod="popu_382">
<li class="clearfix">
<a href="https://blog.csdn.net/wongainia158158/article/details/85222553" target="_blank">React Native性能优化总结</a>
</li>
<li class="clearfix">
<a href="https://blog.csdn.net/wongainia158158/article/details/49867383" target="_blank">Android 侧滑菜单</a>
</li>
<li class="clearfix">
<a href="https://blog.csdn.net/wongainia158158/article/details/49801879" target="_blank">xmpp学习</a>
</li>
<li class="clearfix">
<a href="https://blog.csdn.net/wongainia158158/article/details/49801665" target="_blank">xmpp</a>
</li>
<li class="clearfix">
<a href="https://blog.csdn.net/wongainia158158/article/details/49800473" target="_blank">解析Lua中关于Metatable学习笔记</a>
</li>
</ul>
</div>
</div>
<div id="asideArchive" class="aside-box flexible-box">
<h3 class="aside-title">归档</h3>
<div class="aside-content">
<ul class="archive-list">
<!--归档统计-->
<li>
<a href="https://blog.csdn.net/wongainia158158/article/month/2018/12">
2018年12月 <span class="count float-right">1篇</span>
</a>
</li>
<!--归档统计-->
<li>
<a href="https://blog.csdn.net/wongainia158158/article/month/2015/11">
2015年11月 <span class="count float-right">4篇</span>
</a>
</li>
<!--归档统计-->
<li>
<a href="https://blog.csdn.net/wongainia158158/article/month/2015/10">
2015年10月 <span class="count float-right">2篇</span>
</a>
</li>
<!--归档统计-->
<li>
<a href="https://blog.csdn.net/wongainia158158/article/month/2015/09">
2015年9月 <span class="count float-right">18篇</span>
</a>
</li>
<!--归档统计-->
<li>
<a href="https://blog.csdn.net/wongainia158158/article/month/2015/08">
2015年8月 <span class="count float-right">1篇</span>
</a>
</li>
<!--归档统计-->
<li>
<a href="https://blog.csdn.net/wongainia158158/article/month/2015/07">
2015年7月 <span class="count float-right">10篇</span>
</a>
</li>
<!--归档统计-->
<li>
<a href="https://blog.csdn.net/wongainia158158/article/month/2015/06">
2015年6月 <span class="count float-right">9篇</span>
</a>
</li>
<!--归档统计-->
<li>
<a href="https://blog.csdn.net/wongainia158158/article/month/2015/05">
2015年5月 <span class="count float-right">2篇</span>
</a>
</li>
</ul>
</div>
<p class="text-center">
<a class="btn btn-link-blue flexible-btn" data-fbox="aside-archive">展开</a>
</p>
</div>
<div id="asideHotArticle" class="aside-box">
<h3 class="aside-title">热门文章</h3>
<div class="aside-content">
<ul class="hotArticle-list csdn-tracking-statistics tracking-click" data-mod="popu_521">
<li>
<a href="https://blog.csdn.net/wongainia158158/article/details/48375201" target="_blank">android抓包工具fiddler使用介绍 抓取 手机APP 中资源。</a>
<p class="read">阅读数 <span>799</span></p>
</li>
<li>
<a href="https://blog.csdn.net/wongainia158158/article/details/46332121" target="_blank">Android 轻松实现仿QQ空间下拉刷新</a>
<p class="read">阅读数 <span>717</span></p>
</li>
<li>
<a href="https://blog.csdn.net/wongainia158158/article/details/48626907" target="_blank">LibRTMP源代码分析6</a>
<p class="read">阅读数 <span>641</span></p>
</li>
<li>
<a href="https://blog.csdn.net/wongainia158158/article/details/48625871" target="_blank">LibRTMP源代码分析5:建立网络连接</a>
<p class="read">阅读数 <span>632</span></p>
</li>
<li>
<a href="https://blog.csdn.net/wongainia158158/article/details/48345201" target="_blank">日期滚动栏的实现</a>
<p class="read">阅读数 <span>510</span></p>
</li>
</ul>
</div>
</div>
<div id="asideFooter">
<div class="aside-box">
<div id="kp_box_57" data-pid="57" data-track-view="{&quot;mod&quot;:&quot;kp_popu_57-77&quot;,&quot;con&quot;:&quot;,,&quot;}" data-track-click="{&quot;mod&quot;:&quot;kp_popu_57-77&quot;,&quot;con&quot;:&quot;,,&quot;}"><script type="text/javascript">
(function() {
var s = "_" + Math.random().toString(36).slice(2);
document.write('<div style="" id="' + s + '"></div>');
(window.slotbydup = window.slotbydup || []).push({
id: "u3163270",
container: s
});
})();
</script><div style="" id="_npjqf07aabs"><iframe id="iframeu3163270_0" name="iframeu3163270_0" src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/qclm_002.htm" vspace="0" hspace="0" marginwidth="0" marginheight="0" scrolling="no" style="border:0;vertical-align:bottom;margin:0;width:300px;height:250px" allowtransparency="true" width="300" height="250" frameborder="0" align="center,center"></iframe></div>
<!-- 多条广告如下脚本只需引入一次 -->
<script type="text/javascript" src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/c.js" async="async" defer="defer"></script></div> </div>
<div class="aside-box">
<div class="persion_article">
<div class="right_box footer_box csdn-tracking-statistics" data-mod="popu_475" data-dsm="post"> <div class="contact-box" id="footer-contact-box"><div class="img-box"><a href="https://bbs.csdn.net/forums/Service?utm_source=csdn_footer" target="_blank"><img src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/csdn_cs_qr.png" alt="微信客服" style="padding: 6px;"></a><p class="app-text">微信客服</p></div><div class="img-box fr"><a href="http://wpa.b.qq.com/cgi/wpa.php?ln=1&amp;key=XzgwMDE4MDEwNl80ODc3MzVfODAwMTgwMTA2XzJf" target="_blank"><img style="padding:6px;" src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/csdn-kf.png" alt="QQ客服"></a><p class="app-text">QQ客服</p></div></div> <div class="contact-info"> <p><svg width="16" height="16" xmlns="http://www.w3.org/2000/svg"><path d="M2.167 2h11.666C14.478 2 15 2.576 15 3.286v9.428c0 .71-.522 1.286-1.167 1.286H2.167C1.522 14 1 13.424 1 12.714V3.286C1 2.576 1.522 2 2.167 2zm-.164 3v1L8 10l6-4V5L8 9 2.003 5z" fill="#5c5c5c" fill-rule="evenodd"></path></svg><a href="mailto:webmaster@csdn.net" target="_blank"><span class="txt">kefu@csdn.net</span></a> <em class="width126"><svg t="1538013544186" width="17" height="17" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="23556" xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"></style></defs><path d="M902.60033922 650.96445566c-18.0718526-100.84369837-94.08399771-166.87723736-94.08399771-166.87723737 10.87530062-91.53186599-28.94715402-107.78733693-28.94715401-107.78733691C771.20003413 93.08221664 517.34798062 98.02553561 511.98620441 98.16348824 506.65661791 98.02553561 252.75857992 93.08221664 244.43541101 376.29988138c0 0-39.79946279 16.25547094-28.947154 107.78733691 0 0-75.98915247 66.03353901-94.0839977 166.87723737 0 0-9.63372291 170.35365477 86.84146124 20.85850523 0 0 21.70461757 56.79068296 61.50407954 107.78733692 0 0-71.1607951 23.19910867-65.11385185 83.46161052 0 0-2.43717093 67.16015592 151.93232126 62.56172014 0 0 108.5460788-8.0932473 141.10300432-52.14626271H526.33792324c32.57991817 44.05301539 141.10300431 52.1462627 141.10300431 52.14626271 154.3235077 4.59843579 151.95071457-62.56172013 151.95071457-62.56172014 6.00095876-60.26250183-65.11385185-83.46161053-65.11385185-83.46161052 39.77647014-50.99665395 61.4810877-107.78733693 61.4810877-107.78733692 96.45219231 149.49514952 86.84146124-20.85850523 86.84146125-20.85850523" p-id="23557" fill="#5c5c5c"></path></svg><a href="http://wpa.b.qq.com/cgi/wpa.php?ln=1&amp;key=XzgwMDE4MDEwNl80ODc3MzVfODAwMTgwMTA2XzJf" class="qqcustomer_s" target="_blank"><span class="txt">QQ客服</span></a></em></p> <p><em class="width126"><svg t="1538012951761" width="17" height="17" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="23083" xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"></style></defs><path d="M466.4934485 880.02006511C264.6019863 859.18313878 107.13744214 688.54706608 107.13744214 481.14947309 107.13744214 259.68965394 286.68049114 80.14660493 508.14031029 80.14660493s401.00286817 179.54304901 401.00286814 401.00286816v1.67343191C908.30646249 737.58941724 715.26799489 943.85339507 477.28978337 943.85339507c-31.71423369 0-62.61874229-3.67075386-92.38963569-10.60739903 30.09478346-11.01226158 56.84270313-29.63593923 81.5933008-53.22593095z m-205.13036267-398.87059202a246.77722444 246.77722444 0 0 0 493.5544489 0 30.85052691 30.85052691 0 0 0-61.70105383 0 185.07617062 185.07617062 0 0 1-370.15234125 0 30.85052691 30.85052691 0 0 0-61.70105382 0z" p-id="23084" fill="#5c5c5c"></path></svg><a href="http://bbs.csdn.net/forums/Service" target="_blank"><span class="txt">客服论坛</span></a></em> <svg t="1538013874294" width="17" height="17" s
</div>
</div>
</aside>
<script src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/publib_footer-1.js" data-isfootertrack="false" type="text/javascript"></script><link rel="stylesheet" type="text/css" href="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/pub_footer_1.css">
<script>
$("a.flexible-btn").click(function(){
$(this).parents('div.aside-box').removeClass('flexible-box');
$(this).remove();
})
</script>
</div>
<div class="mask-dark"></div>
<div class="pulllog-box" style="display: block;">
<div class="pulllog clearfix">
<span class="text float-left">
<div id="dmp_ad_69"><div id="kp_box_69" data-pid="69" data-track-click="{&quot;mod&quot;:&quot;kp_popu_69-796&quot;,&quot;con&quot;:&quot;,,&quot;}"><div style="float:left;margin-right:5px;border:1px solid #f13d3d;padding:2px 5px 0px 5px;">
<a href="https://edu.csdn.net/topic/python115?utm_source=ditong" target="_blank" style="color:#f13d3d;font-weight:bold;text-decoration:none;font-size:15px;">Python怎么学</a>
</div>
<div style="float:left;margin-right:5px;border:1px solid #00BFFF;padding:2px 5px 0px 5px;background:#FFF0F5;">
<a href="https://edu.csdn.net/topic/ai30?utm_source=ditong" target="_blank" style="color:#00BFFF;font-weight:bold;text-decoration:none;font-size:15px;">转型AI人工智能指南</a>
</div>
<div style="float:left;margin-right:5px;border:1px solid #f13d3d;padding:2px 5px 0px 5px;">
<a href="https://edu.csdn.net/topic/ai30?utm_source=ditong" target="_blank" style="color:#f13d3d;font-weight:bold;text-decoration:none;font-size:15px;">人工智能薪资趋势</a>
</div>
<div style="float:left;margin-right:5px;border:1px solid #00BFFF;padding:2px 5px 0px 5px;background:#FFF0F5;">
<a href="https://gitbook.cn/gitchat/column/5c1a1c431e59245d4d2aede1?utm_source=wzl190225" target="_blank" style="color:#00BFFF;font-weight:bold;text-decoration:none;font-size:15px;">IT 巨头的敏捷之路</a>
</div>
<div style="float:left;">
<div id="_91dg87uhy4d"><iframe scrolling="no" src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/s.htm" width="286" height="36" frameborder="0"></iframe></div><script type="text/javascript" src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/ndr3h.js"></script>
<!-- 长文字链
<script type="text/javascript" src="//rabc1.iteye.com/common/5klj5.js?kfxbghx=bx"></script>
-->
</div></div></div> </span>
<div class="pulllog-btn float-right clearfix">
<div class="float-left csdn-tracking-statistics tracking-click" data-mod="popu_557">
<a class="pulllog-login" target="_blank">登录</a>
</div>
<div class="pulllog-sigin float-left csdn-tracking-statistics tracking-click" data-mod="popu_558">
<a href="https://passport.csdn.net/account/mobileregister" target="_blank">注册</a>
</div>
<button class="btn-close">
<svg class="icon" aria-hidden="true">
<use xlink:href="#csdnc-times"></use>
</svg>
</button>
</div>
</div>
</div>
<div id="loginWrap" style="display:none"></div>
<div class="tool-box" style="right: 23.3833px; display: block; top: 48px;">
<ul class="meau-list">
<li class="btn-like-box ">
<button class=" low-height hover-box btn-like " title="点赞">
<svg class="icon active hover-hide" aria-hidden="true">
<use xlink:href="#csdnc-thumbsup-ok"></use>
</svg>
<svg class="icon no-active hover-hide" aria-hidden="true">
<use xlink:href="#csdnc-thumbsup"></use>
</svg>
<span class="hover-show text-box text">
<span class="no-active">点赞</span>
<span class="active">取消点赞</span>
</span>
<p>0</p>
</button>
</li>
<li class="">
<a class="btn-comments low-height hover-box" title="写评论" href="#commentBox">
<svg class="icon hover-hide" aria-hidden="true">
<use xlink:href="#csdnc-comments"></use>
</svg>
<span class="hover-show text">评论</span>
<p class="">
</p>
</a>
</li>
<li>
<button class="btn-bookmark low-height hover-box" title="收藏">
<svg class="icon active hover-hide" aria-hidden="true">
<use xlink:href="#csdnc-bookmark-ok"></use>
</svg>
<svg class="icon no-active hover-hide" aria-hidden="true">
<use xlink:href="#csdnc-bookmark"></use>
</svg>
<span class="hover-show text">收藏</span>
<!-- <span class="hover-show text-box text">
<span class="no-active">收藏</span>
<span class="active">取消收藏</span>
</span> -->
</button>
</li>
<li class="bdsharebuttonbox bdshare-button-style0-16" data-bd-bind="1551757402021">
<div class="weixin-qr btn-comments low-height hover-box">
<a href="#" class="bds_weixin clear-share-style" data-cmd="weixin" title="手机看"></a>
<svg class="icon hover-hide" aria-hidden="true">
<use xlink:href="#csdnc-usephone"></use>
</svg>
<span class="hover-show text text3">
手机看
</span>
</div>
</li>
<li class="widescreen-hide">
<a class="btn-comments low-height hover-box" href="https://blog.csdn.net/wongainia158158/article/details/48627003" title="LibRTMP源代码分析8:发送消息">
<svg class="icon hover-hide" aria-hidden="true">
<use xlink:href="#csdnc-chevronleft"></use>
</svg>
<span class="hover-show text text3">上一篇</span>
</a>
</li>
<li class="widescreen-hide">
<a class="btn-comments hover-box low-height" href="https://blog.csdn.net/wongainia158158/article/details/48627119" title="LibRTMP源代码分析10:处理消息">
<svg class="icon hover-hide" aria-hidden="true">
<use xlink:href="#csdnc-chevronright"></use>
</svg>
<span class="hover-show text text3">下一篇</span>
</a>
</li>
<!-- 宽屏更多按钮 -->
<li class="widescreen-more">
<a class="btn-comments chat-ask-button low-height hover-box" title="快问" href="#chatqa">
<svg class="icon hover-hide" aria-hidden="true">
<use xlink:href="#csdnc-more"></use>
</svg>
<span class="hover-show text">更多</span>
</a>
<ul class="widescreen-more-box">
<li class="widescreen-more">
<a class="btn-comments low-height hover-box" href="https://blog.csdn.net/wongainia158158/article/details/48627003" title="LibRTMP源代码分析8:发送消息">
<svg class="icon hover-hide" aria-hidden="true">
<use xlink:href="#csdnc-chevronleft"></use>
</svg>
<span class="hover-show text text3">上一篇</span>
</a>
</li>
<li class="widescreen-more">
<a class="btn-comments hover-box low-height" href="https://blog.csdn.net/wongainia158158/article/details/48627119" title="LibRTMP源代码分析10:处理消息">
<svg class="icon hover-hide" aria-hidden="true">
<use xlink:href="#csdnc-chevronright"></use>
</svg>
<span class="hover-show text text3">下一篇</span>
</a>
</li>
</ul>
</li>
</ul>
</div>
<script>window._bd_share_config = { "common": { "bdSnsKey": {}, "bdText": "", "bdMini": "1", "bdMiniList": false, "bdPic": "", "bdStyle": "0", "bdSize": "16" }, "share": {} }; with (document) 0[(getElementsByTagName('head')[0] || body).appendChild(createElement('script')).src = 'https://csdnimg.cn/static/api/js/share.js?v=89860594'];</script>
<script>
var recommendCount = 70;
recommendCount = recommendCount > 1 ? (recommendCount + (recommendCount>6 ? 2 : 1)) : recommendCount;
var articleTit = articleTitles;
var ChannelId = 0;
var articleId = "48627039";
var commentscount = 0;
var islock = false;
var curentUrl = "https://blog.csdn.net/wongainia158158/article/details/48627039";
var myUrl = "https://my.csdn.net/";
//1禁止评论,2正常
var commentAuth = 2;
//百度搜索
var baiduKey = "LibRTMP源代码分析9:接收消息 - wongainia158158的博客";
var needInsertBaidu = true;
// 代码段样式
var codeStyle = '';
var highlight = ["librtmp","\u6e90\u4ee3\u7801\u5206\u6790","\u63a5\u6536","\u6d88\u606f"];//高亮数组
// 相关推荐博主数据
var RecommendBlogExpertList = [{"user_name":"byxdaz","nick_name":"byxdaz","avatar":"https:\/\/avatar.csdn.net\/5\/7\/D\/3_byxdaz.jpg","is_expert":true,"article_count":949,"rank":"86"},{"user_name":"wongainia158158","nick_name":"wongainia158158","avatar":"https:\/\/avatar.csdn.net\/8\/D\/C\/3_wongainia158158.jpg","is_expert":false,"article_count":47,"rank":"\u5343\u91cc\u4e4b\u5916"},{"user_name":"leixiaohua1020","nick_name":"\u96f7\u9704\u9a85","avatar":"https:\/\/avatar.csdn.net\/A\/7\/6\/3_leixiaohua1020.jpg","is_expert":true,"article_count":558,"rank":"50"},{"user_name":"qq_29214249","nick_name":"AI\u6280\u672f","avatar":"https:\/\/avatar.csdn.net\/0\/8\/B\/3_qq_29214249.jpg","is_expert":false,"article_count":91,"rank":"\u5343\u91cc\u4e4b\u5916"},{"user_name":"chinabinlang","nick_name":"chinabinlang","avatar":"https:\/\/avatar.csdn.net\/D\/B\/0\/3_chinabinlang.jpg","is_expert":false,"article_count":695,"rank":"539"},{"user_name":"gengxt2003","nick_name":"gengxt2003","avatar":"https:\/\/avatar.csdn.net\/6\/A\/B\/3_gengxt2003.jpg","is_expert":false,"article_count":228,"rank":"4000+"},{"user_name":"huangmindong","nick_name":"huangmindong","avatar":"https:\/\/avatar.csdn.net\/D\/C\/F\/3_huangmindong.jpg","is_expert":false,"article_count":298,"rank":"\u5343\u91cc\u4e4b\u5916"},{"user_name":"xiapang009","nick_name":"\u5c0f\u5b66\u751f009","avatar":"https:\/\/avatar.csdn.net\/C\/7\/3\/3_xiapang009.jpg","is_expert":false,"article_count":55,"rank":"\u5343\u91cc\u4e4b\u5916"},{"user_name":"wishfly","nick_name":"Tianyu-liu","avatar":"https:\/\/avatar.csdn.net\/4\/E\/7\/3_wishfly.jpg","is_expert":false,"article_count":2989,"rank":"75"},{"user_name":"tongjing524","nick_name":"tongjing524","avatar":"https:\/\/avatar.csdn.net\/6\/A\/0\/3_tongjing524.jpg","is_expert":false,"article_count":31,"rank":"\u5343\u91cc\u4e4b\u5916"}];
var articleType = 1;
var CopyrightContent = '';
</script>
<script src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/sandalstrap.js"></script>
<script src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/paging.js"></script>
<script src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/goTop-v1.js"></script>
<script>
GoTop({
right: 8,
hasReport: true,
reportFun: function() {
showReport(false,articleTit);
}
})
</script><div class="meau-gotop-box" style="right: 8px; bottom: 40px; z-index: 110; left: 1137.85px;"><a href="https://mall.csdn.net/vip_code" id="adContent" class="btn-meau"> </a> <a href="#" id="backtop" class="btn-meau" title="返回顶部"> <svg xmlns="http://www.w3.org/2000/svg" width="19" height="12"> <path d="M9.314 0l9.313 9.314-2.12 2.121-7.193-7.192-7.193 7.192L0 9.314z" fill="#FFF" fill-rule="evenodd"></path> </svg> </a> <a href="#" id="reportContent" class="btn-meau" title="举报"> <svg xmlns="http://www.w3.org/2000/svg" width="18" height="22"><path d="M0 13.028V3.365L9 0l9 3.365v9.663C18 17.983 13.97 22 9 22s-9-4.017-9-8.972zm2-8.282v8.282c0 3.854 3.134 6.978 7 6.978s7-3.124 7-6.978V4.746L9 2.13 2 4.746zm6 10.276h2v1.993H8v-1.993zm0-8.973h2v6.979H8V6.049z" fill="#FFF" fill-rule="nonzero"></path></svg> </a></div>
<div class="fourth_column">
<div class="title-box">
<b class="title">猿学习</b>
<span class="fourth_column_close">
<svg class="icon" aria-hidden="true">
<use xlink:href="#csdnc-times"></use>
</svg>
</span>
</div>
<ul class="">
<li><div id="kp_box_456" data-pid="456" data-track-click="{&quot;mod&quot;:&quot;kp_popu_456-802&quot;,&quot;con&quot;:&quot;,,&quot;}"><a href="https://edu.csdn.net/topic/python115?utm_source=blogright" target="_blank"> <div class="blogkp1"><img src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/201901081438577084.png" width="100" height="100"><h6>程序员2019年学Python</h6></div></a></div></li> <li><div id="kp_box_457" data-pid="457" data-track-click="{&quot;mod&quot;:&quot;kp_popu_457-681&quot;,&quot;con&quot;:&quot;,,&quot;}"><img src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/201901081453403307.jpg" width="100" height="100"></div></li> <li><div id="kp_box_458" data-pid="458" data-track-click="{&quot;mod&quot;:&quot;kp_popu_458-640&quot;,&quot;con&quot;:&quot;,,&quot;}"><a href="https://gitchat.csdn.net/column/5a7d1a13a7f22b3dffca7e49?utm_source=csdn100" target="_blank"><div class="blogkp3"><img src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/201811091452349556.png" width="100" height="100"><h6>Python 爬虫和数据分析实战</h6><span style="position:absolute;right:0;bottom:0;background:url(https://img-ads.csdn.net/2016/201608021757063065.png) no-repeat;width:33px;height:18px;display:block;z-index: 9999;"></span></div></a></div></li> <li><div id="kp_box_459" data-pid="459" data-track-click="{&quot;mod&quot;:&quot;kp_popu_459-684&quot;,&quot;con&quot;:&quot;,,&quot;}"><img src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/201811231419286183.jpg" width="100" height="100"></div></li> </ul>
</div>
<script type="text/javascript">
$('.fourth_column_close').click(function(){
$('.fourth_column').remove();
})
</script>
<!-- 右侧第四栏end -->
<!-- 高亮未与 markdown兼容 -->
<link rel="stylesheet" href="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/chart.css">
<script type="text/javascript" src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/chart.js"></script>
<script type="text/javascript" src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/widget2chart.js"></script>
<link rel="stylesheet" href="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/atom-one-light.css">
<script type="text/javascript" src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/pc_wap_common-98040b5dc6.js"></script>
<script type="text/javascript">
$(function(){
var allEscRegex = /&(lt|gt|amp|quot|nbsp|shy|#\d{1,5});/g,
namedEntities = {
lt: '<',
gt: '>',
amp: '&',
quot: '"',
nbsp: '\u00a0',
shy: '\u00ad'
}
var allEscDecode = function( match, code ) {
return namedEntities[ code ];
};
htmlDecodeAttr = function( text ) {
return text.replace( allEscRegex, allEscDecode );
}
hljs.initHighlighting();
hljs.initCopyButtonOnLoad();
hljs.initLineNumbersOnLoad();
if($('pre .language-plain').length>0){
$('pre .language-plain').each(function(i,e){
var highlightRe = hljs.highlightAuto(htmlDecodeAttr(e.innerHTML))
e.innerHTML = highlightRe.value;
e.className = 'language-'+highlightRe.language;
});
}
})
</script>
<script src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/a"></script>
<script src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/common-eb024b1a9c.js"></script>
<script src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/detail-001720469e.js"></script>
<script src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/baidu-search.js" type="text/javascript"></script>
<script src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/skin3-template-fc7383b956.js"></script>
<!-- <script type="text/javascript" src="//g.csdnimg.cn/check-adb/1.0.2/check-adb.js"></script> -->
<script type="text/javascript" src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/MathJax.js"></script>
<script type="text/x-mathjax-config;executed=true">
MathJax.Hub.Config({
"HTML-CSS": {
linebreaks: { automatic: true, width: "94%container" },
imageFont: null
},
tex2jax: {
preview: "none"
},
mml2jax: {
preview: 'none'
}
});
</script>
<script type="text/javascript">
window.baidu_blueword ={
di:'24004469_oem_dg',
id:['content_views'],// 需要飘蓝区域:id要求以数组或,分隔的字符串形式传入
blueclass:['baidu_pl'],// 需要飘蓝区域:class要求以数组或,分隔的字符串形式传入, 传入值会覆盖默认值
user:'',
isMobile:false,
title: document.title,
page_url: location.href,
ignore:'baidu-blue-word-no',// 需要忽略掉的区域1
frequency:1,// 词频1
maxword:3// 最大接受飘词个数
}
</script>
<script src="LibRTMP%E6%BA%90%E4%BB%A3%E7%A0%81%E5%88%86%E6%9E%909%EF%BC%9A%E6%8E%A5%E6%94%B6%E6%B6%88%E6%81%AF%20-%20wongainia158158%E7%9A%84%E5%8D%9A%E5%AE%A2%20-%20CSDN%E5%8D%9A%E5%AE%A2_files/bword.js"></script>
<div style="position:fixed; top:0; left:0; overflow:hidden;"><input style="position:absolute; left:-300px;" type="text" id="focus_retriever" readonly="true"></div><div id="pointDivs"><div class="point-outer point-pre"><div class="point-inner"></div></div><div class="point-outer point-pre"><div class="point-inner"></div></div><div class="point-outer point-pre"><div class="point-inner"></div></div><div class="point-outer point-pre"><div class="point-inner"></div></div><div class="point-outer point-pre"><div class="point-inner"></div></div></div><div class="report-box"> <div class="pos-box"> <h2 class="title">不良信息举报</h2> <a class="btn-close"> <svg class="icon" aria-hidden="true"> <use xlink:href="#csdnc-times"></use> </svg> </a> <form id="frmReport"> <div class="form-box"> <div class="txt-row-box"> <label class="title" id="reptTit">举报内容:</label> <p class="rpt-title text-truncate">LibRTMP源代码分析9:接收消息 - wongainia158158的博客</p> </div> <div class="txt-row-box"> <label class="title">举报原因:</label> <div class="rdo-box"> <label><input type="radio" class="rdo-chk report-type" id="report_sex" name="report_type" value="1">色情</label> <label><input type="radio" class="rdo-chk report-type" id="report_Politics" name="report_type" value="2">政治</label> <label><input type="radio" class="rdo-chk report-type" id="report_copy" name="report_type" value="3">抄袭</label> <label><input type="radio" class="rdo-chk report-type" id="report_ad" name="report_type" value="4">广告</label> <label><input type="radio" class="rdo-chk report-type" id="report_want" name="report_type" value="5">侵权</label> <label><input type="radio" class="rdo-chk report-type" id="report_call" name="report_type" value="6">骂人</label> <label><input type="radio" class="rdo-chk report-type" id="report_other" name="report_type" value="7">其他</label> </div> </div> <div class="txt-row-box" id="rptOriginalurl"> <label class="title">原文地址:</label> <div class="txt-box"> <input class="ipt" type="text" id="originalurl" name="originalurl"> </div> </div> <div class="txt-row-box"> <label class="title">原因补充:</label> <div class="txt-box"> <textarea class="ipt ipt-textarea" name="description" maxlength="30"></textarea> <p class="remark">最多只允许输入30个字</p> </div> </div> </div> <div class="opt-box text-right"> <input type="reset" class="btn btn-link-gray btn-close" value="取消"> <input type="submit" class="btn btn-red btn-submit" value="提交"> </div> </form> </div> </div><iframe class="bdSug_sd" style="display: none; position: absolute; border-width: 0px;"></iframe><div id="bdSug_1551757401805" class="bdSug_wpr" style="display: none;"></div></body><!-- 右侧第四栏 --></html>