本文共 3374 字,大约阅读时间需要 11 分钟。
本文提取自:
封装格式( MP4, RMVB, TS, FLV, AVI)
• 视频编码数据( H.264, MPEG2, VC-1) • 音频编码数据( AAC, MP3, AC-3) • 视频像素数据( YUV420P, RGB) • 音频采样数据( PCM)信息查看工具
▫ 综合信息查看 –MediaInfo ▫ 二进制信息查看 –UltraEdit ▫ 单项详细分析 –封装格式: Elecard Format Analyzer –视频编码数据: Elecard Stream Eye –视频像素数据: YUV Player –音频采样数据: Adobe Audition–访问FFmpeg官网(http://ffmpeg.org)→选择Download→选择Windows Package→进入Zeranoe FFmpeg网站。
–注意不要直接从FFmpeg官网下载源代码。 • 版本说明 ▫ Zeranoe网站中的FFmpeg分为3个版本: –Static:只包含3个体积很大的exe。 –Shared:除了3个体积较小的exe之外,还包含了dll 动态库文件。 –Dev:只包含了开发用的头文件(*.h)和导入库文件(*.lib)。 PS: 命令行使用的时候下载Static或者Shared版本就可以了– 如果是C语言中使用 FFmpeg,则直接使用下面代码
#include "libavcodec/avcodec.h" – 如果是C++语言中使用 FFmpeg,则使用下面代码 #define __STDC_CONSTANT_MACROS extern "C" { #include "libavcodec/avcodec.h " }FFmpeg一共包含8个库:
▫ avcodec:编解码(最重要的库)。 ▫ avformat:封装格式处理。 ▫ avfilter: 滤镜特效处理。 ▫ avdevice:各种设备的输入输出。 ▫ avutil : 工具库(大部分库都需要这个库的支持)。 ▫ postproc:后加工。 ▫ swresample: 音频采样数据格式转换。 ▫ swscale: 视频像素数据格式转换。
▫ av_register_all () :注册所有组件。 ▫ avformat_open_input() :打开输入视频文件。 ▫ avformat_find_stream_info():获取视频文件信息。 ▫ avcodec_find_decoder() :查找解码器。 ▫ avcodec_open2() :打开解码器。 ▫ av_read_frame() :从输入文件读取一帧压缩数据。 ▫ avcodec_decode_video2() :解码一帧压缩数据。 ▫ avcodec_close() :关闭解码器。 ▫ avformat_close_input() :关闭输入视频文件。
▫ AVFormatContext –封装格式上下文结构体,也是统领全局的结构体,保存了视频文件封装格式相关信息。
▫ AVInputFormat –每种封装格式(例如FLV, MKV, MP4, AVI )对应一个该结构体。 ▫ AVStream –视频文件中每个视频(音频)流对应一个该结构体。 ▫ AVCodecContext –编码器上下文结构体,保存了视频(音频)编解码相关信息。 ▫ AVCodec –每种视频(音频)编解码器(例如H.264解码器) 对应一个该结构体。 ▫ AVPacket –存储一帧压缩编码数据。 ▫ AVFrame –存储一帧解码后像素(采样)数据。
▫ AVFormatContext –iformat:输入视频的AVInputFormat –nb_streams :输入视频的AVStream 个数
–streams :输入视频的AVStream [] 数组 –duration :输入视频的时长(以微秒为单位) –bit_rate :输入视频的码率 ▫ AVInputFormat –name:封装格式名称 –long_name:封装格式的长名称 –extensions:封装格式的扩展名 –id:封装格式ID –一些封装格式处理的接口函数▫ AVStream –id:序号 –codec:该流对应的AVCodecContext –time_base:该流的时基 –r_frame_rate: 该流的帧率 ▫ AVCodecContext –codec:编解码器的AVCodec –width, height:图像的宽高(只针对视频) –pix_fmt:像素格式(只针对视频) –sample_rate:采样率(只针对音频) –channels:声道数(只针对音频) –sample_fmt:采样格式(只针对音频) ▫ AVCodec –name:编解码器名称 –long_name:编解码器长名称 –type:编解码器类型 –id:编解码器ID –一些编解码的接口函数
▫ AVPacket –pts:显示时间戳 –dts :解码时间戳 –data :压缩编码数据 –size :压缩编码数据大小 –stream_index :所属的AVStream ▫ AVFrame –data:解码后的图像像素数据(音频采样数据)。 –linesize:对视频来说是图像中一行像素的大小;对音频来说是整个音 频帧的大小。
–width, height:图像的宽高(只针对视频)。 –key_frame:是否为关键帧(只针对视频) 。 –pict_type:帧类型(只针对视频) 。例如I , P, B。SDL:封装了复杂的视音频底层交互工作,简化了视音频处理的难度。
特点:跨平台,开源、
结构
▫ SDL结构如下所示。可以看出它实际上还是调用了 DirectX等底层的API 完成了和硬件的交互。
▫ 打开属性面板 –解决方案资源管理器->右键单击项目->属性
▫ 头文件配置 –配置属性->C/C++->常规->附加包含目录,输入“include”(刚才拷贝文件的目录) ▫ 导入库配置 –配置属性->链接器->常规->附加库目录,输入“lib” (刚才拷贝文件的目录) –配置属性->链接器->输入->附加依赖项,输入“SDL2.lib;SDL2main.lib”(导入库的文件名) ▫ 动态库不用配置▫ SDL_Init() :初始化SDL系统
▫ SDL_CreateWindow() :创建窗口SDL_Window ▫ SDL_CreateRenderer() :创建渲染器SDL_Renderer ▫ SDL_CreateTexture() :创建纹理SDL_Texture ▫ SDL_UpdateTexture() :设置纹理的数据 ▫ SDL_RenderCopy() :将纹理的数据拷贝给渲染器 ▫ SDL_RenderPresent() :显示 ▫ SDL_Delay() :工具函数,用于延时。 ▫ SDL_Quit() :退出SDL系统
SDL数据结构简介
▫ SDL_Window –代表了一个“窗口” ▫ SDL_Renderer –代表了一个“渲染器” ▫ SDL_Texture –代表了一个“纹理” ▫ SDL_Rect –一个简单的矩形结构
▫ 最关键命令 –打开指定文件夹命令 cd { 文件路径}
–切换到上一级文件夹 cd .. –切换到当前目录下名为xxx的文件夹 cdxxx –改变当前盘符命令 c: ▫ 其他命令 –查看目录内容命令 dir –创建目录命令 md –文件复制命令 copy –删除文件命令 del –清除屏幕命令 cls • Windows系统提供的额外命令 ▫ 例如ping, ipconfig等等
转载地址:http://ienws.baihongyu.com/