音视频
终成一个大象
战略上要藐视敌人,战术上要重视敌人!
展开
-
obs源码 windows编译
本文章主要记录obs源码在windows平台的编译过程,详细记录每个细节。obs源码编译一、编译环境1、Qt52、CEF Wrapper 37703、windows版本 CMake4、Windows版本 Git5、Visual Studio 20196、vs2019开发工具包二、源码编译1、源码下载2、创建输出目录3、配置CMake选项三、obs sln项目编译原创 2021-12-17 18:47:45 · 2973 阅读 · 16 评论 -
opencv源码编译(基于android NDK)
opencv 基于android NDK平台编译总结: 1\opencv简介 OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。 O...原创 2018-05-26 18:21:44 · 7911 阅读 · 8 评论 -
ffmpeg源码编译 ios
ffmpeg源码编译(ios平台),支持H264和AAC格式(最全教程)文章目录一、H264配置:1、下载源码:2、下载编译脚本:3、编译:4、脚本修改:二、aac配置:三、ffmpeg配置:1、下载:2、配置h264和aac路径:3、环境配置:4、编译:5、脚本修改:四、踩坑:问题1问题2问题3五、使用六、编译好的资源一、H264配置:1、下载源码:官网地址:http://www.videolan.org/developers/x264.html原创 2020-07-22 11:48:46 · 715 阅读 · 0 评论 -
mac脚本编译ffmpeg源码:make: *** No rule to make target ffmpeg-3.3/Makefile‘. Stop
make: *** No rule to make target ffmpeg-3.3/Makefile'. Stop原创 2020-07-20 20:48:35 · 757 阅读 · 0 评论 -
webrtc源码编译 iOS
webrtc源码编译 iOS1、环境配置ninja下载git clone git://github.com/martine/ninja.gitcd ninja/./b2、脚本编译build_ios_libs.sh3、AppRTCMobile编译WebRTC.framework4、踩的坑/bin/sh: ../../third_party/llvm-build/Release+Asserts/bin/clang: cannot execute binary file原创 2020-06-30 18:54:22 · 966 阅读 · 0 评论 -
ffmpeg 码率控制(总结篇)
本文仅探讨ffmpeg API编码的方式进行码率控制,文中测试数据使用的是网络传输场景,非本地测试,可能收到网络的影响。如有不足之处,请及时指正。主要介绍CQP、CRF、CBR、VBR、ABR的含义和测试表现,以及ffmpeg中H264的参数配置原创 2020-04-26 19:54:24 · 10274 阅读 · 3 评论 -
CBR VBR ABR
Constant BitRate的缩写,意思是恒定(固定)比特率,指文件每秒钟的码率是固定不变的。Variable BitRate的缩写,意思是可变比特率,指文件每秒钟的码率是可以变化的。average bitrate的缩写,ABR编码平均比特率,是VBR的一种插值参数。Lame针对CBR不佳的文件体积比和VBR生成文件大小不定的特点独创了这种编码模式。原创 2020-04-23 19:21:21 · 1406 阅读 · 0 评论 -
ES流、PES、PS流、TS流
大牛总结:https://blog.csdn.net/huangblog/article/details/8740571原创 2020-04-22 15:10:13 · 510 阅读 · 0 评论 -
HLS详解(看这个就够了)
HLS概述HLS是HTTP Live Streaming的简称,是苹果公司提出的基于HTTP的流媒体网络传输协议,它的基本原理也是服务端把文件或媒体流按照不同的码率切分成一个个小片段进行传输,客户端在播放码流时,可以根据自身的带宽及性能限制,在同一视频内容的不同码率的备用源中,选择合适码率的码流进行下载播放。在传输会话开始时,客户端首先需要下载描述不同码流元数据的M3U8索引文件。官方定义从...原创 2020-04-22 14:22:58 · 25523 阅读 · 3 评论 -
音视频同步 ffmpeg 推流
音视频同步原理及实现ffmpeg 推流 音视频同步推流将视频同步到音频上:以音频的推送速度为基准来同步视频。原创 2020-04-16 17:51:06 · 1661 阅读 · 3 评论 -
解决 av_read_frame() 文件尾(end of file)
解决 av_read_frame() 文件尾(end of file) 的问题原创 2020-04-15 11:33:48 · 6506 阅读 · 5 评论 -
开源webrtc服务器对比
开源系统是目前市面上比较常见的,分别从服务器类型、编解码能力、文档的完整性和开发商来进行对比。大家都知道WebRTC的服务器模型有两种,分别是SFU和MCU,SFU实现的是简单转发的路由功能,而MCU可以提供更多扩展性的功能实现,而且MCU型的服务器往往包含SFU,所以MCU的实现难度较大。其次,文档的完整性也是非常重要的,因为对于开发者来说,文档具有非常重要的指导作用。最后是开发商,这个主要涉...原创 2020-03-30 17:18:37 · 5999 阅读 · 3 评论 -
av_read_frame AVERROR_EOF
使用ffmpeg API编码,调用av_read_frame()读取缓存队列中的视频流时,提示AVERROR_EOF,导致进程提前终止。原创 2020-02-23 17:22:22 · 5724 阅读 · 2 评论 -
avcodec_encode_video2 CPU消耗过大
1、问题描述:在使用ffmpeg执行音视频编码的时候,发现手机的cpu占用高达70%左右,导致整个程序卡顿经过分析发现avcodec_encode_video2()接口在进行h264编码时,消耗资源过多。2、解决方案:在h264编码器初始化时,指定编码器参数ultrafast和zerolatency// 设置编码器参数AVDictionary *param = 0;av_dict_s...原创 2019-12-29 14:48:50 · 2172 阅读 · 0 评论 -
kurento RtpEndpoint获取rtp流
该修改方案是在kurento-tutorial-java项目中kurento-hello-world测试demo的基础上进行修改的。 private void handleProcessSdpOffer(final WebSocketSession session, JsonObject jsonMessage) { // ---- Session handling...原创 2019-12-29 14:24:00 · 2012 阅读 · 11 评论 -
kurento服务器搭建(docker方式)
Kurento media server服务搭建(docker方式),我在这里只是翻译一下,有需要的可以直接访问官网:// 拉取镜像docker pull kurento/kurento-media-server:6.10// 根据镜像创建dockerdocker run -itd --name kms -p 8888:8888 kurento/kurento-media-ser...原创 2019-12-29 14:18:17 · 3616 阅读 · 6 评论 -
ffmpeg rtp转rtmp
推流// 本地mp4文件进行RTP推流ffmpeg -re -i cece_1.mp4 -an -c copy -f rtp rtp://10.0.4.134:11111>ffmpeg.sdp// 没有音频流ffmpeg -re -i cece_1.mp4 -an -c copy -f rtp rtp://10.0.4.134:11111>ffmpeg.sdp// 有音频...原创 2019-12-29 14:01:45 · 3992 阅读 · 0 评论 -
WebRtc 获取视频 内存泄漏
记录一次获取webrtc视频数据时踩的坑:使用如下方法获取I420:VideoFrame.I420Buffer i420Buffer = videoFrame.getBuffer().toI420();运行后发现native层内存占用越来越多,一段时间后进程被杀死。经过分析:toI420()webrtc提供的上面的接口,会在native层进行一份拷贝,需要调用配套API进行释放。...原创 2019-12-29 13:51:58 · 1835 阅读 · 12 评论 -
ffmpeg 音频 变声
记录一次ffmpeg编码变声的根本原因:音频源采样率和ffmpeg编码时的采样率不同,音频源在采集是采样率为48000,而编码时用44100,所以播放出来的声音显得宽厚、是真。...原创 2019-12-29 13:42:20 · 3222 阅读 · 0 评论 -
check_stun_auth: user cece credentials are incorrect
coturn服务器部署后,执行turnserver -v -a -f -user=cece:123456 -r Guangdong后,运行移动端demo,coturn服务器报错我的配置文件如下:原创 2019-11-08 12:53:07 · 2181 阅读 · 5 评论 -
kurento服务器搭建
Kurento media server服务搭建一、下载ubuntu18.04服务器1、安装gunpg2、确定ubuntu版本3、设置变量4、添加key5、设置kurento.list6、安装kurento media server7、启动/停止/状态/重启二、kurento tutorial java服务搭建三、kurento相关配置1、Kurento Media Server 日志2、Kure...原创 2019-11-06 13:04:37 · 4418 阅读 · 6 评论 -
ffmpeg处理流程
ffmpeg——流程解析图解主流程1、初始化avformat2、初始化avformat网络3、初始化输入流1、申请AVFormatContext2、打开输入流3、探测输入流信息4、查找解码器(视频和音频)5、根据编码器初始化AVCodecContext4、初始化输出流1、申请AVFormatContext2、查找编码器(音频和视频)3、根据编码器创建AVCodecContext4、根据编码器类型初...原创 2019-08-04 17:25:51 · 455 阅读 · 0 评论 -
Invalid data found when processing input
流程描述:我把每一帧原始YUV图像数据,构造成Y4M(YUV4MPEG2)格式的流,然后使用ffmpeg编码成h264格式进行RTMP推流。ffmpeg执行avformat_open_input打开文件和执行avformat_find_stream_info探测流都正常,但在执行avformat_write_header报错:Invalid data found when processing input。原创 2019-08-04 12:40:41 · 33992 阅读 · 0 评论 -
webrtc+ffmpeg(连麦直播效果展示)
展示效果补充画面说明:手机(左一):用户,中间画面是合流后的本地显示。右下角是本地视频呈现,左上角是对方视频呈现。手机(左二) :用户,右下角是本地视频呈现,左上角是对方视频呈现。PC(右一):网页http拉流呈现效果。PC(右二):播放器拉流呈现效果。功能基本实现,还需要进一步优化。...原创 2019-07-30 21:06:54 · 5635 阅读 · 6 评论 -
ffmpeg源码编译(最新版本4.1、android平台)
ffmpeg——android平台源码编译最新版本4.1一、ffmpeg介绍:二、源码下载:三、环境配置:四、配置文件修改:五、脚本编写:六、编译:七、遇到的错误error 1:error 2:error 3:一、ffmpeg介绍:FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它...原创 2019-07-29 13:17:11 · 804 阅读 · 0 评论 -
webrtc保存视频
webrtc系列——保存视频一、原理介绍二、实现效果三、代码实现四、注意事项五、拓展一、原理介绍对于webrtc p2p音视频功能,不管是本端视频流还是对端视频流,视频流的源头都是摄像头,终点是都是屏幕(不同的终端需要不同的空间支持)。明白了这一点,每一帧数据需要调用VideoRenderer,然后通过渲染器在控件上进行绘制。VideoRenderer中定义了如下的接口:public st...原创 2019-07-11 20:30:52 · 3536 阅读 · 1 评论 -
webrtc截取图像
webrtc系列——截取图像一、原理介绍二、代码实现三、注意事项一、原理介绍对于webrtc p2p音视频功能,不管是本端视频流还是对端视频流,视频流的源头都是摄像头,终点是都是屏幕(不同的终端需要不同的空间支持)。明白了这一点,每一帧数据需要调用VideoRenderer,然后通过渲染器在控件上进行绘制。VideoRenderer中定义了如下的接口:public static inter...原创 2019-07-11 19:49:56 · 2059 阅读 · 0 评论 -
ijkplayer编译
ijkplayer介绍ijkplayer是哔哩哔哩开源的一个播放器,可以支持本地播放,视频直播等功能源码地址https://github.com/Bilibili/ijkplayer编译方法:1、解压略2、android 版本编译 cd ijkplayer-android git checkout -B latest k0.8.8 cd...原创 2018-03-26 14:33:31 · 350 阅读 · 0 评论 -
getMetrics()和getReaMetrics()的区别
getMetrics和getReaMetrics的区别记录一次getMetrics的错误使用,一次填坑之旅。个人案例最近在做视频,结果发现手机视频传输到PC上总是有黑边(在图像的左右两侧),经过排查确认在屏幕录制的时候,图像已经存在黑边。 代码是使用android提供的MediaProjection做的视屏录制功能,然后写了一个MediaProjection截图的demo,结果发现按照屏幕比例1:原创 2017-07-13 15:10:19 · 3954 阅读 · 0 评论 -
基于Webrtc的视频通话录制功能-Android实现
原文转载自:https://www.jianshu.com/p/7746c7411826webrtc本身并不支持视频通话的录制。webrtc的sdk只是暴露了视频数据给开发者,而音频数据并没有向外暴露。因此如果要进行视频通话的录制,需要修改webrtc的sdk,将音频数据暴露出来。webrtc的下载和编译可参考之前的文章:WebRtc下载和编译一、修改SDK,引出音频数据音频采集数据...转载 2019-08-24 11:03:44 · 3246 阅读 · 0 评论 -
av_buffersrc_add_frame返回-22
合并音频流时调用av_buffersrc_add_frame()返回-22,切换为av_buffersrc_add_frame_flags(),并指定AV_BUFFERSRC_FLAG_NO_CHECK_FORMAT参数,正常通过。av_buffersrc_add_frame()根本问题参数问题,音频滤镜初始化参数配置错误,也会导致该问题产生。在android端jni调用时,channel_...原创 2019-08-24 14:30:38 · 2290 阅读 · 0 评论 -
开源webrtc源码分析
想写一篇分析webrtc源码的文章,梳理了半天,发现webrtc太大了,不知道从哪里开始。那就先从android源码开始吧,纯手打,如有不对之处,请及时指正。java层代码分析api目录:提供android端可以直接调用的API。src目录:提供Camera,MediaCodec等更细节的一些java层封装。api目录下的文件会调用src目录下的文件。每一个java类都通过jni映射与C...原创 2019-10-09 11:01:58 · 1737 阅读 · 1 评论 -
coturn服务器搭建
libevent下载安装依赖libevent开源库,需要先进行安装:wget https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gztar zxvf libevent-2.0.21-stable.tar.gzcd libevent-2.0.21-stable ./configuremake...原创 2019-09-28 22:31:40 · 2887 阅读 · 7 评论 -
av_interleaved_write_frame错误 Invalid data found when processing input
问题描述:调用av_interleaved_write_frame接口发送AAC格式的音频数据时,报错:Invalid data found when processing input。解决方案:if (pOutFormatCtx->oformat->flags & AVFMT_GLOBALHEADER){ pOutAudioCodecCtx->flags ...原创 2019-09-28 16:51:01 · 3344 阅读 · 0 评论 -
nb_samples(采样数)转换
可以参考:https://blog.csdn.net/Martin_chen2/article/details/100103655中的错误案例。具体方法如下:#define AAC_ENCODE_SIZE 1024// 定义重采样SwrContext *swr = NULL;swr = swr_alloc();av_opt_set_int(swr, "in_channel_layou...原创 2019-09-28 13:07:28 · 4352 阅读 · 0 评论 -
avcodec_encode_audio2返回-22
错误原因该函数的主要功能:根据音频编码器和音频frame数据编码成音频packt数据。返回-22主要原因:参数错误,具体如下音频编码器的参数(声道数,采样率,采样格式,位宽,采样数)和frame的参数不一致。编码格式对应的采样数和frame的采样数不一致。只要声道数,采样率,采样格式,位宽,采样数,任何一个参数不一致,都需要进行重采样。错误案例不知道什么原因,我frame采...原创 2019-09-28 12:53:04 · 2442 阅读 · 1 评论 -
av_buffersrc_add_frame分析
av_buffersrc_add_frame全面分析原创 2019-09-28 11:31:07 · 4917 阅读 · 0 评论 -
音视频 协议 RTP/RTCP、TCP、UDP、RTMP、RTSP
https://www.cnblogs.com/xiaohexiansheng/articles/8288924.html转载 2019-09-19 16:49:30 · 532 阅读 · 0 评论 -
pcm格式封装wav
PCMPCM编码是直接存储声波采样被量化后所产生的非压缩数据,故被视为单纯的无损耗编码格式,其优点是可获得高质量的音频信号。PCM是模拟音频信号经模数转换(A/D变换)直接形成的二进制序列,该文件没有附加的文件头和文件结束标志。要将这样的信号转为 PCM 时,需要将声音量化,我们一般从如下几个维度描述一段声音:1.声道数 2.采样位数 3.采样频率 4.时长采样频率:即取样频率...原创 2019-08-25 22:05:50 · 930 阅读 · 0 评论 -
webrtc 多人音视频 思维导图
sdp交互机制和详解拥塞控制机制WebRTC的网络结构:P2P MeshMCU(Multi-point Control Unit)SFU(Selective Forwarding Unit)网络适应性:GCC算法https://www.cnblogs.com/x_wukong/p/8397700.html谷歌提出的拥塞控制算法(Google Congestion Control...原创 2018-12-06 10:31:49 · 786 阅读 · 0 评论