FFmpeg --播放器框架介绍

播放器框架

1媒体文件:
AVFormatContext
avformat_alloc_context avformat_open_input
2解复用器
AVStream
av_read_frame —
3音频(视频)包队列
AVPacket
4音频(视频)解码
AVCodecContext
avcodec_send_packet avcodec_receive_frame
采样(音频)/图像帧队列
AVFrame
音频(视频)处理

术语

容器/文件:如mp4、flv、mkv
媒体流:视频流:avc(h264) 音频流:aac
aac:1024个采样点为一帧 mp3:1152个采用点为一帧
数据帧/数据包(Frame/Packet)

编解码器

H264编码器: 图像YUV数据----H264帧,反之解码器
AAC编码器: 声音PCM数据—AAC帧

FFmeg 结构

ffplay:
ffprovbe: libavformat libavcodec …
ffmpeg:

FFmeg库简介

AVUtil:核心工具库
AVFormat:文件格式和协议库
AVCodec:编解码库

FFmpeg 函数介绍

注册
avdevice_register_all()对设备进行注册
封装
avformat_alloc_context();负责申请一个AVFormatContext
结构的内存,并进行简单初始化
avformat_open_input();打开输入视频文件
avformat_find_stream_info():获取音视频文件信息
av_read_frame(); 读取音视频包 / avformat_seek_file(); 定位文件
avformat_close_input();关闭解复用器

解码

avcodec_alloc_context3(): 分配解码器上下文
avcodec_find_decoder():根据ID查找解码器 /
avcodec_find_decoder_by_name():根据解码器名字
avcodec_open2(): 打开编解码器
avcodec_send_packet(): 发送编码数据包
avcodec_receive_frame(): 接收解码后数据
avcodec_free_context():释放解码器上下文,包含了
avcodec_close():关闭解码器

查找解码器:
AVCodec_ff_h264_decoder = {
.name = “h264”; // 不同厂家,个人 命名不同
.id = “AV_CODEC_ID_H264”; //FFmpeg内部表示,ID相同
}

如果上下本数据保存在解码器里面,多路解码的时候数据会有冲突?
设计解码器,要做到可重入,AVCodecContex保存解码器数据

h264_decode_frame(AVcodecContext *avctx), 作为参数传入

FFmpg 3.x 组件注册方式

行av_register_all,把全局的解码器、编码器等结
构体注册到各自全局的对象链表里

FFmeg 数据结构简介

AVFormatContext: 封装格式上下文结构体(类似c++中的类),统领全局的结构体

AVInputFormat demuxer : 每种封装格式(FLV)对应的结构体

AVStream:视频文件中的每个视频(音频)流对应的结构体

AVCodecContext: 解编码器上下文结构体,保存了视频编码相关的信息

AVCodec:每种视频(音频)编码器(h264解码器)对应的一个结构体

AVPacket: 存储一帧压缩编码数据

AVFrame: 存储一帧解码后像素(采样(音频))数据

AVFormateContext 和 AVInputFormate 之间的关系?
avFormatContex API 调用 , AVInputFormate 主要是ffmpeg内部调用
数据:
struct AVInputFormate *iformate; // 封装格式结构体
方法:
int (*read_header)(struct AVFormateContext * ); //函数指针

AVFormateContex AVStream AVCodecContext 之间的关系?
AVFormatContext -->
avformat_find_stream_info() : AVStream[0]/n—>
avcodec_parameters_to_context() —AVCodecContext[0]

  • 23
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: ffmpeg-3.4.1-win32-dev是一个用于Windows操作系统的开发版的ffmpeg软件。它是一个开源的多媒体处理工具,可以用于音频和视频的编解码、转码、流媒体处理等功能。 该版本主要针对Windows 32位操作系统进行开发,可以在Windows平台上使用。它提供了一系列的开发工具和库,开发者可以使用这些工具和库来实现自己的音视频处理应用程序。这些工具和库包括头文件、静态链接库和动态链接库等。 使用ffmpeg-3.4.1-win32-dev进行开发可以为开发者提供丰富的音视频处理功能。使用它可以进行音频和视频格式的转换,如将音频转码为不同的格式,或将视频进行解码、编码为不同的编码格式。此外,该开发版还提供了处理音频和视频流的功能,包括流媒体传输、流媒体录制和回放等。 开发者可以通过调用ffmpeg提供的API来实现这些功能,同时也可以利用ffmpeg提供的命令行工具进行测试和调试。这个开发版还提供了一些示例代码和文档,以帮助开发者更好地理解和使用ffmpeg的各种功能。 总之,ffmpeg-3.4.1-win32-dev是一个针对Windows 32位操作系统的开发版的ffmpeg软件,它提供了丰富的音视频处理功能和开发工具,帮助开发者快速实现自己的音视频处理应用程序。 ### 回答2: ffmpeg-3.4.1-win32-dev是一个开发库,用于在Windows 32位操作系统上使用FFmpeg导入和使用各种音频和视频文件格式。 FFmpeg是一个免费的开源多媒体框架,可用于处理音频和视频文件。它提供了一组用于处理、转码、解码、编码、合并和分割音频和视频文件的工具和库。FFmpeg也支持流媒体的处理和转换。 整个FFmpeg项目由许多库组成,其中包括libavcodec、libavformat、libavutil和libswresample等。这些库提供了不同功能的API,可以用于编写各种音视频处理应用程序。 ffmpeg-3.4.1-win32-dev是FFmpeg在Windows平台上的开发版本。它包含了用于开发应用程序的头文件、静态库和动态库。这些文件使开发人员能够在他们的项目中使用FFmpeg功能,如解码、编码、本地播放器、视频处理等。开发版本的提供者可以通过这些文件来访问并调用FFmpeg的API,以实现音视频处理的各种功能需求。 使用ffmpeg-3.4.1-win32-dev进行开发,开发者可以利用FFmpeg的功能来处理音频和视频文件。他们可以通过调用FFmpeg的库来实现文件格式的解码和编码,转换文件的编码格式,合并和分割音视频文件,以及处理流媒体。 总而言之,ffmpeg-3.4.1-win32-dev是一个开发版本的FFmpeg,用于在Windows 32位操作系统上开发音视频处理应用程序。它提供了头文件、静态库和动态库,开发者可以使用这些文件来访问FFmpeg的API,并实现各种音视频处理功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

八月的雨季997

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值