FFMPEG SDK应用
文章平均质量分 79
调用ffmpeg库接口实现编码、解码、解封装等
努力努力再努力~~
这个作者很懒,什么都没留下…
展开
-
【FFmpeg_SDL_MFC】0、图像界面播放器制作整体框架
使用FFmpeg、SDL、MFC三者组合,编写一个图像界面的播放器:ffmpeg负责解封装和解码、SDL负责视频的播放、MFC是windows下的图形界面,下面5个链接是分别对每个模块的进行详细的使用和代码说明,本节是对播放器的整体流程作出总结说明【FFmpeg_SDL_MFC】1、FFMPEG视频解码器【FFmpeg_SDL_MFC】2、SDL介绍和使用案例【FFmpeg_SDL_MFC】3、FFMpeg解码和SDL柔和【FFmpeg_SDL_MFC】4、MFC的基础使用【FFmpeg_SDL_原创 2021-08-01 17:16:05 · 219 阅读 · 1 评论 -
【FFmpeg_SDL_MFC】3、FFMpeg解码和SDL柔和
五章FFmpeg+SDL的视频播放器的制作目录• FFmpeg知识回顾• SDL知识回顾• FFmpeg和SDL的整合实现视频播放• 进阶:脱离开发环境的独立播放器• 练习FFmpeg和SDL的整合实现视频播放▫ FFmpeg解码器实现了:视频文件->YUV▫ SDL视频显示实现了:YUV->屏幕2▫ FFmpeg+SDL整合之后实现了:视频文件->YUV-&...原创 2019-04-17 23:31:11 · 411 阅读 · 1 评论 -
【FFmpeg_SDL_MFC】2、SDL介绍和使用案例
四章SDL视频显示目录• 视频显示知识• SDL简介• VC下SDL开发环境的搭建• 示例程序运行• SDL视频显示的函数• SDL视频显示的数据结构• 进阶-示例程序运行• 进阶-SDL中多线程和事件• 练习视频显示知识视频显示的流程:视频显示的流程,就是将像素数据“画”在屏幕上的过程, 例如显示YUV,就是将YUV“画”在系统的窗口中。SDL简介作用SDL(S...原创 2019-04-17 23:28:27 · 4002 阅读 · 2 评论 -
【FFmpeg_SDL_MFC】1、FFMPEG视频解码器
三章FFmpeg视频解码器目录• 视频解码知识• VC下FFmpeg开发环境的搭建• 示例程序运行• FFmpeg解码的函数• FFmpeg解码的数据结构• 练习视频解码知识1、纯净的视频解码流程▫ 压缩编码数据->像素数据。▫ 例如解码H.264,就是“H.264码流->YUV”。2、一般的视频解码流程▫ 视频码流一般存储在一定的封装格式(例如MP4、AVI...原创 2019-04-17 23:27:55 · 1037 阅读 · 1 评论 -
【FFmpeg_SDL_MFC】5、视频播放器的制作-图形界面版
六章FFmpeg+SDL的视频播放器的制作-图形界面版目录• MFC知识• FFmpeg + SDL视频播放器知识回顾• FFmpeg+SDL+MFC实现图形界面视频播放器• 练习MFC知识1、创建MFC工程的方法▫ 打开VC++▫ 文件->新建->项目->MFC应用程序▫ 应用程序类型->基于对话框▫ 取消勾选“使用Unicode库”(暂不详细介绍)...原创 2019-04-17 23:29:55 · 1120 阅读 · 0 评论 -
【FFmpeg_SDL_MFC】4、MFC的基础使用
参考:MFC使用详解一、创建MFC工程▫ 打开VC++▫ 文件->新建->项目->MFC应用程序▫ 应用程序类型->基于对话框(最简单的一种)▫ 取消勾选“使用Unicode库”(暂不详细介绍)二、置控件在右侧工具箱拖到到此:Button:按键,如:暂停、播放Edit Control:文件路径框Static Text:没有实际含义,文字信息三、修改属性说明:ID:对话框ID,唯一标识对话框资源,可以修改;代码中用来表示当前控件的唯一标识Capti原创 2021-08-01 12:27:44 · 301 阅读 · 0 评论 -
【FFMpeg SDK使用】API汇总解析
avformat_alloc_output_context2作用: 根据输出文件的格式获取AVFormatContext结构,获取AVFormatContext结构,封装的时候使用int avformat_alloc_output_context2(AVFormatContext **ctx, AVOutputFormat *oformat, const char *format_name, const char *filename);参数:ctx:输出到AVFormatContext结构的指针原创 2021-07-11 13:28:20 · 425 阅读 · 0 评论 -
【FFMpeg SDK使用】3、调用FFmpeg SDK实现视频编码
FFMpeg视频解码器所包含的结构同FFMpeg编码器类似,FFMpeg解码器也需要编码时的各种结构,除此之外,解码器还需要另一个结构——编解码解析器——用于从码流中截取出一帧完整的码流数据单元。因此我们定义一个编解码上下文结构为:/*************************************************Struct: CodecCtxDescription: FFMpeg编解码器上下文********************************原创 2021-06-30 22:46:47 · 404 阅读 · 2 评论 -
【FFMpeg SDK使用】4、调用FFmpeg SDK解析封装格式的视频为音频流和视频流
音视频文件=(音频流 + 视频流) * 同步信息实现方式:音频和视频通过某种标准格式进行复用,生成某种封装格式封装格式:文件扩展名——mp4/avi/flv/mkv从底层考虑,我们可以使用的只有视频解码器、音频解码器,或者再加上一些附加的字幕解码等额外信息,却不存在所谓的mp4解码器或者avi解码器为了可以正确播放视频文件,必须将封装格式的视频文件分离出视频和音频信息分别进行解码和播放FFMpeg专门定义了一个库来处理设计文件封装格式的功能,即libavformat一、FFMpeg解复用-解.原创 2021-07-07 00:13:42 · 473 阅读 · 0 评论 -
【FFMpeg SDK使用】0、使用注意事项
1、ffmpeg是用C语言实现的,所以在cpp文件中引用,需要将头文件使用extern “C”包含:extern "C"{ #include "libavutil/opt.h" #include "libavcodec/avcodec.h" #include "libavutil/channel_layout.h" #include "libavutil/common.h" #include "libavutil/imgutils.h" #include "libavutil/mathema原创 2021-06-29 00:23:44 · 81 阅读 · 0 评论 -
【FFMpeg SDK使用】7、调用FFmpeg SDK实现视频水印
视频的水印通常指附加在原始视频上的可见或者不可见的,与原始视频无直接关联的标识。通常在有线电视画面上电视台的台标以及视频网站上的logo就是典型的视频水印的应用场景。通常实现视频水印可以通过FFMpeg提供的libavfilter库实现。libavfilter库实际上实现的是视频的滤镜功能,除了水印之外,还可以实现视频帧的灰度化、平滑、翻转、直方图均衡、裁剪等操作。我们这里实现的视频水印等操作,完全在视频像素域实现,即从一个yuv文件中读取数据到AVFrame结构,对AVFrame结构进行处理后再输出到另转载 2021-07-15 22:45:45 · 279 阅读 · 0 评论 -
【FFMpeg SDK使用】6、调用FFmpeg SDK实现视频文件的转封装
有时候我们可能会面对这样的一种需求,即我们不需要对视频内的音频或视频信号进行什么实际的操作,只是希望能把文件的封装格式进行转换,例如从avi转换为mp4格式或者flv格式等。实际上,转封装不需要对内部的音视频进行解码,只需要根据从输入文件中获取包含的数据流添加到输出文件中,然后将输入文件中的数据包按照规定格式写入到输出文件中去。1、解析命令行参数如同之前的工程一样,我们使用命令行参数传入输入和输出的文件名。为此,我们定义了如下的结构体和函数来实现传入输入输出文件的过程:typedef struct _原创 2021-07-12 23:13:58 · 168 阅读 · 1 评论 -
【FFMpeg SDK使用】2、调用FFmpeg SDK实现视频编码
一、FFMpeg进行视频编码所需要的结构为了实现调用FFMpeg的API实现视频的编码,以下结构是必不可少的:AVCodec:AVCodec结构保存了一个编解码器的实例,实现实际的编码功能。通常我们在程序中定义一个指向AVCodec结构的指针指向该实例。AVCodecContext:AVCodecContext表示AVCodec所代表的上下文信息,保存了AVCodec所需要的一些参数。对于实现编码功能,我们可以在这个结构中设置我们指定的编码参数。通常也是定义一个指针指向AVCodecContext原创 2021-06-29 00:23:08 · 345 阅读 · 1 评论 -
【FFMpeg SDK使用】8、调用FFmpeg SDK实现视频缩放
视频缩放是视频开发中一项最基本的功能。通过对视频的像素数据进行采样或插值,可以将低分辨率的视频转换到更高的分辨率,或者将高分辨率的视频转换为更低的分辨率。通过FFMpeg提供了libswscale库,可以轻松实现视频的分辨率转换功能。除此之外,libswscale库还可以实现颜色空间转换等功能。通常情况下视频缩放的主要思想是对视频进行解码到像素域后,针对像素域的像素值进行采样或差值操作。这种方式需要在解码端消耗一定时间,但是通用性最好,不需要对码流格式作出任何特殊处理。在FFMpeg中libswscale原创 2021-07-18 10:51:23 · 718 阅读 · 0 评论 -
【FFMpeg SDK使用】5、调用FFmpeg SDK封装音频和视频为视频文件
音频和视频的封装过程为解封装的逆过程,即将独立的音频数据和视频数据按照容器文件所规定的格式封装为一个完整的视频文件的过程。对于大多数消费者来说,视频封装的容器是大家最为熟悉的,因为它直接体现在了我们使用的音视频文件扩展名上,比较常见的有mp4、avi、mkv、flv等等。在进行音频和视频封装时,我们将实际操作一系列音频或视频流数据的生成和写入。所谓流,指的是一系列相关联的包的集合,这些包一般同属于一组按照时间先后顺序进行解码/渲染等处理的数据。在一个比较典型的视频文件中,我们通常至少会包含一个视频流和一个原创 2021-07-08 23:08:58 · 558 阅读 · 1 评论