
ffmpeg
IOT_SHUN
这个作者很懒,什么都没留下…
展开
-
AVCodecContext结构体详解
注:写了一系列的结构体的分析的文章,在这里列一个列表:FFMPEG结构体分析:AVFrameFFMPEG结构体分析:AVFormatContextFFMPEG结构体分析:AVCodecContextFFMPEG结构体分析:AVIOContextFFMPEG结构体分析:AVCodecFFMPEG结构体分析:AVStreamFFMPEG结构体分析:AVPacketFFMPEG有几个最重要的结构体,包含...转载 2018-03-27 10:06:08 · 7348 阅读 · 1 评论 -
ffmpeg实现将MP4格式转封装成avi格式
无编解码#include <stdio.h>#include <iostream>using namespace std;#define __STDC_CONSTANT_MACROS#ifdef _WIN32//Windowsextern "C"{#include "libavformat/avformat.h"}#else//Linux...#ifdef __cplusp...原创 2018-03-29 10:58:34 · 4313 阅读 · 0 评论 -
H.264 bitstream malformed, no startcode found, use the video bitstream filte错误解决方法
主要是因为使用了mp4中的h264编码,而h264有两种封装:一种是annexb模式,传统模式,有startcode,SPS和PPS是在ES中;另一种是mp4模式,一般mp4、mkv、avi会没有startcode,SPS和PPS以及其它信息被封装在container中,每一个frame前面是这个frame的长度,很多解码器只支持annexb这种模式,因此需要将mp4做转换;在ffmpeg中用h2...原创 2018-03-29 10:58:49 · 3230 阅读 · 0 评论 -
ffmpeg之H264中的时间戳(DTS和PTS)
(1)Ffmpeg中的DTS 和 PTSH264里有两种时间戳:DTS(Decoding Time Stamp)和PTS(Presentation Time Stamp)。 顾名思义,前者是解码的时间,后者是显示的时间。要仔细理解这两个概念,需要先了解FFmpeg中的packet和frame的概念。FFmpeg中用AVPacket结构体来描述解码前或编码后的压缩包,用AVFrame结构体来描述解码...转载 2018-03-29 10:03:30 · 4711 阅读 · 0 评论 -
ffmpeg错误之[libvo_aacenc @ 03c62300] more samples than frame size (avcodec_encode_audio2)
1.背景音频aac编码的时候,调用函数接口avcodec_encode_audio2)提示错误信息:[aac @ 0x7f7bb40184a0] more samples than frame size (avcodec_encode_audio2)2.原因代码块如下:if (frame->nb_samples > avctx->frame_size) { av_log(...原创 2018-03-28 17:40:09 · 2771 阅读 · 2 评论 -
ffmpeg获取音频
前面讲解了如何使用libavdevice采集摄像头图像同样 libavdevice 也可以采集麦克风的声音。下面就讲解麦克风声音的采集:采集声音和采集摄像头本质上没有多大的却别,基本上就是换个名字:其中"audio=麦克风 (Realtek High Definition Audio)"跟之前获取摄像头名字一样的方法,直接使用ffmpeg命令行获取即可,不懂得直接查看之前的教程。传送门成功打开麦...转载 2018-03-28 14:14:46 · 2191 阅读 · 0 评论 -
ffmpeg实现windows屏幕录制YUV420P并实现H264编码
完整工程下载https://download.youkuaiyun.com/download/iot_shun/10313142首先之前我们的代码利用gdigrab已经实现了屏幕录制功能,可是我们发现,保存的YYU42OP文件实现太大,100张150M,在音视频实时传输的过程中我们需要利用软硬件实现编码压缩,视频编码的方式有很多,例如h263,MPEG-2, H264等,这里我么采用的是H264编码实现效果...原创 2018-03-28 12:05:23 · 9219 阅读 · 4 评论 -
FFMPEG(YUV编码为H.264)
下面附一张使用FFmpeg编码视频的流程图。使用该流程,不仅可以编码H.264的视频,而且可以编码MPEG4/MPEG2/VP8等等各种FFmpeg支持的视频。图中蓝色背景的函数是实际输出数据的函数。浅绿色的函数是视频编码的函数。简单介绍一下流程中各个函数的意义:av_register_all():注册FFmpeg所有编解码器。avformat_alloc_output_context2():初始...转载 2018-03-27 23:00:50 · 1062 阅读 · 0 评论 -
ffmpeg之RGB/YUV格式详解
上一节,我们采集了屏幕图像 并且转换成YUV420P写入了文件中。既然得到了yuv420p数据,那么接下来的操作就是编码了。在开始编码之前,我们先发点时间了解下YUV420P这种格式,当然,不了解这个对我们开发录屏软件是没有影响的。不过既然要做视频开发,不了解YUV420P似乎有点说不过去吧。那么,下面就开始讲解YUV420P吧。说到图像大家比较熟悉的估计还是RGB吧,即使不懂RGB的细节,至少也...转载 2018-03-27 20:55:02 · 1133 阅读 · 0 评论 -
ffmpeg实现屏幕录制
1. gdigrabgdigrab是FFmpeg专门用于抓取Windows桌面的设备。非常适合用于屏幕录制。它通过不同的输入URL支持两种方式的抓取:(1)“desktop”:抓取整张桌面。或者抓取桌面中的一个特定的区域。(2)“title={窗口名称}”:抓取屏幕中特定的一个窗口(目前中文窗口还有乱码问题)。gdigrab另外还支持一些参数,用于设定抓屏的位置:offset_x:抓屏起始点横坐...原创 2018-03-27 20:40:16 · 9518 阅读 · 2 评论 -
FFmpeg源代码结构图 - 编码
=====================================================FFmpeg的库函数源代码分析文章列表:【架构图】FFmpeg源代码结构图 - 解码FFmpeg源代码结构图 - 编码【通用】FFmpeg 源代码简单分析:av_register_all()FFmpeg 源代码简单分析:avcodec_register_all()FFmpeg 源代码简单分析:...转载 2018-03-27 20:04:15 · 579 阅读 · 0 评论 -
FFmpeg源代码结构图 - 解码
FFmpeg的库函数源代码分析文章列表:【架构图】FFmpeg源代码结构图 - 解码FFmpeg源代码结构图 - 编码【通用】FFmpeg 源代码简单分析:av_register_all()FFmpeg 源代码简单分析:avcodec_register_all()FFmpeg 源代码简单分析:内存的分配和释放(av_malloc()、av_free()等)FFmpeg 源代码简单分析:常见结构体的...转载 2018-03-27 20:02:57 · 257 阅读 · 0 评论 -
ffmpeg获取摄像头数据保存成YUV420P格式
编译之前得下载好ffmpeg库文件pro文件SOURCES += \ ffmpeg_libavdevice.cppINCLUDEPATH += $$PWD/ffmpeg/includeLIBS += $$PWD/ffmpeg/lib/avcodec.lib \ $$PWD/ffmpeg/lib/avdevice.lib \ $$PWD/ffmpeg/lib/av...原创 2018-03-27 19:46:22 · 2352 阅读 · 0 评论 -
ffmpeg之sws_scale函数的用法-具体应用
如果想將某個PixelFormat轉換至另一個PixelFormat,例如,將YUV420P轉換成YUYV422,或是想變換圖的大小,都可以使用swscale達成。其中,PixelFormat 的列表在 libavutil/pixfmt.h 內定義。swscale的用法可以參考libswscale/swscale-example.c的sample code。主要function有三個sws_ge...转载 2018-03-27 19:29:10 · 1439 阅读 · 0 评论 -
ffmpeg获取摄像头支持列表
的libavdevice类库最简单的例子。通过该例子,可以学习FFmpeg中 * libavdevice类库的使用方法。 * 本程序在Windows下可以使用2种方式读取摄像头数据: * 1.VFW: Video for Windows 屏幕捕捉设备。注意输入URL是设备的序号, * 从0至9。 * 2.dshow: 使用Directshow。注意作者机器上的摄像...原创 2018-03-27 17:35:33 · 4517 阅读 · 0 评论 -
音视频技术总结1
流媒体协议 流媒体协议是服务器与客户端之间通信遵循的规定。当前网络上主要的流媒体协议如图所示。直播平台参数对比 主流互联网视音频平台直播服务的参数对比如图所示:直播技术架构图:可以看到直播的流程可以分为如下几步:采集 —>处理—>编码和封装—>推流到服务器—>服务器流分发—>播放器流播放1.音视频采集采集是整个视频推流过程中的第一个环节,它从系统的采集设备中获取原始视...转载 2018-03-29 12:00:41 · 793 阅读 · 0 评论