![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
音视频开发学习
zhuxian2009
音视频,流媒体。量化交易系统,大道至简。
展开
-
icedemo的p2p打洞使用方法
在公网部署一个coturn服务器,记住它的ip和username、password。pisip提供了一个demo程序----icedemo。5.执行icedeo,连接coturn服务器。10.抓包查看,可以发现是通过p2p发送的。按照README.txt的指示,很简单。此时需要coturn的信息了哈。4.找到icedemo的位置。2.下载pjsip源码。原创 2022-11-25 19:52:44 · 613 阅读 · 0 评论 -
ubuntu20.04搭建janus服务器
配置/opt/janus/etc/janus/janus.transport.websockets.jcfg。配置/opt/janus/etc/janus/janus.transport.http.jcfg。修改/opt/janus/share/janus/demos/settings.js。配置/opt/janus/etc/janus/janus.jcfg。二、编译janus v1.1.0。可以访问了:https://ip。七、编译janus报错记录。四、编译配置nginx。六、配置janus文件。原创 2022-11-21 18:25:30 · 1873 阅读 · 3 评论 -
wirshark解析自定义协议,并且从自定义协议截取部分字段保存文件
2.通过在工具菜单下,加入一个菜单项目,将自定义协议中的payload提取后,保存为原始数据。1.将自定义协议由wirshark解析。原创 2022-10-31 15:33:54 · 611 阅读 · 0 评论 -
RTCP的NTP
NTP timestamp, most significant word:64位,共8字节。后32 位(LSW)是此时间的小数部,因此,它可以表示数据发送出去的绝对时间。前32位(MSW)是从1900 年1 月1 日0 时开始到现在的。原创 2022-10-17 16:24:27 · 436 阅读 · 0 评论 -
ffmpeg把mp4推rtsp报错:AAC with no global headers is currently not supported.
【代码】ffmpeg把mp4推rtsp报错:AAC with no global headers is currently not supported.原创 2022-09-30 14:07:31 · 1351 阅读 · 0 评论 -
弱网测试工具WANEM
因此,WANem允许应用程序开发团队设置一个透明的应用程序网关,该网关可用于模拟WAN特性,如网络延迟、数据包丢失、数据包损坏、断开连接、数据包重新排序、抖动等。因此,WANem提供了广域网特性的仿真,从而允许数据/语音应用程序在以合理的成本投入生产之前,在现实的WAN环境中进行测试。您可以让我们知道您对改进范围的看法,或者如果您希望尽可能地作出贡献,或者当然只是给我们一个鼓励的字条。基于重新掌握的Knoppix光盘,WANem允许在任何开发环境中使用直观的web界面快速轻松地进行设置,以便进行配置。原创 2022-09-21 11:36:08 · 616 阅读 · 0 评论 -
C++11 定时器
【代码】C++11 定时器。原创 2022-09-14 11:35:09 · 2037 阅读 · 1 评论 -
从H265文件读取nalu
【代码】从H265文件读取nalu。原创 2022-08-30 10:49:43 · 521 阅读 · 0 评论 -
ffmpeg命令把Hevc 10bit转成8bit,不需要SEI
【代码】ffmpeg命令把Hevc 10bit转成8bit。原创 2022-08-26 16:43:56 · 1569 阅读 · 0 评论 -
YUV填充为黑色背景
int8_t *data = new int8_t[src_frame_w*src_frame_h*3/2];memset(data, 0x10, src_frame_w*src_frame_h);memset(data+src_frame_w*src_frame_h, 0x80, src_frame_w*src_frame_h/2);delete[] data;原创 2022-06-04 11:11:02 · 791 阅读 · 0 评论 -
ffmpeg命令行记录
1. 修改mp4的tbn-video_track_timescale 30000原创 2021-03-12 19:43:56 · 881 阅读 · 0 评论 -
RGB转YUV
实现三个功能1.生成一个RGB32的文件(用于验证是否正常)2.RGB32转NV123.RGB32转YUV420// rgb2yuv.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include <iostream>void FillYUV420BackGround(int8_t *pYUV, int nYUVLen, int nW, int nH, int nR, int nG, int nB){ int8_t *pY =原创 2022-04-15 14:12:05 · 872 阅读 · 0 评论 -
linux下搭建opencv 4.5开发环境及Demo
1.centos2.官网下载源码https://github.com/opencv/opencv/tagshttps://github.com/opencv/opencv/tags3.解压unzip opencv-4.5.5.zipcd opencv-4.5.54.配置mkdir buildcd buildcmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/data1/xxx/workspace/opencv/o原创 2022-04-02 16:49:17 · 4702 阅读 · 0 评论 -
NVIDA显卡支持的编码器+解码器对应表
Video Encode and Decode GPU Support Matrixhttps://developer.nvidia.com/video-encode-and-decode-gpu-support-matrix-new#Encoder原创 2022-03-23 17:49:56 · 12609 阅读 · 0 评论 -
windows下的OpenGL视频播放器开发环境
目录一、GLFW二、GLAD三、新建VS工程四、配置VS工程五、一个简单的Demo程序六、编译运行本文记录VS2017开发OpenGL的环境。首先,选择OpengGL的库,glfw+glad一、GLFWGLFW是一个开源的多平台库,用于桌面上的 OpenGL、OpenGL ES 和 Vulkan 开发。它提供了一个简单的 API,用于创建窗口、上下文和表面,接收输入和事件。GLFW 是用 C 语言编写的,支持 Windows、macOS、X11 和 Wayla..原创 2022-02-02 15:12:48 · 3558 阅读 · 0 评论 -
yuv从4k缩小到1080p
将yuv做scale,注意考虑两种比较容易实现的方式,libyuv和ffmpeg的sws;但是yuv在在4k scale到1080p时,小字体会效果比较差,基本都是像蚂蚁啃咬过的,断断续续,看不清;以下对libyuv和ffmepg做scale的每帧耗时和大概效果做了统计:libyuv 4k -> 1080p kFilterLinear 3ms 字迹断裂,不清晰,无法辨识小字体kFilterBox 3-4ms 字迹断裂,不清晰,无法辨识小字体kFil原创 2021-11-19 16:43:29 · 1369 阅读 · 0 评论 -
pcap回放——tcpreplay
一 需求1.用wireshark抓了一段rtp包,需要对它进行回放,反复调试;2.需要将这个rtp的pcap包,可以发送到两个不同的ip地址二 tcpreplay官网:https://tcpreplay.appneta.com/https://tcpreplay.appneta.com/wiki/installation.htmlTcpreplay 是一套免费的开源实用程序,用于编辑和重放以前捕获的网络流量。 最初设计用于将恶意流量模式重播到入侵检测/预防系统,它已经经历了许多演原创 2021-10-19 10:57:36 · 6941 阅读 · 0 评论 -
avformat_open_input打开不存在的rtsp阻塞
网上很多文章,说到avformat_open_input阻塞,就设置一下av_dict_set(&avdic, "stimeout ", "300000", 0);ffmpeg源码rtsp.c有这样一段定义{ "timeout", "set maximum timeout (in seconds) to wait for incoming connections (-1 is infinite, imply flag listen)", OFFSET(initial_timeout)原创 2021-09-22 11:52:45 · 1834 阅读 · 2 评论 -
PCM 大端(S16BE)和小端(S16LE)分析,及转换
planar或者packedPCM音频原始数据的存储排列方式中,有planar或者packed(Interleaved),对于双通道的planar,类似于:LLLL...RRRR...对于双通道的packed(Interleaved),类似于:LRLRLRLR...在ffmpeg的AVCodecID(avcode.h)中定义了编码ID,其中,未带_PLANAR表示交织方式,反正,为planar方式AV_CODEC_ID_PCM_S16LE = 0x10000,AV_C原创 2021-09-18 11:59:14 · 9744 阅读 · 1 评论 -
python使用ffprobe提取mp4文件的时长duration
import subprocessdef get_duration(file): """Get the duration of a video using ffprobe.""" cmd="ffprobe -i %s -show_entries format=duration -v quiet -of csv=\"p=0\"" %(file) output = subprocess.check_output( cmd, shell=True...原创 2021-07-14 18:49:43 · 1124 阅读 · 0 评论 -
PandoraBox client模式——承继其他Wi-Fi热点共享给有线
现在有1. 一台有线的网络红外摄像头2. 一个PandoraBox无线路由器;3. 一台mac笔记本4.一根短短的网线5.一只神秘的小老鼠要实现一个需求:将摄像头放到不同的位置,监测老鼠的行踪。首先:用PandoraBox无线路由器连接家里的wifi,然后摄像头通过短网线,连接到PandoraBox,这样,摄像头与PandoraBox就可以绑定在一起,随意摆放了!登陆PandoraBox;root/admin“无线”选项中,搜索所有的wifi热点将Pand原创 2021-06-27 16:39:01 · 1553 阅读 · 0 评论 -
ubuntu 19.04下交叉编译64位vlc 3.0.8
一、前言尝试了很多ubuntu版本和vlc版本。尝试了16.04编译3.0.8;尝试了18.04编译3.0.8、3.0.11、4.0,32位、64位;尝试了19.04、19.10、20.04;都会存在各种这样的报错,有的报错相同,有的报错不同;以至于消耗了很多时间精力,但也因此对vlc编译熟悉了很多。如果想编译一个可用的版本,按照规范操作,一路顺畅;如果想体验解决问题的成就感,请随意。二、环境准备ubuntu 19.04(虚拟机)vlc 3.0.8三、参考文献..原创 2021-01-09 13:16:44 · 2120 阅读 · 5 评论 -
使用ffmpeg编码h264,降低CPU使用率的几个方法
ffmpeg做h264编码,使用了libx264;想要降低cpu使用率,就需要牺牲图像质量;由于已经使用 baseline,就无需考虑B帧了。目前能想到的,主要是需要调控以下一些参数:1.qp值此值范围为0~51 。值越小,量化步长越小,量化的精度就越高,意味着同样画质的情况下,产生的数据量可能会更大。数值越大,图像越模糊,CPU使用率越低。2.设置编码速度preset指定编码速度,速度越慢,画质越好,cpu占用越高,可取值:ultrafast,superfast,veryfast原创 2020-09-08 21:18:55 · 8639 阅读 · 1 评论 -
字节对齐的一段代码
64字节对齐,先贴代码:#define IS_ALIGNED(p, a) (!((uintptr_t)(p) & ((a)-1)))#define align_buffer_64(var, size) \ uint8* var##_mem = (uint8*)(malloc((size) + 63)); /* NOLINT */ \ uint8* var = (uint8*)(((intpt原创 2020-08-17 17:46:58 · 310 阅读 · 0 评论 -
多显示器下判断ppt是否全屏播放
#include <Windows.h>#include <stdio.h>#include <tchar.h>#include <string.h>#include <iostream>#include <TlHelp32.h>#include <vector>#include <algorithm>bool CheckSame(DWORD dwProcessID, int niX, int.原创 2020-07-10 19:03:10 · 400 阅读 · 0 评论 -
Win32 Wave API录音
录音流程:waveInOpen -> waveInPrepareHeader -> waveInAddBuffer -> waveInStart -> waveInStop -> waveInReset ->waveInUnprepareHeader -> waveInClose本次采用CALLBACK_EVENT方式,每次采集20ms数据,并且用WaitForSingleObject等待事件,每20ms写一次录音数据;一共录制20秒。#include原创 2020-07-03 17:12:13 · 482 阅读 · 0 评论 -
最简短的写测试文件代码段
static int nCount = 0; static FILE *pMyPCMFile = fopen("./test.pcm", "wb"); if(NULL!=pMyPCMFile && nCount<1000) { fwrite(pPl...原创 2019-12-18 14:47:58 · 165 阅读 · 0 评论 -
linux下交叉编译android版本的libSDL2.so
编译android下的SDL库,就像是做一道菜。需要你先准备好食材、刀具、砧板.......哦,怎么炒?不懂得,先看官方教程Building SDL2 for Android转入正题,开始准备食材了:linux——debian 9(debian-9.0.0-i386-DVD-1.iso)SDL源码——SDL2-2.0.5.zipandroid NDK——andr原创 2017-07-24 20:30:05 · 2735 阅读 · 0 评论 -
ffmpeg生产rtp流
录像文件转成h264的rtp流,当下主流的流媒体服务器可识别的rtp流:ffmpeg -re -i input -an -f rtp -c:v libx264 -profile baseline -slices 10 -rtpflags h264_mode0 -payload_type 97 -pkt_size 1460 -slice-max-size 1400 rtp://IP:Po原创 2017-01-06 17:00:10 · 2330 阅读 · 1 评论 -
ImageMagick简介
Use ImageMagick® to create, edit, compose, or convert bitmap images. It can read and write images in a variety of formats (over 200) including PNG, JPEG, JPEG-2000, GIF, TIFF, DPX, EXR, WebP, Po翻译 2016-10-11 14:34:04 · 399 阅读 · 0 评论 -
ffmpeg接收g723音频流
m=audio 19000 RTP/AVP 4 8a=rtpmap:4 G723/8000c=IN IP4 192.168.....以上是sdp文件,比如取名叫做:1.sdp然后,用ffmpeg来接收数据,并且转成wav格式ffmpeg -i 1.sdp -y g723_wav.wav原创 2016-04-30 12:18:35 · 1373 阅读 · 0 评论 -
red5下载链接
https://builds.apache.org/view/M-R/view/OpenMeetings/job/red5-installer/lastSuccessfulBuild/artifact/windows/work/setup-Red5-1.0.6-SNAPSHOT.exe https://builds.apache.org/view/M-R/view/OpenMeetings原创 2015-12-16 22:22:04 · 2144 阅读 · 5 评论 -
ffmpeg命令采集笔记本摄像头视频
笔记本搭载ubunt 12.04,自带摄像头一枚;用命令采集视频并且保存ffmpeg -f alsa -i pulse -f video4linux2 -s qcif -i /dev/video0 ./output.mpg原创 2014-12-03 17:24:58 · 1341 阅读 · 0 评论 -
ffmpeg在eclipse单步调速乱跳问题
在ubuntu下编译完成了ffmpeg,结合eclipse进行单步调速,发现程序乱跳的问题,而且部分变量无法读出只,提示Optimize out需要重新config,再make./configure --enable-debug --disable-optimizations --disable-yasm --disable-asm --enable-static --disable-s原创 2015-01-21 16:56:35 · 831 阅读 · 0 评论 -
ffmpeg编码h264只包含I帧P帧的方法
ffmpeg使用avcodc_encode_video编码,默认产生的h264包含B帧,在安防行业很多地方是不需要用到B帧的。1.基础知识充电这就涉及到h264的各种profile格式了,参考h264各种profileh264分4种等级(profile):Baseline、Main、Extended、HighBaseline profile:支持I帧P帧Main原创 2015-01-21 16:19:25 · 6271 阅读 · 0 评论 -
第一个linux下的ffmpeg开发程序
在ubuntu linux下,开发一个简单的ffmpeg程序,也就是编译通过,可以运行一个av_register_all();万事开头难,跨出这一步,需要:编译好的ffmpeg库和头文件一个简单的c文件一个makefile文件现在ffmpeg早已静静躺在/usr/local/include ;/usr/local/lib里面了;一个简单测c文件(本来是想用c++的,原创 2014-12-03 09:57:09 · 2510 阅读 · 0 评论 -
在studio中使用libsdl2.so,编译SDL Demo
1.准备编译好的libSDL2.so,编译方法下一篇在详述。需要的目录结构是libs |--armeabi |--libmain.so |--libSDL2.so |--armeabi-v7a |--libmain.so原创 2017-07-23 23:54:39 · 1576 阅读 · 0 评论 -
ffmpeg取rtsp流,打印音视频的ts
改demo程序,调用ffmpeg API,获取rtsp的音视频流,打印每一包的ts,验证是否同步。运行环境是linux//FFDecoder.h#pragma once //#define __STDC_CONSTANT_MACROSextern "C" { #include "libavcodec/avcodec.h" #include "libavformat原创 2017-07-24 20:43:08 · 3746 阅读 · 0 评论 -
vs2017官方下载路径
找了半天,都是指向最新的vs版本,vs2019,我想用vs2017!!!终于找到了,留个印记:https://docs.microsoft.com/en-us/visualstudio/releasenotes/vs2017-relnotes原创 2019-08-20 10:15:24 · 175202 阅读 · 20 评论 -
详解SDL_RenderCopyEx函数
/** * \brief Copy a portion of the source texture to the current rendering target, rotating it by angle around the given center * * \param renderer The renderer which should copy parts of a text...原创 2018-08-15 18:49:45 · 2411 阅读 · 0 评论