由于要测试8148解码器的性能,需要搭建不同帧率25fps - >30fps,宏块大小defualt 100 000 -》 200 000不同大小的h264码流,所以就需要编译改动的live555 server ,没想到很顺利,用的是vs2010,一步到位没报任何错误。这里做一下笔记方便下次使用:

1.准备源码www.live555.com 下载最新源码包,解压

主要包括服务端和客户端

用到的主要有4大模块:livemedia groupsock  basicuseageenvironmental usageenvironment  +testprogs

服务端:livemedia groupsock basicuseageenironmental usageenvironmental + mediaserver

客户端:livemedia groupsock basicusageenvironmental usageenvironmental + testprogs(单路收取流的话就用:openrtsp.cpp playcommon.cpp 再转发的话加个fifo.c队列缓存)

2.编译选用win32工程先说客户端

先建一个空的工程,然后添加所有live555目录下的include下的头文件.hh添加到header头文件里面,然后添加cpp文件主要是四大模块livemedia groupsock basicusageenvironmental usageenvironmental 不包括testprogs ,为了方便调用,app testprogs 独立建一个工程目录myclient 然后在里面添加openrtsp.cpp playcommon.cpp playcommon.hh;

文件添加完之后,得设置工程属性:

VS2010添加方法如下:

方法一:

工程properties

linker->input->additional depandencies

方法二:

直接包含

#include<winsock2.h>

#pragma comment(lib,"ws_32.lib")

继续在工程里面

工程properties

c/c++->general->additional Include Directories 包含include下的所有头文件爱你.hh(我这里就全部在一个工程目录下live555server/client)

服务端一样,不同的是在api 不同服务端有个专门的mediaserver 目录 作为主程序,我们直接将下面的两个DynamicRTSPServer.cpp live555MediaServer.cpp两个 文件添加到myserver 工程目录下。

####################1 片包大小

顺便修改下maxbuffer 宏块大小在dynamicrtspserver.cpp中:

NEW_SMS("H.264 Video");
OutPacketBuffer::maxSize = 200000; // allow for some possibly large H.264 frames
printf("maxsize h264 change by pkf 200k!\n");

####################2 帧率大小

在h264or5streamframer.cpp中:

////////// H264or5VideoStreamFramer implementation //////////

H264or5VideoStreamFramer
::H264or5VideoStreamFramer(int hNumber, UsageEnvironment& env, FramedSource* inputSource,
Boolean createParser, Boolean includeStartCodeInOutput)
: MPEGVideoStreamFramer(env, inputSource),
fHNumber(hNumber),
fLastSeenVPS(NULL), fLastSeenVPSSize(0),
fLastSeenSPS(NULL), fLastSeenSPSSize(0),
fLastSeenPPS(NULL), fLastSeenPPSSize(0) {
fParser = createParser
? new H264or5VideoStreamParser(hNumber, this, inputSource, includeStartCodeInOutput)
: NULL;
fNextPresentationTime = fPresentationTimeBase;
fFrameRate = 25.0; // We assume a frame rate of 25 fps, unless we learn otherwise (from parsing a VPS or SPS NAL unit)
}

然后就是building咯。。。ok完成

2014-12-11 关于帧率修改的修正:

上面的帧率只是在帧率为0的情况下的默认值,后面会被同文件下的里一个函数重新复制修改unsigned H264or5VideoStreamParser::parse() 这个解析函数有如下修改:

else if (isSPS(nal_unit_type)) { // Sequence parameter set
// First, save a copy of this NAL unit, in case the downstream object wants to see it:
usingSource()->saveCopyOfSPS(fStartOfFrame + fOutputStartCodeSize, curFrameSize() - fOutputStartCodeSize);

if (fParsedFrameRate == 0.0) {
// We haven't yet parsed a frame rate from the stream.
// So parse this NAL unit to check whether frame rate information is present:
unsigned num_units_in_tick, time_scale;
analyze_seq_parameter_set_data(num_units_in_tick, time_scale);
if (time_scale > 0 && num_units_in_tick > 0) {
usingSource()->fFrameRate = fParsedFrameRate = 25;//2*time_scale/(2.0*num_units_in_tick);//这里才是真正的产生作用的地方!

2015-5-18 关于server read file loop:

在bytestreamfilesource.cpp 中的handleClosure();前面添加

if(feof(fFid))
{
fprintf(stderr,"frames=%d,tostremf = %d, fmaxs=%d\n",fPreferredFrameSize,fLimitNumBytesToStream,fMaxSize);
SeekFile64(fFid, 0, SEEK_SET);
doReadFromFile();
return;
}

3.live555mediaserver 的使用:把x.h264 文件和live555_server.exe放同一目录下运行.exe  版本0.83

4.最后美图附图一张

http://www.cnblogs.com/-simple-/p/3398009.html

http://www.cnblogs.com/skyseraph/archive/2012/04/11/2442840.html

http://blog.csdn.net/aobai219/article/details/5841951

http://blog.csdn.net/lf8289/article/details/7785898

http://blog.csdn.net/wolfliuming/article/details/6087070

http://download.csdn.net/detail/zgzhaobo/4220620

流媒体开发之开源项目live555---live555 server 编译 包括更改帧率大小的更多相关文章

  1. 流媒体开发之开源项目live555---更改server端的帧率大小和码率大小

    -----------------------------qq:1327706646 010101010101010110010101010101010101010author:midu 010101 ...

  2. 关于Linux开源项目基础组件make编译流程

     关于Linux开源项目基础组件make编译流程 非常多Linux开源项目都会用到编译出可运行文件的make.这个是有一套流程的. 首先,GNU构建系统:https://en.wikipedia. ...

  3. iOS开发之开源项目链接

    1. Coding iOS 客户端 Coding官方客户端. 笔者强烈推荐的值得学习的完整APP.GitHub - Coding/Coding-iOS: Coding iOS 客户端源代码 2. OS ...

  4. 使用GitHub进行协同项目开发和开源项目贡献

    本教程致力于摆脱git命令行快速的学习使用GitHub. 此次是GitHub课程的第三次课程,也是最后一次课程.推荐进行按照次序查看本次教程.上篇文章:程序员,一起玩转GitHub版本控制,超简单入门 ...

  5. 《云阅》一个仿网易云音乐UI,使用Gank.Io及豆瓣Api开发的开源项目

    CloudReader 一款基于网易云音乐UI,使用GankIo及豆瓣api开发的符合Google Material Desgin阅读类的开源项目.项目采取的是Retrofit + RxJava + ...

  6. 一款属于自己的笔记本【vue+gin+elementUI前后端分离开发部署开源项目】

    前言 我为什么要写一个个人的云笔记? (⊙o⊙)-额额额

  7. idea开发时springboot项目时的自动编译和热部署

    前提:最好将idea的启动器设置一下 操作:1.file > Build,Execution,Deployment > Compiler 勾选 Build project automati ...

  8. 【分享】2017 开源中国新增开源项目排行榜 TOP 100

    2017 年开源中国社区新增开源项目排行榜 TOP 100 新鲜出炉! 这份榜单根据 2017 年开源中国社区新收录的开源项目的关注度和活跃度整理而来,这份最受关注的 100 款开源项目榜单在一定程度 ...

  9. 开源项目大全 >> ...

    http://www.isenhao.com/xueke/jisuanji/kaiyuan.php   监控系统-Nagios 网络流量监测图形分析工具-Cacti 分布式系统监视-zabbix 系统 ...

随机推荐

  1. NYOJ 745 首尾相连数组的最大子数组和

    首尾相连数组的最大子数组和 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 给定一个由N个整数元素组成的数组arr,数组中有正数也有负数,这个数组不是一般的数组,其首 ...

  2. [uiautomator篇][11]wifi

    package com.softwinner.network.wifi; import android.content.Context; import android.content.Intent; ...

  3. HDU-1392 Surround the Trees,凸包入门!

    Surround the Trees 此题讨论区里大喊有坑,原谅我没有仔细读题还跳过了坑点. 题意:平面上有n棵树,选一些树用绳子围成一个包围圈,使得所有的树都在这个圈内. 思路:简单凸包入门题,凸包 ...

  4. 03-for循环in遍历

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  5. 【2018.10.10】[HNOI2008] GT考试(bzoj1009)

    10pts: 暴力枚举字符串,Hash判是否出现.(真会有人写么) 时间复杂度$O(10^n*n)$. 40pts: 学过OI的人都会写的dp 如果这道题的40pts($n\le 250000$)设成 ...

  6. 【SPOJ1825】Free tour II (点分治,启发式)

    题意: 边权可能为负 思路: 感觉我自己写的还是太过僵硬了,可以灵活一点,比如可以多写几个不同的dfs求出不同的信息,而不是压到同一个dfs里 #include<cstdio> #incl ...

  7. 更改navigationBar 颜色

    
 
 if (IS_IOS7()) { /* iOS7 时 Navigation 颜色 */ [[UINavigationBar appearance] setBarTintColor: HexCo ...

  8. 2017 ACM/ICPC Asia Regional Shenyang Online 记录

    这场比赛全程心态爆炸…… 开场脑子秀逗签到题WA了一发.之后0贡献. 前期状态全无 H题想复杂了,写了好久样例过不去. 然后这题还是队友过的…… 后期心态炸裂,A题后缀数组理解不深,无法特判k = 1 ...

  9. C#/.NET基于Topshelf创建Windows服务的守护程序作为服务启动的客户端桌面程序不显示UI界面的问题分析和解决方案

    本文首发于:码友网--一个专注.NET/.NET Core开发的编程爱好者社区. 文章目录 C#/.NET基于Topshelf创建Windows服务的系列文章目录: C#/.NET基于Topshelf ...

  10. NFV产品如何才能走向规模商用

    作者简介:王晔,烽火通信科技股份有限公司ICT网络产品线NFV产品总监,高级工程师,研究方向为SDN\NFV\MEC\AI\光通信. 自2013年AT&T率先提出DOMAIN 2.0网络转型计 ...