![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多媒体开发
文章平均质量分 83
yangping1220
这个作者很懒,什么都没留下…
展开
-
ffmpeg分析系列之一(注册编解码器)
一. 调用av_register_all函数注册所有的格式和编码解码器.1.1 先调用avcodec_register_all函数注册所有的编码解码器.1. 下面列出与H264相关的注册: // 注册硬件加速器 REGISTER_HWACCEL (H264_DXVA2, h264_dxva2); RE转载 2013-09-06 14:26:53 · 1420 阅读 · 0 评论 -
ffmpeg分析系列之七(打开输入的流)
err = av_open_input_stream(ic_ptr, pb, filename, fmt, ap);int av_open_input_stream(AVFormatContext **ic_ptr, // 输出参数: 格式上下文ByteIOContext *pb, // 字节IO上下文const char *file转载 2013-09-06 15:12:40 · 908 阅读 · 0 评论 -
ffmpeg分析系列之四(探测输入的格式)
调用av_open_input_file(&pFormatCtx, is->filename, NULL, 0, NULL)函数打开输入的文件.1. 分析一下函数原型:int av_open_input_file(AVFormatContext **ic_ptr, // 输出参数: 格式上下文 const char *filename转载 2013-09-06 15:00:15 · 905 阅读 · 0 评论 -
ffmpeg分析系列之三(输入输出格式)
探测数据结构:/** This structure contains the data a format has to probe a file. */typedef struct AVProbeData { const char *filename; unsigned char *buf; /**< Buffer must have转载 2013-09-06 14:58:22 · 880 阅读 · 0 评论 -
mpegts.c文件分析
1. 综述ffmpeg框架对应MPEG-2 TS流的解析的代码在mpegts.c文件中,该文件有两个解复用的实例:mpegts_demuxer和mpegtsraw_demuxer,mpegts_demuxer对应的真实的TS流格式,也就是机顶盒直接处理的TS流,本文主要分析和该种格式相关的代码;mpegtsraw_demuxer这个格式我没有遇见过,本文中不做分析。本文针对的ffmpeg的版本原创 2013-09-09 16:55:07 · 889 阅读 · 0 评论 -
ffplay程序运行流程分析
1、main()开始:分别注册编解码器,复用以及解复用器avcodec_register_all(); //register codecavdevice_register_all();av_register_all(); //register demux and mux接着就是一些分配内存空间的代码代码 略parse_options(argc, argv, op原创 2013-09-06 17:11:52 · 1637 阅读 · 1 评论 -
ffmpeg结构体以及函数介绍(二)
1 avcodec_find_decoder()/** * Find a registered decoder with a matching codec ID. * * @param id CodecID of the requested decoder * @return A decoder if one was found, NULL otherwise. */转载 2013-09-06 15:41:10 · 562 阅读 · 0 评论 -
FFplay的一些接口函数
muxer/demuxer和encoder/decoder在FFmpeg中的实现代码里,有许多相同的地方,而二者最大的差别是muxer和demuxer分别是不同的结构AVOutputFormat与AVInputFormat,而encoder和decoder都是用的AVCodec结构。这个需要认识清楚。1.// Open video fileav_open_input转载 2013-09-09 16:09:10 · 1347 阅读 · 0 评论 -
ffmpeg分析系列之六(再次探测输入的格式)
void *logctx= ap && ap->prealloced_context ? *ic_ptr : NULL; // 因为 ap == NULL, 所以 logctx 也 == NULL. if (!fmt && (err = ff_probe_input_buffer(&pb, &fmt, filename, logctx, 0, logctx ?转载 2013-09-06 15:10:59 · 727 阅读 · 0 评论 -
ffmpeg分析系列之二(文件协议)
URL协议结构:URLProtocol,URLContext和ByteIOContext是FFMpeg操作文件(即I/O,包括网络数据流)的结构,这几个结构现实的功能类似于C++的多态继承吧,C++的多态是通过子类继承实现,而FFMpeg的“多态”是通过静态对像现实。这部分的代码非常值得C程序借鉴,我是说,如果你要在C里实现类似C++多态性的功能;比如当你要区分你老婆和情人之间的不同功能时。转载 2013-09-06 14:52:19 · 735 阅读 · 0 评论 -
mpegts代码分析
因为TS流的复用和解复用是通过一个结构体 AVInputFormat 传递给解复用器的。所以重点分析该结构体提供的外部接口:AVInputFormat mpegtsraw_demuxer = { "mpegtsraw", NULL_IF_CONFIG_SMALL("MPEG-2 raw transport stream format"), sizeof(MpegTSCo原创 2013-09-10 18:56:14 · 1250 阅读 · 0 评论 -
ffmpeg结构体以及函数介绍(三)
1 AVPackettypedef struct AVPacket { /** * Presentation timestamp in AVStream->time_base units; the time at which * the decompressed packet will be presented to the user. * C转载 2013-09-06 15:41:51 · 519 阅读 · 0 评论 -
ffmpeg结构体以及函数介绍(一)
本文对在使用ffmpeg进行音视频编解码时使用到的一些函数做一个简单介绍,我当前使用的ffmpeg版本为:0.8.5,因为本人发现在不同的版本中,有些函数名称会有点小改动,所以在此有必要说明下ffmpeg的版本号。 ffmpeg本人也是刚接触,本文将采用累加的方法逐个介绍我使用到的函数,如有不妥之处,还望谅解! 头文件引入方法:extern "C"{#inclu转载 2013-09-06 15:41:46 · 599 阅读 · 0 评论 -
ffmpeg分析系列之五(打开输入的文件)
1. 打开文件:if (!fmt || !(fmt->flags & AVFMT_NOFILE)) { 因 fmt == NULL, 上面成立, 再看下面的代码: ByteIOContext *pb = NULL; // 字节IO上下文转载 2013-09-06 15:09:06 · 690 阅读 · 0 评论 -
FFMPEG函数之avformat_open_input
在进行输入和输出转码的过程中,会使用一个函数:int avformat_open_input(AVFormatContext **ps, const char *filename, AVInputFormat *fmt, AVDictionary **options)其目的是打开流,并通过filename来初始化AVFormatContex原创 2017-11-07 14:11:30 · 846 阅读 · 0 评论