编解码
文章平均质量分 71
chinabinlang
webrtc,音视频编程,视频会议开发,视频直播,电子白板开发
展开
-
PCM双声道分离为单声道 C++ 实现
这里主要是写 的是 16位 双声道 PCM数据的分离;这个方法仅适用于非planar 音频格式;就是如下图;可以看这篇文章查看双声道PCM的内存结构:http://blog.csdn.net/ownwell/article/details/8114121可以看出:16位sample的PCM数据,每两个字节,包含一个声到的数据;所...原创 2017-06-08 18:36:09 · 14428 阅读 · 1 评论 -
图像的DCT算法,离散余弦变换,傅里叶变换
《图像的DCT算法》原文链接:https://blog.csdn.net/jizhidexiaoming/article/details/80826915《数字图像处理离散余弦变换.ppt》https://max.book118.com/html/2017/1212/143890416.shtm...转载 2019-10-17 17:11:53 · 1200 阅读 · 0 评论 -
如何强制ffmpeg编码时输出一个关键帧
如何强制ffmpeg编码时输出一个关键帧如何强制ffmpeg编码时输出一个关键帧AVCodecContext *c //编码器环境句柄AVFrame* f //需要编码的一帧视频/*在avcodec.h文件中有这样的定义#define FF_I_TYPE 1 ///< Intra#define FF_P_TYPE 2转载 2014-05-22 17:29:09 · 8156 阅读 · 1 评论 -
FFmpeg音频编解码处理
新版的ffmpeg对音频编码处理已经有了很大的变化,记录在此,做个备忘。早期ffmpeg编码音频,输入数据一般都是S16格式,解码输出一般也是S16,也就是说PCM数据是存储在连续的buffer中,对一个双声道(左右)音频来说,存储格式可能就为LRLRLR.........(左声道在前还是右声道在前没有认真研究过)。所以以往编码部分的代码基本形如: int sample_by转载 2015-08-13 17:50:36 · 10965 阅读 · 1 评论 -
BMP 转 YUV (BMP2YUV)+ YUV 转RGB , YUV转NV12
还是直接用: libyuv,简单,方便,高效;这里转几篇文章:文章一:http://blog.csdn.net/leixiaohua1020/article/details/13506099可以下载工程直接查看,可以修改部分效率;文章二:int RGB2YUV_YR[256], RGB2YUV_YG[256], RGB2...转载 2014-11-26 11:04:51 · 3353 阅读 · 0 评论 -
Video size 视频尺寸和名称
‘ntsc’720x480‘pal’720x576‘qntsc’352x240‘qpal’352x288‘sntsc’640x480‘spal’768x576‘film’352x240‘ntsc-film’352x240‘sqcif’128x96‘qcif’176x144‘cif转载 2015-08-18 14:26:15 · 3574 阅读 · 0 评论 -
总结windows获取stdint.h和inttypes.h方法
stdint.h是C99的标准,主要用于统一跨平台数据定义。MSVC中不带有这个头文件,直到VS2010(新闻)。在之前的版本里面,我们可以:(1)下载这个头文件download a MS version of this header from:http://msinttypes.googlecode.com/svn/trun原创 2014-05-09 11:28:20 · 37009 阅读 · 4 评论 -
libzplay库
libzplay目前,非开源,只可以在windows上应用;关于MP3文件播放:通常步骤是:获取MP3相关参数 -> 解码-> 相关平台播放音频接口播放声音;可以播放解码播放MP3的库很多,如果VLC,ffplay,或者directshow,解码库一般可以用lame,播放播放库可以用SDL,或者Windows上的waveout,directsound等很多方法,这里例举原创 2015-11-09 15:37:00 · 5034 阅读 · 1 评论 -
fdk-aac-0.1.4编译
下源码: http://sourceforge.net/projects/opencore-amr/files/fdk-aac/ 解压源码;一:编译Windows版本比较简单,直接configure,然后make就可以了;二:编译Android版本:1:ndk-build后出现很多错误;解决方法,添加Application.mk,添加内容APP_ABI :原创 2015-10-10 19:41:17 · 5001 阅读 · 3 评论 -
ffmpeg 调试信息 添加
extern "C" static void av_log_callback(void* ptr, int level, const char* fmt, va_list vl) { static FILE *fp = fopen("av_debug.log","a+"); if(fp){ vfprintf(fp,fmt,vl); fflush(fp); }原创 2015-11-12 14:50:21 · 1196 阅读 · 0 评论 -
FFMPEG 摄像头 命令行参数 录像 直播 rtmp
解决FFMPEG采集音视频时不同步的问题:添加参数 -copyinkf 例如:ffmpeg.exe -copyinkf -f dshow -i video="USB2.0 UVC VGA WebCam":audio="麦克风 (Realtek High Definition Au" -q 4 -s 640*480 -aspect 4:3 -r 10 -vcodec flv -ar转载 2015-07-28 19:19:35 · 26514 阅读 · 0 评论 -
MSYS在Windows上编译的静态库的应用
一般情况在Windows上编程自然用VC IDE 编译任何lib或者dll或者exe都很方方便;但是有事时候在Windows编译开源库的时候需要用到MSYS+MINGW;1:编译可执行程序exe,没有什么问题;2:编译动态链接库dll,一般情况也没有什么问题;3:编译静态连接库lib(或者.a),编译完成后在VC中应用,就会遇到一些问题,主要是提示缺少库的问题:解决方法原创 2015-08-11 11:11:20 · 2465 阅读 · 0 评论 -
X264的ARMV7-a的交叉编译及优化运行
一:准备工作1、操作系统是Ubuntu 12.04。 2、需要安装Google的NDK工具,因为在编译时使用了NDK提供的编译器。我的NDK的安装目录放在/home/shallon/android-ndk-r8d。另外,需要安装android的SDK,提供ADB等调试的工具 3、下载获取X264的源码。git clone git://git.vide转载 2015-07-15 21:28:35 · 11132 阅读 · 0 评论 -
Android源码分析:VoIP
Android源码分析:VoIPBased on android-4.0.1_r1阅读本节内容需要具备Linux网络基础知识。概述Android的voip功能支持位于目录frameworks/base/voip中。它包括支持rtp功能的packageRTP支持RTP支持包位于目录frameworks/base/voip/java/andr转载 2014-12-04 17:04:26 · 1329 阅读 · 0 评论 -
音视频格式转换
在音视频格式处理过程中可能会用到不同的格式转换,一般如果对音视频格式非常了解,已经转换公式非常了解的话,可以自己直接写函数;如果不十分了解,可以从网上找一下简单的开源函数,或者通过一些库函数实现;这里用ffmpeg实现,可以参考 scaling_video.c 和 resampling_audio.c ;原创 2014-12-23 10:35:54 · 842 阅读 · 0 评论 -
最简单的基于FFmpeg的推流器(以推送RTMP为例)
一般,可以用librtmp开源库,不是很复杂;librtmp库支持的方式比较多;如果没有特殊的rtmp格式要求,可以直接用ffmpeg实现rtmp的推流;接收端可以用VLC或者ffplay,或者rtmp接受解码显示等等;这里转一篇文章:可以看原文,也可以看评论;比较简单的说明了方法;最简单的基于FFmpeg的推流器(以推送RTMP为例)本文记录一个最简单转载 2015-05-12 17:54:00 · 2791 阅读 · 0 评论 -
音频文件播放器
1:PCM :播放器:Eufony ;2:原创 2014-06-20 15:15:19 · 6546 阅读 · 0 评论 -
使用librtmp进行H264与AAC直播
libx264版本是128libfaac版本是1.281、帧的划分1.1 H.264帧对于H.264而言每帧的界定符为00 00 00 01或者00 00 01。比如下面的h264文件片断这就包函三帧数据00 00 00 01 67 42 C0 28 DA 01 E0 08 9F 96 10 0000 03 00 10 00 00 03 01 48转载 2015-05-13 17:09:01 · 4091 阅读 · 0 评论 -
X264编码 (相关参数解释)
前面讲到了关于NAL打包成RTP后进行发送,那么这些NAL应该怎么得到呢?当然如果有现成的H264数据就可以直接用了,但是一般我们的摄像头采集的数据都不是H264格式的,那就需要编码。而且在我们这个项目中是需要进行图像算法处理的,在这些opencv中用到的图基本上都是BGR格式的Mat图,所以处理完后的图像需要重新进行X264编码,生成一个个的NAL后打包成RTP发送出去,这样就会在实现高清的同时转载 2015-05-14 10:24:32 · 5149 阅读 · 0 评论 -
获取H264/H265的NALU
一:可以存储Nal数据到vector中;class CPH264{public:private:std::vector<BufferedData*> m_vector_video;public:std::vector<BufferedData*> * get_vector_h264NALU(){return &m_vector_video;}...原创 2015-05-14 12:02:24 · 1776 阅读 · 1 评论 -
ffmpeg time_base详解
ffmpeg time_baseffmpeg存在多个时间基准(time_base),对应不同的阶段(结构体),每个time_base具体的值不一样,ffmpeg提供函数在各个time_base中进行切换。搞清楚各个time_base的来源,对于阅读ffmpeg的代码很重要。一、time_base1、AVStream(libavformat/avformat.h)typede转载 2015-11-17 12:12:26 · 8879 阅读 · 0 评论 -
ffmpeg.exe 命令行视频处理图像质量
关于ffmpeg.exe处理视频图像,如放缩旋转等命令行时,一般可以设置码率控制图像质量;但是这里要说的是通过 -qscale 1设置图像质量;-qscale 1, 参数1表示最好的质量;原创 2015-12-28 14:54:56 · 4810 阅读 · 0 评论 -
H264关于RTP协议的实现
H264关于RTP协议的实现完整的C/S架构的基于RTP/RTCP的H.264视频传输方案。此方案中,在服务器端和客户端分别进行了功能模块设计。服务器端:RTP封装模块主要是对H.264码流进行打包封装;RTCP分析模块负责产牛和发送RTCP包并分析接收到的RTCP包;QoS反馈控制模块则根据RR报文反馈信息动态的对发送速率进行调整;发送缓冲模块则设置端口发送RTP、RTC转载 2017-05-25 16:35:24 · 474 阅读 · 0 评论 -
OpenH264
ContentsEncoder Interface Usage: 2Step#1: create and destroy the encoder 2Step#2: initialize the encoder 2Step#3: invoker the encoding 2Step#4: control the encoding 3Encoder Option List: 4原创 2014-11-17 14:41:31 · 26429 阅读 · 0 评论 -
利用ffmpeg进行摄像头提取视频编码为h264通过RTP发送数据到指定的rtp地址
话不多说命令如下:ffmpeg -f dshow -i video="Logitech QuickCam Easy/Cool" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -f rtp rtp://127.0.0.1:6666>sd.sdp用此命令可以产生264的rtp流, video="Logitech QuickCam转载 2017-04-17 13:32:03 · 4689 阅读 · 0 评论 -
H.264 数据分割片
一帧图像就是一个Access unit,一个图像序列由几个Access unit组成。其中第一个Access unit就是IDR帧,其他的Access unit是非IDR帧(B帧或者P 帧)。I帧的Access unit包括的SEI nalu可以被一个序列的其他p帧或者B帧access unit共享。一组非参数集NALU被称为一个接入单元(Access Unit),delimiter定界后加上定时转载 2017-10-09 11:19:05 · 1698 阅读 · 0 评论 -
H264 Start Code (Annex B)
网上有很多信息,但是大多不全面;详细了解这类问题,还是要看英文标准文档;这里我查看的文档是(H264标准文档):Joint Video Team (JVT) of ISO/IEC MPEG & ITU-T VCEG(ISO/IEC JTC1/SC29/WG11 and ITU-T SG16 Q.6)30th Meeting: Geneva, CH,原创 2017-10-10 15:38:14 · 2227 阅读 · 0 评论 -
编码顺序、frame_num和POC
一、基本概念1、编码顺序H.264的码流输出顺序便是编码顺序,所以在编码B帧的时候,由于B是双向预测,需要先编码后面编码帧P/I,这时候先输出I/P,后面才有B帧,我们在解码段拿到相应的I/P帧后,不能马上丢到buffer list里面,还需要等待后面的B帧,解码B帧后再reorder。2、frame_num每个参考帧都有一个依次连续的frame_num 作为它们的转载 2017-12-20 11:06:25 · 1782 阅读 · 0 评论 -
X264码率控制总结1——ABR,CQP,CRF
lakeoneX264码率控制总结1——ABR,CQP,CRF1. X264显式支持的一趟码率控制方法有:ABR, CQP, CRF. 缺省方法是CRF。这三种方式的优先级是ABR > CQP > CRF. if ( bitrate ) rc_method = ABR; else if ( qp || qp_constant...转载 2019-03-27 10:08:20 · 2383 阅读 · 0 评论 -
如何实现1080P延迟低于500ms的实时超清直播传输技术
学霸君工程师,2015 年加入学霸君,负责学霸君的网络实时传输和分布式系统的架构设计和实现,专注于基础技术领域,在网络传输、数据库内核、分布式系统和并发编程方面有一定了解。最近由于公司业务关系,需要一个在公网上能实时互动超清视频的架构和技术方案。众所周知,视频直播用 CDN + RTMP 就可以满足绝大部分视频直播业务,我们也接触了和测试了几家 CDN 提供的方案,单人直播没有问题,一旦...转载 2017-03-29 16:42:26 · 32203 阅读 · 0 评论 -
ffmpeg视频分割,视频合成
ffmpeg实现视频切割:http://blog.csdn.net/dancing_night/article/details/457202551、概述本程序实现把一个视频切割为2个视频,不涉及编解码,最难理解的地方在于pts和dts的计算,要好好看看,不够完美的地方在于没有按照关键帧切割,所以会在切割点花屏,以后改善。*注:只处理一个视频流和一个音频流,若流多转载 2016-07-15 13:22:55 · 2939 阅读 · 0 评论 -
windows下编译ffmpeg2.5——使用VS2013,ARMLINUX,ANDORID编译ffmpeg
一、准备:1. 本机环境: win7 64bit;2. 安装MinGW到C:\MinGW,下载地址http://www.mingw.org/;3. 安装yasm,下载地址http://yasm.tortall.net/;(2,3步请参考http://blog.csdn.net/finewind/article/details/38854517)4. 下载ff转载 2016-01-15 11:23:38 · 1349 阅读 · 0 评论 -
faac编译
faac可以到这里获取: http://www.audiocoding.com/downloads.html工程中默认保护vs的编译;在Windows上比较方法;在Android上编译;export NDK_VERSION=4.8export NDK_PLATFORM=android-15export NDK=android-ndk-r10e-64exp原创 2016-03-02 18:37:13 · 2876 阅读 · 0 评论 -
x264 代码下载
1 不同版本的x264下载地址:http://download.videolan.org/pub/videolan/x264/snapshots/2 x264从20061010起(即这个版本x264-snapshot-20061010-2245.tar.bz2)不再支持decoder代码。转载 2016-03-05 19:24:14 · 3006 阅读 · 0 评论 -
android编译ffmpeg+x264
android编译ffmpeg+x264编译x264:下载最新版的x264ftp://ftp.videolan.org/pub/videolan/x264/snapshots/1.解压到指定的目录2.切换当前目录为该目录3.创建一个shell脚本build_x264.sh,内容如下:export NDK=/home/robin/桌面/android-nd转载 2014-08-14 17:41:47 · 4808 阅读 · 0 评论 -
<android编译ffmpeg+x264+faac> <Android/NDK环境下FFmpeg及AAC,MP3,X264的编译>
android编译ffmpeg+x264+faachttp://blog.csdn.net/vblittleboy/article/details/243163031. 在x264的源码目录下创建b1.sh,内容如下:点击(此处)折叠或打开export NDK=/opt/google/android/android-ndk-r8eexport转载 2016-03-06 13:57:36 · 3300 阅读 · 0 评论 -
YUV格式详细解释与FFMPEG的关系
YUV主要的采样格式 主要的采样格式有YCbCr 4:2:0、YCbCr 4:2:2、YCbCr 4:1:1和 YCbCr 4:4:4。其中YCbCr 4:1:1 比较常用,其含义为:每个点保存一个 8bit 的亮度值(也就是Y值), 每 2x2 个点保存一个 Cr 和Cb 值, 图像在肉眼中的感觉不会起太大的变化。所以, 原来用 RGB(R,G,B 都是 8bit unsigned)转载 2013-01-17 11:18:04 · 2658 阅读 · 0 评论 -
FFprobe使用指南
. ffprobe 是什么 ?简单的说,ffprobe 是一个多媒体流分析工具。它从多媒体流中收集信息,并且以人类和机器可读的形式打印出来。它可以用来检测多媒体流的容器类型,以及每一个多媒体流的格式和类型。它可以作为一个独立的应用来使用,也可以结合文本过滤器执行更复杂的处理。2. ffprobe 的使用方式命令行: ffprobe [选项] [‘输入文件’]转载 2016-05-24 16:42:19 · 7676 阅读 · 0 评论 -
FFmpeg/ffplay for VC 编译错误总结
编译SDK编译之后,运行make install后,在C:/MSYS/local会生成bin、include、lib等文件夹。这样ffmpeg的编译环境就帮我生成了一个SDK,这个SDK在linux上用C来开发是没有问题的,我们需要使这个SDK在MS Visual Studio 开发环境中能用,编译的时候会碰到一大堆问题。我的环境是VS2008。建立工程:我们用ffplay验证我们原创 2012-08-02 16:08:13 · 16086 阅读 · 2 评论 -
使用mp4v2将H264+AAC合成mp4文件
通常的视频录制方法比较多;如果仅仅是一般的摄像头视频录制,可以直接用directshow;如果是简单的视频录制,不需要音频,可以直接用opencv,但是opencv录制的编码库比较少;当然也可以用ffmpeg;这里说一个比较常用的简单的库:mp4v2 ;这个库应该可以跨平台;转一篇文章:录制程序要添加新功能:录制CMMB电视节目,我们的板转载 2016-01-28 16:11:37 · 2929 阅读 · 0 评论