
朱韦刚的流媒体技术专栏
文章平均质量分 81
流媒体技术交流Android,ios移动流媒体开发HLS,HTTP,RTMP,RTSP,TS,FLV,RTP,RTCP,P2P,nginx,live555,ffmpeg,X264流媒体协议格式。
朱韦刚
qq群:62054820
展开
-
opus(一)
(一):先给个opus的官网链接:https://www.opus-codec.org/。其中有三部分:libopus 1.3.1,Opus-tools,Opusfile。1:libopus :是opus编解码的源码和可执行文件。(注意:这里编码出来的opus文件是播放不了的,并且解码也必须用那种播放不了的opus文件,后面解释为什么)。2:Opus-tools:是个工具包含了opus编码解...原创 2020-06-11 10:37:44 · 5892 阅读 · 2 评论 -
matlib在线计算线性回归函数
在线matlib地址:https://octave-online.net/示例:在下面输入如下:X=[7 6 5 4 3 2 1 0 -1 2]Y=[20 13 5 0 -3 -4 -3 0 5 11]polyfit(X,Y,2)ans =0.7554 -2.7503 1.4219f(x)=0.7554x²-2.7503x+1.4219可得到结果。上述有不足...原创 2019-05-06 18:30:30 · 1720 阅读 · 0 评论 -
CBR,VBR,ABR,CQP四种编码方式。
本文借鉴了:https://blog.youkuaiyun.com/TvPolya/article/details/39234279?locationNum=13以及:https://blog.youkuaiyun.com/fc34235/article/details/79992789表示感谢。CBR编码(固定比特率) 在流式播放方案中使用CBR编码最为有效。使用CBR编码时,比特率在流的进行过程...原创 2019-05-06 19:05:07 · 21537 阅读 · 1 评论 -
【Intel(R)_Media_SDK】官方文档翻译摘要
文章出处不明只找到一个转载的链接:https://blog.youkuaiyun.com/jammg/article/details/52798434【Intel(R)_Media_SDK】官方文档翻译摘要【前言】 Intel media SDK调用系统底层库完成硬编解码,处理视频,库分用器如下 有很多硬解码库,不同的GPU可以使用不同的库,有些库也有可能为了跨硬件,就会像上...转载 2018-11-08 15:11:03 · 2861 阅读 · 0 评论 -
FFmpeg新版本(2016年10月份以后) 支持硬件解码
转载链接:http://www.cnblogs.com/wainiwann/p/6972984.htmlFFmpeg provides a subsystem for hardware acceleration.Hardware acceleration allows to use specific devices (usually graphical card or other spec...转载 2018-10-10 10:03:36 · 5950 阅读 · 0 评论 -
硬编码支持情况(一)
硬编码支持情况(一)图片信息原文链接:http://trac.ffmpeg.org/wiki/HWAccelIntro截个图:注:(一):Intel 平台1:Intel 平台的Quick Sync Video(qsv)是对于音视频编解码的框架具体对外接...原创 2019-08-13 10:34:42 · 3861 阅读 · 0 评论 -
FFMPEG关于推流端降低延迟调节(一)
FFMPEG关于推流端降低延迟调节(一)本文所写的是调节推流端降低延迟能调节的一些方案,有不足请补充,其他端方向类似,例如降低采集缓存,减少编码时间等等,如有需要请参考。本文以windows推流端为例做解释。1:减少采集缓存 av_dict_set(&p_device_optio...原创 2018-08-30 16:18:15 · 30923 阅读 · 2 评论 -
最简单的基于FFmpeg的AVDevice例子(屏幕录制)
原文地址:http://blog.youkuaiyun.com/leixiaohua1020/article/details/39706721 雷神的博客,致敬雷神。抓屏方法上篇文章记录了libavdevice的使用方法,本文不再重复。在Windows系统使用libavdevice抓取屏幕数据有两种方法:gdigrab和dshow。下文分别介绍。1. gdigrabgdigrab是FFmpeg专门用于抓取Wi转载 2017-11-08 15:51:10 · 5517 阅读 · 3 评论 -
nginx+uwsgi+python捕获http消息并处理(一)
nginx+uwsgi+python捕获http消息并处理(一)写本文的目的及应用场景,当http发送消息给nginx,我们要捕获并处理这个消息时可以采用的方法有例如,给nginx加一个module,写nginx的lua程序,或者用uwsgi去对接nginx;python是具体具体接收消息并处理的程序。这里简单介绍nginx+uwsgi+python捕获http消息并处理。1:安装uwsgi在li原创 2017-09-26 14:37:08 · 3137 阅读 · 4 评论 -
automake编译工程
automake编译工程首先准备工程完整清晰的目录,cd到要生成makefile的主目录,下面将分布说明怎样用automake编译工程,所有的1,2,3,4,5,6都是在主目录操作的。1 输入:“autoscan” 生成configure.scan2 输入:“mv configure.scan configure.ac”3 输入:“vi configure.ac” 添加:AM_INIT_AUTOM原创 2017-08-22 15:44:55 · 2389 阅读 · 1 评论 -
dup重定向匿名管道父进程子进程的一些坑包含execvp调用ffmepg
dup重定向匿名管道父进程子进程的一些坑包含execvp调用ffmepg本文说明再用dup做重定向的时候遇到的一些坑做一些总结。1:FFMPEG的所有输出信息,都为错误输出流,用STDOUT_FILENO是捕获不到任何消息,必须用STDERR_FILENO,这里是个大坑;2:子进程pid == 0 这一段代码走完返回后还会将主进程调用本函数之后的代码走一遍;3:循环sleep要刷新fflush(s原创 2017-08-18 15:00:10 · 2217 阅读 · 2 评论 -
android调试so文件记录(一)
android调试so文件记录(一)1:保存日志带so的部分 例如:06-08 16:02:42.651 3085-3085/? A/DEBUG: #00 pc 0008a42c /data/app/com.android.lvs.lvsandroid-2/lib/arm/libLvsAndroidInterfaceInVideoDispose.so06-08 16:02:42.651原创 2017-07-19 14:50:18 · 2341 阅读 · 0 评论 -
FFMPEG(一)-通用解复用器
一:技术要点:h264有两种封装,一种是annexb模式,传统模式,有startcode,SPS和PPS是在ES中一种是mp4模式,一般mp4 mkv会有,没有startcode,SPS和PPS以及其它信息被封装在container中,每一个frame前面是这个frame的长度很多解码器只支持annexb这种模式,因此需要将mp4做转换:在ffmpeg中用h264_mp4toa原创 2013-12-09 14:36:22 · 5764 阅读 · 0 评论 -
FFMPEG(二)-通用复用器
FFMPEG(二)-通用复用器一:技术要点 上一篇文章讲过,mp4类型的复用结构和其它类型不同,例如MP4,MOV,FLV等格式,里面的H264数据不包含SPS,PPS等说明信息,以减少开销,同样AAC数据也是如此,需要将前面的7个字节的ADTS头转换为两个字节的帧长度等。FFMPEG提供了一个叫filter过滤器的东西来实现此操作。为此下面列出了一些filter来实现原创 2013-12-09 14:39:16 · 3723 阅读 · 4 评论 -
播放器(一)-FFMPEG-SDL-MFC-本地文件
1:原理ffmpeg读取出来一个包如果是视频包放入视频包队列,如果是音频包放入音频包队列。视频:从视频队列中取出一个包解码根绝帧率或pts等等算出一帧数据的持续时间将这一帧数据放入VideoPicture这个结构体的bmp中,这只是内存,还未到显示,根据,Sleep()控制时间显示这一帧视频,并算出下一次刷新的时间,此时消耗了一个VideoPicture这个结构体的bmp。重新循环原创 2013-12-10 09:57:39 · 17868 阅读 · 11 评论 -
fmpeg 自定义IO中断 AVFormatContext::interrupt_callback ,AVIOInterruptCB具体处理方法
fmpeg 自定义IO中断 AVFormatContext::interrupt_callback以前不知道ffmpeg里还可以设置自定义的io interrupt, 赶紧记录起来。Custom interrupt callbacks for the I/O layer.decoding: set by the user before avformat_open_input().原创 2014-07-18 14:47:40 · 10946 阅读 · 1 评论 -
ffmpeg缩放和格式转换yuv数据
ffmpeg缩放和格式转换yuv数据下面代码是实现用ffmpeg将yuv的宽高或者yuv格式变更的代码。例如:352*288->720*576(采用双三次或双线性差值),yuv420p->yuv422pint VideoScaleYuvZoom(int Is_flip,int in_width ,int in_height,int in_pix_原创 2015-02-11 14:56:01 · 6664 阅读 · 1 评论 -
ffmpeg从AVFrame取出yuv数据到保存到char*中
ffmpeg从AVFrame取出yuv数据到保存到char*中很多人一直不知道怎么利用ffmpeg从AVFrame取出yuv数据到保存到char*中,下面代码将yuv420p和yuv422p的数据取出并保存到char*buf中。其他格式可以自己去扩展,前提先看戏yuv的各种格式,yuv的各种格式链接:http://blog.youkuaiyun.com/zhuweigangzwg/articl原创 2015-02-11 15:03:09 · 7874 阅读 · 1 评论 -
ffmpeg处理rtmp/文件/rtsp的推流和拉流
ffmpeg处理rtmp/文件/rtsp的推流和拉流本demo演示了利用ffmpeg从服务器拉流或本地文件读取流,更改流url或文件类型名称发送回服务器或存到本地的作用。由于本程序只写了3个小时,还要忙别的,所以会有一些bug和优化的地方。不过demo的意义已经达到了。//info.h#ifndef __INFO_H__#define __INFO_H__#in原创 2015-02-11 15:11:43 · 42242 阅读 · 22 评论 -
linux编译ffmpeg(一)
linux编译ffmpeg(一)网上有很多ffmpeg编译的方法,但乱七八糟的比较多,今天编译了一下,下面是步骤,需要的可以看下。一:需要的库 可以上官网上下载最新版,不想上官网的可以下载下面的库,然后将下面的库解压并编译 “./configure” 。1:faac-1.28.tarhttp://download.youkuaiyun.com/detail/zhuwei原创 2015-02-28 18:58:38 · 2883 阅读 · 1 评论 -
RTSP服务器(一)
RTSP服务器(一)一:总体了解RTSP(Real-Time Stream Protocol )是一种基于文本的应用层协议,直白的讲客户端与服务器建立连接并从服务器上接收流,服务器上的流原创 2013-12-09 14:11:48 · 20440 阅读 · 2 评论 -
ffmpeg关于文件头
在做转码的时候遇到些问题上述代码中codec_tag很重要生成的转码后的预览图:上面注释的可以用两种做判断,有些复用格式是需要全局头的。例如 mp4,flv,mov,3gp等格式。特此记录一下:交流请加QQ群:62054820QQ:379969650原创 2015-07-22 18:21:14 · 3375 阅读 · 0 评论 -
ffmpeg编码器支持情况
ffmpeg 音视频编码器需要查看支持才能用否则打不开编码器。下面代码将展示查看ffmpeg中音频支持声道,采样率,样本情况;视频支持输入yuv格式情况,具体看下面代码。int audio_support(AVCodec * pCodec,int *channel,int * playout,int *samplePerSec,AVSampleFormat_t * sample_fmt)原创 2015-08-06 15:02:14 · 3553 阅读 · 0 评论 -
ffmpeg实现音频resample(重采样)(二)
本篇文章将增加AVFifoBuffer和音频样本是av_sample_fmt_is_planar的样式采样率讲解,下面上代码AVFifoBuffer * m_fifo = NULL;SwrContext * init_pcm_resample(AVFrame *in_frame, AVFrame *out_frame){ SwrContext * swr_ctx = NULL;原创 2015-08-06 15:19:12 · 12667 阅读 · 3 评论 -
ffmpeg:fatal error C1189: #error : missing -D__STDC_CONSTANT_MACROS / #define __STDC_CONSTANT_MACROS
fatal error C1189: #error : missing -D__STDC_CONSTANT_MACROS / #define __STDC_CONSTANT_MACROS参考文章:https://ffmpeg.zeranoe.com/forum/viewtopic.php?f=15&t=158fatal error C1189: #error :转载 2015-11-12 15:24:38 · 3296 阅读 · 0 评论 -
ffmpeg视频生成jpg图片截图(一)
ffmpeg视频生成jpg图片截图(一)实现目标:输入本地文件,实现截图生成jpeg图片到本地,功能点请看注释,注意:注释很重要。//ffmpeg.h#ifndef __FFMPEG_H__#define __FFMPEG_H__#include "info.h"extern "C"{#include #include #include "libavfo原创 2016-03-09 17:17:56 · 9426 阅读 · 0 评论 -
ffmpeg文件生成m3u8文件及ts切片程序(一)
ffmpeg文件生成m3u8文件及ts切片程序(一)实现目标:输入本地文件,实现m3u8切片,功能点请看注释,注意:注释很重要。//ffmpeg.h#ifndef __FFMPEG_H__#define __FFMPEG_H__#include "info.h"extern "C"{#include "libavformat/avformat.h"#inclu原创 2016-03-09 17:23:29 · 17385 阅读 · 3 评论 -
单播、多播(组播)和广播的区别
单播、多播(组播)和广播的区别单播、多播和广播单播”(Unicast)、“多播”(Multicast)和“广播”(Broadcast)这三个术语都是用来描述网络节点之间通讯方式的术语。那么这些术语究竟是什么意思?区别何在?1.单播:网络节点之间的通信就好像是人们之间的对话一样。如果一个人对另外一个人说话,那么用网络技术的术语来描述就是“单播”,此时信息的接收和传递只在两个节点之转载 2013-12-09 14:10:01 · 1872 阅读 · 1 评论 -
YUV(一)-数据格式分析
本文转自:http://blog.chinaunix.net/uid-23215128-id-2521443.html 做视频采集与处理,自然少不了要学会分析YUV数据。因为从采集的角度来说,一般的视频采集芯片输出的码流一般都是YUV数据流的形式,而从视频处理(例如H.264、MPEG视频编解码)的角度来说,也是在原始YUV码流进行编码和解析,所以,了解如何分析YUV转载 2013-12-09 14:22:54 · 4850 阅读 · 0 评论 -
MPEG2_TS(二)-PCR控制发送速度原理
MPEG2_TS(二)-PCR控制发送速度原理一·目的:本文所讲是通过PCR控制TS文件发送给UDP的速率,以便用vlc来接收数据时不会产生“空”,或溢出的情况。 截取一位网友的话:泛泛讲点其他的东西,为什么要用pcr来控制发送速度:通常硬件ASI卡传送ts数据,是依靠码率来控制速度。假设ts是2Mb的码率,那么ASI卡的发送速度就固定控制在2Mb。如果ts的码率有波动原创 2013-12-09 14:18:18 · 6469 阅读 · 1 评论 -
ffmpeg关于avformat_write_header问题
最近做转码遇到一些问题,先贴个代码在说明:int init_mux(){ int i = 0; /* allocate the output media context */ avformat_alloc_output_context2(&ocodec, NULL,NULL, OUTPUTURL); if (!ocodec) { return getchar(); } A原创 2015-07-21 19:02:15 · 7577 阅读 · 0 评论 -
YUV(二)-YUV格式转换缩放
YUV(二)-YUV格式转换缩放 本文主要讲解yuv各种格式相互转换的功能实现及原理,以常用的yuv420p,yuv422p,yuv444p作为转换格式比较清晰的解析各种格式,以及用ffmpeg做转换的实现,同时有需要的朋友也可以用opencv做实现。 (一):内存采样 YUV码流的存储格式其实与其采样的方式密切相关,主流的采样方式有三种,YUV4:4:4,YUV4:原创 2013-12-09 14:25:50 · 11145 阅读 · 0 评论 -
YUV(三)-YUV420_to_RGB24 算法
http://www.cnblogs.com/doorsky/archive/2011/01/02/1924253.html 算法二较方便 算法一: 查表法const int Table_fv1[256]={ -180, -179, -177, -176, -174, -173, -172, -170, -169,转载 2013-12-09 14:27:15 · 2809 阅读 · 0 评论 -
MP4(一)-结构
本文转载自网络,不过没找到原文在哪,感谢写这篇博文的哥们 一、基本概念1.mp4概述MP4文件中的所有数据都装在box(QuickTime中为atom)中,也就是说MP4文件由若干个box组成,每个box有类型和长度,可以将box理解为一个数据对象块。box中可以包含另一个box,这种box称为container box。一个MP4文件首先会有且只有一个转载 2013-12-09 14:47:11 · 18229 阅读 · 3 评论 -
MP4(二)-解复用器
MP4(二)-解复用器MP4的一些基本的信息在上一篇博文已经介绍,转载的别人的博文,不过写的很好。这里指将几个遇到的问题,碰到新问题希望大家一起交流。 1:MP4的box官方文档给了70多个,如果都解析了估计会写哭了,所以,解复用器中要得到几个box: moov,mdia,minf,stbl,stsd,stts,stco,stss,stsz,stsc,mdat,等等几个先关原创 2013-12-09 14:47:54 · 4411 阅读 · 1 评论 -
MP4(三)-复用器
MP4(三)-复用器1:MP4的box有很多,见过的70多个吧,这里一共写了必须的10多个,剩下的可以扩展,有:fpyt,free,mdat,moov,mvhd,trak, tkhd,mdia,mdhd,hdlr,minf,vmhd,smhd,dinf,stbl,stsd,stts,stsc,stsz,stco,stss,ctts(可选),avc1,accC,mp4a,esds。原创 2013-12-09 15:08:00 · 5783 阅读 · 1 评论 -
FLV(一)-解复用器
FLV(一)-解复用器FLV的基本结构信息可以参考http://www.cnblogs.com/chef/archive/2012/07/18/2597279.htmlhttp://www.cnblogs.com/qingquan/archive/2011/08/11/2135531.htmlhttp://blog.youkuaiyun.com/bsplover/artic原创 2013-12-09 15:09:48 · 2054 阅读 · 0 评论 -
FLV(二)-解复用器-AAC-ADTS头-onMetaData内容
上一篇遇到的两个问题这里解决一下1:关于ADTS头中采样率的问题,AACPacketType UI8 0: AAC sequence header ,这个是aac的配置信息,在ISO-14496-3-2005中有详细介绍,不过看起来很麻烦,因此有网友做了一个缩小版了,做demux很够用了网址:http://www.cnblogs.com/原创 2013-12-10 09:54:14 · 1713 阅读 · 0 评论 -
FLV(三)-复用器
先解决几个概念性的问题:1:音视频同步原理每一帧音频或视频都有一个持续时间:duration:采样频率是指将模拟声音波形进行数字化时,每秒钟抽取声波幅度样本的次数。。正常人听觉的频率范围大约在20Hz~20kHz之间,根据奈奎斯特采样理论,为了保证声音不失真,采样频率应该在40kHz左右。常用的音频采样频率有8kHz、11.025kHz、22.05kHz、16kHz、3原创 2013-12-10 09:54:38 · 1915 阅读 · 0 评论 -
Visual C++ 2008下,SDL的编译链接问题!
Visual C++ 2008下,SDL的编译链接问题! 当下载SDL for win32 搭建好编译环境后,建立个win32 控制台-->编译SDL 中Demo-- loopave.c程序,有如下link erro:1>Compiling...1>loopwave.c1>Linking...1>MSVCRTD.lib(crtexe.转载 2013-12-10 09:55:14 · 1546 阅读 · 0 评论