FFmpeg
文章平均质量分 87
N3verL4nd
中年老男人~
展开
-
what is muxing and demuxing
They're short for multiplexing and demultiplexing. Multiplexing means combining different types of data in a single stream or file. On this board, they're talking about combining the video and audio d原创 2016-06-11 22:56:21 · 1800 阅读 · 0 评论 -
最简单的基于FFMPEG+SDL的视频播放器 ver2 (采用SDL2.0)
=====================================================最简单的基于FFmpeg的视频播放器系列文章列表:100行代码实现最简单的基于FFMPEG+SDL的视频播放器(SDL1.x)最简单的基于FFMPEG+SDL的视频播放器 ver2 (采用SDL2.0)最简单的基于FFmpeg的解码器-纯净版(不包含libavf转载 2016-08-21 11:24:24 · 893 阅读 · 0 评论 -
FFMPEG结构体分析:AVCodec
注:写了一系列的结构体的分析的文章,在这里列一个列表:FFMPEG结构体分析:AVFrameFFMPEG结构体分析:AVFormatContextFFMPEG结构体分析:AVCodecContextFFMPEG结构体分析:AVIOContextFFMPEG结构体分析:AVCodecFFMPEG结构体转载 2016-08-09 16:58:28 · 550 阅读 · 0 评论 -
FFMPEG结构体分析:AVPacket
注:写了一系列的结构体的分析的文章,在这里列一个列表:FFMPEG结构体分析:AVFrameFFMPEG结构体分析:AVFormatContextFFMPEG结构体分析:AVCodecContextFFMPEG结构体分析:AVIOContextFFMPEG结构体分析:AVCodecFFMPEG结构体转载 2016-08-09 17:44:36 · 1016 阅读 · 0 评论 -
FFMPEG结构体分析:AVFrame
注:写了一系列的结构体的分析的文章,在这里列一个列表:FFMPEG结构体分析:AVFrameFFMPEG结构体分析:AVFormatContextFFMPEG结构体分析:AVCodecContextFFMPEG结构体分析:AVIOContextFFMPEG结构体分析:AVCodecFFMPEG结构体转载 2016-08-09 17:47:29 · 745 阅读 · 0 评论 -
FFMPEG学习----使用SDL播放PCM数据
参考雷神的代码:/*** 最简单的SDL2播放音频的例子(SDL2播放PCM)* Simplest Audio Play SDL2 (SDL2 play PCM)** 本程序使用SDL2播放PCM音频采样数据。SDL实际上是对底层绘图* API(Direct3D,OpenGL)的封装,使用起来明显简单于直接调用底层* API。** 函数调用步骤如下:** [初始化]* S原创 2016-08-31 14:23:11 · 2130 阅读 · 1 评论 -
FFMPEG学习----打印视频信息
#include #include extern "C"{#include "libavformat/avformat.h"#include "libavutil/dict.h"}#pragma comment(lib, "avformat.lib")#pragma comment(lib, "avutil.lib")#pragma comment(lib, "avcodec.l原创 2016-07-27 15:37:14 · 4567 阅读 · 1 评论 -
VS2013+FFMPEG开发环境配置
官网:https://ffmpeg.zeranoe.com/builds/包含三个版本:Static、Shared以及DevStatic --- 包含3个应用程序:ffmpeg.exe , ffplay.exe , ffprobe.exe,体积都很大,相关的DLL已经被编译到exe里面去了。Shared --- 除了ffmpeg.exe , ffplay.exe , ffp原创 2016-06-10 23:21:49 · 8636 阅读 · 8 评论 -
FFMPEG结构体分析:AVCodecParameters
/** * This struct describes the properties of an encoded stream. * * sizeof(AVCodecParameters) is not a part of the public ABI, this struct must * be allocated with avcodec_parameters_alloc() and原创 2016-08-31 18:07:23 · 2654 阅读 · 3 评论 -
FFmpeg被声明为已否决的解决方案
参考雷神的最简单的打印Hello World的程序:#include #include extern "C"{#include "libavformat/avformat.h"#include "libavutil/dict.h"};#pragma comment(lib, "avformat.lib")#pragma comment(lib, "avutil.lib")#p原创 2016-09-01 08:58:57 · 19440 阅读 · 3 评论 -
FFMPEG学习----使用SDL构建音频播放器
ffmpeg版本:ffmpeg-20160413-git-0efafc5#include #include #include extern "C"{#include "libavcodec/avcodec.h"#include "libavformat/avformat.h"#include "libswresample/swresample.h"#include "SDL.原创 2016-09-01 11:48:25 · 1029 阅读 · 0 评论 -
使用FFMPEG类库分离出多媒体文件中的H.264码流
在使用FFMPEG的类库进行编程的过程中,可以直接输出解复用之后的的视频数据码流。只需要在每次调用av_read_frame()之后将得到的视频的AVPacket存为本地文件即可。经试验,在分离MPEG2码流的时候,直接存储AVPacket即可。在分离H.264码流的时候,直接存储AVPacket后的文件可能是不能播放的。如果视音频复用格式是TS(MPEG2 Transpo转载 2016-08-23 18:35:22 · 965 阅读 · 0 评论 -
FFMPEG学习----解码视频
基础概念我们平时看到的视频文件有许多格式,比如 avi, mkv, rmvb, mov, mp4等等,这些被称为容器(Container), 不同的容器格式规定了其中音视频数据的组织方式(也包括其他数据,比如字幕等)。容器中一般会封装有视频和音频轨,也称为视频流(stream)和音频 流,播放视频文件的第一步就是根据视频文件的格式,解析(demux)出其中封装的视频流、音频流以及字幕(如果有的原创 2016-08-14 11:39:56 · 1218 阅读 · 0 评论 -
FFMPEG 实现 YUV,RGB各种图像原始数据之间的转换(swscale)
FFMPEG中的swscale提供了视频原始数据(YUV420,YUV422,YUV444,RGB24...)之间的转换,分辨率变换等操作,使用起来十分方便,在这里记录一下它的用法。swscale主要用于在2个AVFrame之间进行转换。下面来看一个视频解码的简单例子,并将解码后的数据保存为原始数据文件(例如YUV420,YUV422,RGB24等等)。/*** 使用FFmpeg解转载 2016-08-24 11:55:16 · 13600 阅读 · 1 评论 -
FFMPEG学习----使用SDL构建视频播放器
#include extern "C"{#include "libavcodec/avcodec.h"#include "libavformat/avformat.h"#include "libswscale/swscale.h"#include "libavutil/imgutils.h"#include "SDL.h"};#pragma comment(lib, "avc原创 2016-08-22 13:06:30 · 821 阅读 · 0 评论 -
FFMPEG学习----分离视频里的H.264与YUV数据
#include extern "C"{#include "libavcodec/avcodec.h"#include "libavformat/avformat.h"#include "libswscale/swscale.h"#include "libavutil/imgutils.h"};#pragma comment(lib, "avcodec.lib")#pragm原创 2016-08-19 11:23:19 · 1284 阅读 · 0 评论 -
SDL多线程显示更新窗口
//初始化SDL2和创建一个窗口,并且将屏幕绘制成大红色#include extern "C"{#include }//Refresh Event#define REFRESH_EVENT (SDL_USEREVENT + 1)#define BREAK_EVENT (SDL_USEREVENT + 2)bool thread_exit = false;int thre原创 2016-08-13 12:24:01 · 5554 阅读 · 0 评论 -
最简单的视音频播放示例9:SDL2播放PCM
=====================================================最简单的视音频播放示例系列文章列表:最简单的视音频播放示例1:总述最简单的视音频播放示例2:GDI播放YUV, RGB最简单的视音频播放示例3:Direct3D播放YUV,RGB(通过Surface)最简单的视音频播放示例4:Direct转载 2016-08-27 10:06:29 · 943 阅读 · 1 评论 -
FMPEG结构体分析:AVStream
注:写了一系列的结构体的分析的文章,在这里列一个列表:FFMPEG结构体分析:AVFrameFFMPEG结构体分析:AVFormatContextFFMPEG结构体分析:AVCodecContextFFMPEG结构体分析:AVIOContextFFMPEG结构体分析:AVCodecFFMPEG结构体转载 2016-08-09 16:37:31 · 2105 阅读 · 0 评论 -
FFMPEG类库打开流媒体的方法(需要传参数的时候)
使用ffmpeg类库进行开发的时候,打开流媒体(或本地文件)的函数是avformat_open_input()。其中打开网络流的话,前面要加上函数avformat_network_init()。一般情况下,只要传入流媒体的url就可以了。但是在打开某些流媒体的时候,可能需要附加一些参数。例如在播放中央人民广播电台的声音信号的时候,其url为“rtsp://mms.cnr.c转载 2016-06-18 19:28:19 · 1490 阅读 · 0 评论 -
最简单的基于FFMPEG+SDL的视频播放器:拆分-解码器和播放器
CSDN的老朋友,博主雷霄骅,于2016年7月17日去世,时年26岁,CSDN博客排名第52位。两届CSDN博客之星、微软MVP。中国传媒大学通信与信息系统专业在读博士。我们永远怀念你!=====================================================最简单的基于FFmpeg的视频播放器系列文章列表:100行代码实现最简单转载 2016-08-05 13:15:16 · 1071 阅读 · 1 评论 -
FFMPEG学习----分离视音频里的PCM数据
/*** 参考于:http://blog.csdn.net/leixiaohua1020/article/details/46890259*/#include #include extern "C"{#include "libavcodec/avcodec.h"#include "libavformat/avformat.h"#include "libswresample/s原创 2016-08-26 14:10:10 · 3471 阅读 · 0 评论 -
ffmpeg常用数据结构
AVCodecContext这是一个描述编解码器上下文的数据结构,包含了众多编解码器需要的参数信息,如下列出了部分比较重要的域:typedef struct AVCodecContext { ...... /** * some codecs need / can use extradata like Huffman tables. * mjp转载 2016-08-07 17:56:23 · 1092 阅读 · 6 评论 -
FFMPEG学习----遍历所支持的封装格式
#include extern "C"{#include "libavformat/avformat.h"};int main(void){ AVFormatContext *pFormatCtx = NULL; AVInputFormat *pInputFormat = NULL; AVOutputFormat *pOnputFormat = NULL; av_r原创 2016-08-14 10:28:54 · 1941 阅读 · 0 评论 -
SDL初始化和创建窗口
//初始化SDL2和创建一个窗口,并且将屏幕绘制成大红色#include extern "C"{#include }int main(int argc, char* argv[]){ //窗口 SDL_Window *windowScreen = NULL; //窗口表面 SDL_Surface *windowSurface = NULL; //初始化SDL2 if原创 2016-08-13 10:11:49 · 2929 阅读 · 0 评论 -
error C2054: 在“inline”之后应输入“(”
#include #include /*extern "C"{#include }*/int main(int argc, char **argv){ AVFormatContext *fmt_ctx = NULL; int ret; av_register_all(); if ((ret = avformat_open_input(&fmt_ctx, "bad.mp原创 2016-06-10 22:36:17 · 7485 阅读 · 0 评论 -
[总结]FFMPEG视音频编解码零基础学习方法
在CSDN上的这一段日子,接触到了很多同行业的人,尤其是使用FFMPEG进行视音频编解码的人,有的已经是有多年经验的“大神”,有的是刚开始学习的初学者。在和大家探讨的过程中,我忽然发现了一个问题:在“大神”和初学者之间好像有一个不可逾越的鸿沟。“大神”们水平高超,探讨着深奥的问题;而初学者们还停留在入门阶段。究竟是什么原因造成的这种“两极分化”呢?最后,我发现了问题的关键:FFMPEG难度比较大,转载 2016-08-08 13:11:40 · 766 阅读 · 0 评论 -
FFMPEG中最关键的结构体之间的关系
注:写了一系列的结构体的分析的文章,在这里列一个列表:FFMPEG结构体分析:AVFrameFFMPEG结构体分析:AVFormatContextFFMPEG结构体分析:AVCodecContextFFMPEG结构体分析:AVIOContextFFMPEG结构体分析:AVCodecFFMPEG结构体转载 2016-08-08 13:24:11 · 433 阅读 · 0 评论 -
VS2013下搭建SDL开发环境
其实如果环境配置多了,我们会发现很多vc的环境配置都大同小异。先下载源文件,可以去官网下载也可以直接CSDN下载:http://download.csdn.net/detail/davebobo/94892641 SDL简介作用SDL(Simple DirectMedia Layer)库的作用说白了就是封装了复杂的视音频底层交互工作, 简化了视音频处理的难度。本课程中只涉及原创 2016-07-25 21:08:52 · 1583 阅读 · 0 评论 -
FFMPEG学习----使用SDL播放YUV数据
命令行下配置:G:\Coding\Video\SDL\proj>tree /F文件夹 PATH 列表卷序列号为 0FD5-0CC8G:.│ sdl.cpp│ SDL2.dll│ SDL2.lib│ SDL2main.lib│ sintel_640_360.yuv│ test_yuv420p_320x180.yuv│└─sdl begin_cod原创 2016-08-20 10:43:39 · 2207 阅读 · 0 评论 -
FFMPEG结构体分析:AVFormatContext
注:写了一系列的结构体的分析的文章,在这里列一个列表:FFMPEG结构体分析:AVFrameFFMPEG结构体分析:AVFormatContextFFMPEG结构体分析:AVCodecContextFFMPEG结构体分析:AVIOContextFFMPEG结构体分析:AVCodecFFMPEG结构体转载 2016-08-09 16:07:10 · 469 阅读 · 0 评论 -
FFMPEG结构体分析:AVCodecContext
注:写了一系列的结构体的分析的文章,在这里列一个列表:FFMPEG结构体分析:AVFrameFFMPEG结构体分析:AVFormatContextFFMPEG结构体分析:AVCodecContextFFMPEG结构体分析:AVIOContextFFMPEG结构体分析:AVCodecFFMPEG结构体转载 2016-08-09 16:24:47 · 903 阅读 · 0 评论 -
FFMPEG结构体分析:AVIOContext
注:写了一系列的结构体的分析的文章,在这里列一个列表:FFMPEG结构体分析:AVFrameFFMPEG结构体分析:AVFormatContextFFMPEG结构体分析:AVCodecContextFFMPEG结构体分析:AVIOContextFFMPEG结构体分析:AVCodecFFMPEG结构体分析:AVStreamF转载 2016-08-09 16:34:13 · 770 阅读 · 0 评论 -
FFMPEG学习----遍历所支持的解码器
下面简单介绍一下遍历ffmpeg中的解码器信息的方法(这些解码器以一个链表的形式存储):1.注册所有编解码器:av_register_all();2.声明一个AVCodec类型的指针,比如说AVCodec* p;3.调用av_codec_next()函数,即可获得指向链表下一个解码器的指针,循环往复可以获得所有解码器的信息。注意,如果想要获得指向第一个解码器的指针,原创 2016-08-09 17:18:51 · 3117 阅读 · 0 评论