
ffmpeg
文章平均质量分 91
阳光玻璃杯
认真,你或许不会输!
展开
-
Android 编码摄像头数据为h.264格式
之前自学了下ffmpeg,使用ffmpeg在ubuntu下编解码比较方便,但是到了Android,发现使用比较多的编解码类是MediaCodec,在工作之余,抽点时间,学习下这个类的使用,做点记录,以供后续查阅。 MediaCodec类可用于访问Android底层的媒体编解码器,它是Android为多媒体支持提供的底层接口的一部分(通常与MediaExtractor, MediaSync, Med原创 2017-04-01 15:04:46 · 8650 阅读 · 10 评论 -
ffmpeg学习十四:转码
转码指的是把一种音视频文件的格式(封装格式+编码格式)转换为另一种音视频文件的格式。转码涉及了解封装,解编码,编码,再封装的过程。这个过程基本涵盖了之前文章的所有内容。对于一个视频文件而言,要把它转为另一种格式,意味着首先要改变它的封装格式,其次,视频文件可能包含多个流,比如视频流,音频流,字幕流等都需要重新编码。原创 2017-01-11 15:21:03 · 2232 阅读 · 0 评论 -
ffmpeg学习十三:图像数据格式的转换与图像的缩放
一.实现图像数据格式转换与图像缩放的三个重要函数ffmpeg实现图像数据格式的转换以及图片的缩放的功能,主要使用swscale.h中的三个函数: sws_getContext() sws_scale() sws_freeContext() 这三个函数的定义如下: 1.sws_getContext() :/** * Allocate and return an SwsContext原创 2017-01-10 22:39:55 · 4490 阅读 · 0 评论 -
ffmpeg学习十二:滤镜(实现视频缩放,裁剪,水印等)
这篇文章对使用滤镜进行视频缩放,裁剪水印等做简单介绍。一.滤镜滤镜可以实现多路视频的叠加,水印,缩放,裁剪等功能,ffmpeg提供了丰富的滤镜,可以使用ffmpeg -filters来查看: Filters: T.. = Timeline support .S. = Slice threading ..C = Command support A = Audio input/原创 2017-01-10 17:51:23 · 10427 阅读 · 3 评论 -
ffmpeg学习十一:封装音视频到同一个文件(muxing.c源码分析)
这一节学习怎么把音频流和视频按一定的格式封装成一个文件。ffmpeg所给的例子muxing.c很好的演示封装的过程,因此,这一节主要是学习muxing.c这个文件。 这个文件的路径为:doc/examples/muxing.c 首先感受下,运行结果如下: 直接执行./muxing xxx.xxx即可 这里插讲以下使用ffmpeg生成gif的命令: 当我们执行muxing可执行文件的时候原创 2017-01-09 16:06:51 · 7979 阅读 · 5 评论 -
ffmpeg学习十:将pcm格式的音频编码为aac格式
上一节,我们使用alsa库编写了音频的采集和播放的程序。这一节,我们将在采集到的pcm格式的音频数据的基础上,进一步将其编码为aac格式。音频编码概述pcm是最原始的音频编码格式,这种编码是无损的。同时意味着存储这种数据的文件将会很庞大,因此必须进行压缩。pcm是音频的编码格式,它不是文件的封装格式,上一节我们录制的声音存储在一个.pcm为后缀的文件中,这只是我们愿意这么做而已,你完全可以不这么做,原创 2016-12-23 15:35:37 · 12676 阅读 · 5 评论 -
ffmpeg学习九:音频编码前奏-ubuntu下录音和播放
上一篇博客,我们把一个Yuv编码格式的视频文件编码为H264格式。那么接下来,自然要学习下音频编码了。在学习音频编码之前,我们先看看ubuntu下如何采集声音和播放声音。原创 2016-12-21 22:20:18 · 1734 阅读 · 0 评论 -
ffmpeg学习八:软件生成yuv420p视频并将其编码为H264格式
通过前面对ffmpeg中常用的几个api的源码分析,从而对api有了更好的理解。之前已经做过视频的解码了,今天来尝试视频的编码。ffmpeg已经给我们提供了相应的可供参考的程序:doc/examples/decoding_encoding.c文件就是解码和编码的例程。仔细阅读它的代码后,我们可以按照自己的理解,写自己的视频编码程序。我们将会把一个yuv420p格式的文件,使用h264编码器进行编码。原创 2016-12-16 09:26:18 · 7514 阅读 · 1 评论 -
ffmpeg学习七:avformat_find_stream_info函数源码分析
前面两篇文章分析avformat_open_input和avcodec_open2两个函数,我们所做的函数分析工作都是为了能够很好的理解前面一篇博客:ffmpeg学习四:写第一个程序-视频解码中所给的视频解码的程序。avformat_find_stream_info函数也是视频解码程序中必须要有的函数,因此这篇文章主要来分析这个函数。一、功能简介先看看avformat_find_stream_inf原创 2016-12-14 17:33:17 · 14608 阅读 · 8 评论 -
ffmpeg学习六:avcodec_open2函数源码分析
上一节我们尝试分析了avformat_open_input函数的源码,这个函数的虽然比较复杂,但是它基本是围绕着创建和初始化一些数据结构来展开的,比如,avformat_open_input函数会创建和初始化AVFormatContext,AVClass ,AVOption,URLContext,URLProtocol ,AVInputFormat ,AVStream等数据结构,这些数据结构的关系如原创 2016-12-09 16:02:58 · 6824 阅读 · 0 评论 -
ffmpeg学习五:avformat_open_input函数源码分析(以mp4文件为例)
上一节我们写了一个简单的程序,它可以把一个视频文件解码成多张图片。我们只是简单的使用的ffmepg提供的api来实现这一过程的,但对api具体的实现过程却一无所知,因此,从这篇博客看是,就逐步分析这些api的内部实现原理。这一节,主要分析avformat_open_input函数的具体实现。avformat_open_input函数如下:/** * Open an input stream and原创 2016-12-08 11:59:56 · 10797 阅读 · 3 评论 -
ffmpeg学习四:写第一个程序-视频解封装与解码
前面通过阅读《FFmpeg Basic》这本书,对ffmpeg工程和视频编解码的基本知识有了一定的理解,学习编程最重要的当然是动手实践了,所以这片博客,我将会完整记录自己第一次编写视频解码程序的过程。 这个程序能将一个视频转换为一帧一帧的图片。这个程序参考了decoding_encoding.c文件,但使它们还是有很大的不同。编译自己的程序在编写程序之前,先搭建一下编译环境。 我当时编译ffmep原创 2016-12-01 16:35:52 · 4381 阅读 · 0 评论 -
ffmpeg学习三:《FFmpeg Basics》读书笔记(下)
一.格式转换格式转换是ffmpeg工具用的最多的地方了。我们可以使用-f选项,在输出文件之前指定输出文件的格式。1-1媒体格式1-1-1文件格式 媒体格式是能够存储音视频数据的特殊的文件类型。如果一个文件中存储了多个流,那么它就称之为容器。我们可以使用ffmpeg -formats命令来查看ffpmeg支持的媒体格式。 1-1-2媒体容器 媒体容器是一个特别封装过的文件,其特殊的格式用来存放多原创 2016-11-30 19:17:51 · 2859 阅读 · 2 评论 -
ffmpeg学习二:《FFmpeg Basics》读书笔记(上)
为了更好的理解ffmpeg工程,官方推荐了一本书:《FFmpeg Basics》。完整的读完这本书,应该对这个工程能有一个基本的理解了。本菜英文不好,姑且从这本书中提炼出一些比较常用的知识,做个笔记吧。一.波特率,帧率,和文件大小1.1帧率1-1-1帧率的基本概念 帧率,英文说就是frames per second(FPS or fps),也就是每秒钟的帧数,完整的说就是每秒钟编码到视频文件中的帧原创 2016-11-29 16:48:27 · 5313 阅读 · 0 评论 -
ffmpeg学习一:启动篇(学习计划与环境搭建)
其实很久以前就像学习音视频编解码的相关知识了,但总是找不到切入口,不知道从何下手。最近偶尔得知ffmpeg这个开源项目,大为惊喜,想从它切入,学习音视频编解码编程的相关知识。大概浏览了下官网网站后,初步学习路线如下:熟练使用ffmpeg,ffplay,ffprobe等工具。对官方例程做深入分析自己能编程做音视频的编解码工作会使用ffserver分析ffserver的工作原理一.环境搭建u原创 2016-11-29 10:45:08 · 3824 阅读 · 0 评论