ffmpeg
OH,CGWLMXUP
这个作者很懒,什么都没留下…
展开
-
ffmpeg教程
ffmpeg教程http://blog.csdn.net/cffishappy/article/details/7352898概要 电影文件有很多基本的组成部分。首先,文件本身被称为容器Container,容器的类型决定了信息被存放在文件中的位置。AVI和Quicktime就是容器的例子。接着,你有一组流,例如,你经常有的是一个音频流和一个视频流。(一个流只是一种想像出来的词语,用来表...转载 2018-09-19 11:24:59 · 652 阅读 · 0 评论 -
SwrContext重采样结构体--swr_alloc()、swr_init()、swr_free()
所谓的重采样,就是改变音频的采样率、sample format、声道数等参数,使之按照我们期望的参数输出。SwrContext常用函数:struct SwrContext *swr_alloc(void);此函数用于申请一个SwrContext结构体int swr_init(struct SwrContext *s);当设置好相关的参数后,使用此函数来初始化SwrContext结构体...原创 2018-09-27 09:56:11 · 2613 阅读 · 0 评论 -
FFmpeg音频解码函数---avcodec_decode_audio4
/*@param avctx编解码器上下文 *@param [out] frame用于存储解码音频样本的AVFrame *@param [out] got_frame_ptr如果没有帧可以解码则为零,否则为非零 *@param [in] avpkt包含输入缓冲区的输入AVPacket *@return 如果在解码期间发生错误,则返回否定错误代码,否则返回从输入AVPacket消耗的字节数...原创 2018-09-27 09:56:37 · 3915 阅读 · 0 评论 -
SDL之SDL_OpenAudioDevice与SDL_OpenAudio
函数原型:SDL_AudioDeviceIDSDL_OpenAudioDevice(const char *device, int iscapture, const SDL_AudioSpec * desired, SDL_AudioSpec * obtained, int allowed_changes) ...原创 2018-09-27 13:54:22 · 3637 阅读 · 0 评论 -
FFmpeg之sws_scale库的应用(sws_getContext、sws_scale、sws_freeContext)
FFmpeg里面的sws_scale库可以在一个函数里面同时实现:1.图像色彩空间转换;2.分辨率缩放;3.前后图像滤波处理。其核心函数主要有三个:// 初始化sws_scalestruct SwsContext *sws_getContext(int srcW, int srcH, enum AVPixelFormat srcFormat, ...转载 2018-09-27 17:45:22 · 1251 阅读 · 0 评论 -
FFMPEG中的媒体打开函数avformat_open_input()、init_input()、avio_open()、av_probe_input_buffer()
本文分析了FFMPEG中的媒体打开函数avformat_open_input()//参数ps包含一切媒体相关的上下文结构,有它就有了一切,本函数如果打开媒体成功, //会返回一个AVFormatContext的实例. //参数filename是媒体文件名或URL. //参数fmt是要打开的媒体格式的操作结构,因为是读,所以是inputFormat.此处可以 //传入一个...转载 2018-09-27 18:40:32 · 965 阅读 · 0 评论 -
FFmpeg中的时间概念和时间转换等介绍
视频的显示和存放原理对于一个电影,帧是这样来显示的:I B B P。现在我们需要在显示B帧之前知道P帧中的信息。因此,帧可能会按照这样的方式来存储:IPBB。这就是为什么我们会有一个解码时间戳和一个显示时间戳的原因。解码时间戳告诉我们什么时候需要解码,显示时间戳告诉我们什么时候需要显示。所以,在这种情况下,我们的流可以是这样的:PTS: 1 4 2 3DTS: 1 2 3 4Stre...原创 2018-09-27 18:48:27 · 599 阅读 · 0 评论 -
FFmpeg之AVPacket
/*该结构存储压缩数据。它通常由分路器导出 *然后作为输入传递给解码器,或作为编码器和输出接收 *然后传递给muxers。 * *对于视频,它通常应包含一个压缩帧。对于音频它可能 *包含几个压缩帧。 * * AVPacket是FFmpeg中为数不多的结构之一,其大小是公众的一部分 * ABI。因此,它可以在堆栈上分配,并且不能向其添加新字段 *没有libavcodec和libav...原创 2018-09-30 14:20:35 · 443 阅读 · 0 评论 -
FFmpeg之AVFrame
/**该结构描述了解码的(原始)音频或视频数据。 *必须使用av_frame_alloc()(旧接口:avcodec_alloc_frame(),新接口:av_frame_alloc())分配AVFrame。请注意,这只是 *分配AVFrame本身,必须通过其他方式(见下文)管理数据的缓冲区; *必须使用av_frame_free()释放AVFrame。 * * AVFrame通常分配一...原创 2018-09-30 14:45:55 · 660 阅读 · 0 评论 -
FFmpeg内存的分配和释放---av_malloc()、av_free()等
本文简单记录一下FFmpeg中内存操作的函数。内存操作的常见函数位于libavutil\mem.c中。本文记录FFmpeg开发中最常使用的几个函数:av_malloc(),av_realloc(),av_mallocz(),av_calloc(),av_free(),av_freep()。 av_malloc()av_malloc()是FFmpeg中最常见的内存分配函数。它的定义如下。...转载 2018-09-27 09:56:45 · 7131 阅读 · 0 评论 -
SDL_CondWait与SDL_CondSignal
int SDL_CondWait(SDL_cond *cond, SDL_mutex *mut);//等待条件变量SDL_CondWait:释放传递进来的锁,然后当条件变量满足的时候,等待其他的线程调用SDL_CondSignal或者SDL_CondBroadcast改变条件变量cond,然后重新获取锁,然后返回。在调用该函数之前必须先调用SDL_LockMutex获取锁。当信号被触发的时候...原创 2018-09-26 17:42:03 · 337 阅读 · 0 评论 -
FFmpeg之avformat_open_input解析
我们知道avformat_open_input()能打开视频容器,那么现在我比较关心视频文件的MetaData怎么查看, 刚好FFMpeg给我们提供了av_dump_format()函数会自动打印MetaData信息,打印有关输入或输出格式的详细信息,例如 *持续时间,比特率,流,容器,程序,元数据,边数据, *编解码器和时基。。函数说明 一般使用av_find_str...原创 2018-10-01 15:12:24 · 1515 阅读 · 0 评论 -
0基础学习音视频编程技术(三)Qt+ffmpeg开发环境搭建+简单QT项目调用ffmpeg
一、ffmpeg下载 ffmpeg源码可在其官网上下载,网址:https://ffmpeg.zeranoe.com/builds/ 在官网上从左到右选择版本和系统,然后点击右侧的static,shared和dev,分别下载到本地。 二、解压ffmpeg 将下载下来的三个包分别解压,并分别对应命名为static,shared,dev(重新命名是为了后面配置简化)。之后,将这三个文件夹复制到...原创 2018-09-20 16:34:47 · 767 阅读 · 0 评论 -
0基础学习音视频编程技术(四) 使用FFMPEG解码视频之保存成图片
原文地址:http://blog.yundiantech.com/?log=blog&id=8前面我们已经知道怎么使用FFMPEG了。现在,开始着手使用FFMPEG吧: 首先来个简单的例子,使用FFMPEG打开视频文件,并解码保存成一张张的图片。具体的步骤如下所示: 1.首先需要先初始化一下,使用如下函数: 1 av_regist...转载 2018-09-20 16:46:23 · 164 阅读 · 0 评论 -
视频播放器原理图解
原创 2018-09-26 14:22:32 · 1018 阅读 · 0 评论 -
ffmpeg.exe的使用---命令行
• 命令格式▫ 功能ffmpeg.exe用于视频的转码。▫ 最简单的命令ffmpeg -i input.avi -b:v 640k output.ts该命令将当前文件夹下的input.avi文件转换为output.ts文件,并将output.ts文件视频的码率设置为640kbps。▫ 命令格式ffmpeg -i {输入文件路径} -b:v {输出视频码率} {输出文件路径}所有的...原创 2018-09-26 14:34:21 · 4891 阅读 · 0 评论 -
ffplay.exe的使用---命令行
• 命令格式▫ 功能ffplay.exe用于视频的播放。▫ 最简单的命令ffplay input.avi该命令将播放当前文件夹下的input.avi文件。▫ 命令格式ffplay {输入文件路径}ffplay.exe的参数格式和ffmpeg.exe是类似的。所有的参数都是以键值对的形式指定的(由于不包含输出文件,所以只能指定输入参数)。注意位于最后面的输入文件路径前面不包含参数...原创 2018-09-26 14:35:26 · 3132 阅读 · 0 评论 -
FFmpeg解码详解(原理与函数使用说明)
视频解码知识•纯净的视频解码流程▫压缩编码数据->像素数据。▫例如解码H.264,就是“H.264码流->YUV”。•一般的视频解码流程▫视频码流一般存储在一定的封装格式(例如MP4、AVI等)中。封装格式中通常还包含音频码流等内容。▫对于封装格式中的视频,需要先从封装格式中提取中视频码流,然后再进行解码。▫例如解码MKV格式的视频文件,就是“MKV->H.264码...原创 2018-09-26 14:44:06 · 4227 阅读 · 0 评论 -
SDL详解
SDL简介•作用▫SDL(Simple DirectMedia Layer)库的作用说白了就是封装了复杂的视音频底层交互工作,简化了视音频处理的难度。▫本课程中只涉及到SDL库的一小部分——视频显示部分。•特点▫跨平台▫开源SDL结构如下所示:SDL视频显示:1,SDL视频显示流程图如下:2,SDL视频显示函数简介: SDL_Init():初始化SDL系...原创 2018-09-26 14:51:32 · 1383 阅读 · 0 评论 -
int av_dup_packet(AVPacket *pkt);
通过调用 av_malloc、memcpy、memset等函数, 将shared buffer 的AVPacket duplicate(复制)到独立的buffer中。并且修改AVPacket的析构函数指针av_destruct_pkt。int av_dup_packet(AVPacket *pkt){ if (((pkt->destruct == av_destruct_pac...原创 2018-09-26 17:34:37 · 721 阅读 · 0 评论 -
FFmpeg之av_samples_get_buffer_size
/* *获取给定音频参数所需的缓冲区大小。 * @param [out] linesize计算的lineize,可能为NULL * @param nb_channels频道数 * @param nb_samples单个通道中的样本数 * @param sample_fmt样本格式 * @param对齐缓冲区大小对齐(0 =默认,1 =无对齐) * @return需要缓冲区大小,或失败...原创 2018-09-30 15:21:09 · 2855 阅读 · 0 评论