随笔分类 -  04-FFmpeg

摘要:`AVPacket`保存的是解码前的数据,也就是压缩后的数据。该结构本身不直接包含数据,其有一个指向数据域的指针,FFmpeg中很多的数据结构都使用这种方法来管理数据。 的使用通常离不开下面4个函数: 使用 来创建一个 的实例,但该函数并不会为数据分配空间,其指向数据域的指针为NULL。 通常调用 阅读全文
posted @ 2016-12-06 18:26 Brook_icv 阅读(6940) 评论(1) 推荐(1) 编辑
摘要:本文使用FFmpeg + SoundTouch实现将音频解码后,进行变调变速处理,并将处理后的结果保存为WAV文件。 主要有以下内容: 实现一个FFmpeg的工具类,保存多媒体文件所需的解码信息 将解码后的音频保存为WAV文件 SoundTouch的使用指南 1.从视频文件中提取音频保存为WAV文件 阅读全文
posted @ 2016-10-27 10:49 Brook_icv 阅读(16214) 评论(0) 推荐(5) 编辑
摘要:在上一篇文章中,视频和音频是各自独立播放的,并不同步。本文主要描述了如何以音频的播放时长为基准,将视频同步到音频上以实现视音频的同步播放的。主要有以下几个方面的内容 视音频同步的简单介绍 DTS 和 PTS 计算视频中Frame的显示时间 获取Audio clock(audio的播放时长) 将视频同 阅读全文
posted @ 2016-09-23 16:05 Brook_icv 阅读(28664) 评论(5) 推荐(16) 编辑
摘要:在前面的学习中,视频和音频的播放是分开进行的。这主要是为了学习的方便,经过一段时间的学习,对FFmpeg的也有了一定的了解,本文就介绍了 如何使用多线程同时播放音频和视频(未实现同步),并对前面的学习的代码进行了重构,便于后面的扩展。 本文主要有以下几个方面的内容: 多线程播放视音频的整体流程 多线 阅读全文
posted @ 2016-09-19 23:47 Brook_icv 阅读(13462) 评论(3) 推荐(9) 编辑
摘要:前段时间,在学习试用FFmpeg播放音频的时候总是有杂音,网上的很多教程是基于之前版本的FFmpeg的,而新的FFmepg3中audio增加了平面(planar)格式,而SDL播放音频是不支持平面格式的,所以通过FFmpeg解码出来的数据不能直接发送到SDL进行播放,需要进行一个格式转换。通过网上一 阅读全文
posted @ 2016-09-07 23:24 Brook_icv 阅读(28969) 评论(5) 推荐(23) 编辑
摘要:本文主要从以下几个方面对 做解析: AVPacket在FFmpeg中的作用 字段说明 AVPacket中的内存管理 AVPacket相关函数的说明 结合AVPacket队列说明下AVPacket在传递过程中数据缓存的管理 查了一些资料,发现FFmpeg的版本更新还是挺快,而且有很多API也有改动,本 阅读全文
posted @ 2016-08-20 16:33 Brook_icv 阅读(14267) 评论(1) 推荐(6) 编辑
摘要:参考 "dranger tutorial" ,本文将介绍如何使用FFmpeg解码音频数据,并使用SDL将解码后的数据输出。 本文主要包含以下几方面的内容: 关于播放音频的需要的一些基础知识介绍 使用SDL2播放音频 数据队列 音频格式的转换 "dranger tutorial" 确实入门FFmpeg 阅读全文
posted @ 2016-08-19 19:27 Brook_icv 阅读(15853) 评论(9) 推荐(7) 编辑
摘要:在上一篇文章中,对FFmpeg的视频解码过程做了一个总结。由于才接触FFmpeg,还是挺陌生的,这里就解码过程再做一个总结。 本文的总结分为以下两个部分: 数据读取,主要关注在解码过程中所用到的FFmpeg中的结构体。 解码过程中所调用的函数 在学习的过程主要参考的是 "dranger tutori 阅读全文
posted @ 2016-08-06 21:47 Brook_icv 阅读(11854) 评论(6) 推荐(10) 编辑
摘要:在视频解码前,先了解以下几个基本的概念: 编解码器(CODEC):能够进行视频和音频压缩(CO)与解压缩(DEC),是视频编解码的核心部分。 容器/多媒体文件(Container/File):没有了解视频的编解码之前,总是错误的认为平常下载的电影的文件的后缀(avi,mkv,rmvb等)就是视频的编 阅读全文
posted @ 2016-08-03 23:26 Brook_icv 阅读(19293) 评论(1) 推荐(26) 编辑
摘要:引言 每一个C++库的使用都是从开发环境的配置开始的,其实每个库的配置过程都是大同小异,总结下来有下面几个步骤: 1. 下载库文件,这里假定是已经预先编译完成的。 2. 配置库文件的包含目录(include)和库目录(lib) 3. 配置库文件的动态链接库(dll),这一步是很多人容易忽略的。上面配 阅读全文
posted @ 2016-07-31 04:20 Brook_icv 阅读(3599) 评论(1) 推荐(1) 编辑