海康威视GB28181视频流接收解析显示

2019-3-1

海康威视国标GB28181获取视频流并显示

环境:

MFC,jRtp,ffmpeg,sdl2.0,eXosip,

海康威视摄像头:DS-2CD3T27EDWD-L

思路:

利用eXosip实现sip服务端及客户端,实现GB28181协议交互

利用jRtp接收摄像头rtp视频流

利用ffmpeg解码视频流(由于海康威视ps视频流里面含有一些私有协议会导致花屏,因此这边需要先把ps流解析成H264视频流)

利用sdl显示视频

标签: c++ ffmpeg rtp SDL

评论(0) 浏览(210)

利用dll生成lib

2018-4-29 C++

业务场景:

使用libvlc3.02 SDK提供的lib及dll编译运行程序,提示找不到XXX于动态链接库libvlc.dll上

解决办法:

直接利用libvlc.dll生成libvlc.lib

步骤:

dumpbin.exe:dll导出函数

C:\Program Files (x86)\Microsoft Visual Studio 8\VC\bin>dumpbin libvlc.dll /EXPORTS /OUT:libvlc.def

编辑libvlc.def只留下函数所在的行

          1    0 00002B30 libvlc_add_intf
          2    1 0000BB60 libvlc_audio_equalizer_get_amp_at_index
          3    2 0000B980 libvlc_audio_equalizer_get_band_count

python:格式化def

file = open(r"D:\Beihai\python\libvlco.def")
files = open(r"D:\Beihai\python\libvlc.def", "w")
fc = 1
while 1 :
    line = file.readline()
    if not line :
        break
    sl = line.split()
    #print sl[-1]
    nl = sl[-1] + " @ " + str(fc) + "\n"
    fc = fc + 1
    files.write(nl)
file.close()
files.close()

lib:利用def生成lib

lib /def:libvlc.def /MACHINE:IX86 /out:libvlc.lib



标签: python c++ def dll

评论(0) 浏览(956)

c++面试

2017-9-6 C++

基础:

进程与线程的区别

写一个宏返回最小值

双向链表删除某个节点,插入节点

单链表反转

字符串反转

String构造类、操作符=重载

字符串循环右移

exe的文件头结构

虚构函数可以直接调用吗

构造函数初始化列表异常捕获

Makefile怎么编译一个文件

dll信息在exe头文件哪里

gdb调试bt有什么作用

算法:

    牛牛判断牛几算法

int grad(int *arr, int len)

{   

    for (int i = 0; i < len; i++)

    {   

        for (int j = 0; j < len; j++)

        {   

            for (int k = 0; k < len; k++)

            {   

                if (i !=j && i !=k && k != j)

                {   

                    if ((arr[i] + arr[j] + arr[k]) % 10 == 0)

                    {   

                        int sum = 0; 

                        for (int l = 0; l < len; l++)

                        {   

                            sum += arr[l];

                        }

                        return (sum - arr[i] - arr[j] - arr[k]) % 10;

                    }

                }

            }

        }

    }

    return -1;

}


    k个任务,每个任务有开始时间和结束时间,求24小时内最大执行任务数


    斗地主随机洗牌算法


Fisher–Yates shuffle 洗牌算法

void shuffle(int *arr, int len)

 {

    for (int i = len - 1; i >= 0; i--)

    {

        int randomIndex = rand() % (i + 1);

        int itemIndex = arr[randomIndex];

        arr[randomIndex] = arr[i];

        arr[i] = itemIndex;

    }

 }



使用:

    多线程无锁编程:

http://blog.csdn.net/zzulp/article/details/6259866


     send与write区别:


在功能上,read/write是recv/send的子集。read/wirte是更通用的文件描述符操作,而recv/send在socket领域则更“专业”一些。

当recv/send的flag参数设置为0时,则和read/write是一样的。

如果有如下几种需求,则read/write无法满足,必须使用recv/send:

  1. 为接收和发送进行一些选项设置
  2. 从多个客户端中接收报文
  3. 发送带外数据(out-of-band data)


标签: c++

评论(0) 浏览(965)

Powered by EMLOG Copyright @ 狼酒 版权所有. 闽ICP备14012694号-2