• ffmpeg-入门介绍(笔记)


    一、FFmpeg的基本组成

    目前,ffmpeg有7大库,分别为AVFormat, AVCodec, AVFilteer, AVDecoder, AVUtil,Swresample, Swscale,AVDevice七大库组成。

    1、AVFormat模块

    它实现了对文件的封装(muxing)解封装(demuxing),例如:MP4,flv,ts等文件格式,RTMP(Real Time Messaging Protocol),TRSP(Real Time Streaming Protocol),MMS等网络协议封装格式。在实际需求中,我们可以对avforamt增加自己的封装处理模块,进行媒体封装格式的扩展,增加自己定制的封装格式。

    2、AVCodec模块

    它实现了大多数常用的编解码格式,支持编码(encoder),也支持解码(decoder), 例如:MPEG4,AAC,MJPEG,H.264(第三方解码器),H.265等解码器,同样,也支持h264对应的x264编码器,h265支持的x265编码器。同理,我们也可以对AVcodec进行拓展,增添我们自己的编解码格式。

    3、AVFilter模块

    它提供了一个通用的音频,视频,字幕等滤镜处理框架,它的一个使用样例如下:

     在这张图中,首先,一个输入文件进行分割成为两个流,一个保存原样([main]),另一个传入[tmp],经过crop滤镜和vflip滤镜处理后,覆盖在[main]流上,并输出新的视频。

    例如:ffmpeg -i INPUT -vf "split [main][tmp]; [tmp] crop = iw:ih/2:0:0, vflip [flip]; [main][flip] overlay=0:H/2" OUTPUT

    这行命令的刨析:

    a、“,”: 用于分割两个相同的Filter线性链,在这里就是crop和vflip

    b、“;”: 用于分隔不同的Filter线性链

    c、[main][flip]  表示这两个流进行合并,后面overflay表示flip从x = 0, y = H/2这个地方开始覆盖掉。

    4、swscale和swresample模块

    这两个模块放在一起介绍:

    scale:裁剪,是对视频图像进行缩放和像素格式转换。例如:将图像从1080p->720p,将图像数据从yuv420P->YUYV,YUV->RGB。

    YUV:Y代表亮度,UV代表色度。用于对视频图形进行压缩。

    swresample:重采样,音频需要进行采样,它可以操作音频采样,音频通道(channel)布局转换和调整。

    5、命令分析:

    例如;ffmpeg -i input.mp4 output.avi

    a、-i: input(输入),后面接一个输入文件。

    第二个人参数就是输出文件,在这里是output.avi

    b、在这里,这两个文件不是简单的进行后缀名的更换,而是对它的封装格式进行了转换,转换过程如下图:

     先读取输入流,让后通过Demuxer(调用libavformat的API)对音频包进行解封装,通过Decoder(libavcodec)解包为YUV或PCM数据,然后通过Encoder(libavcodec)对数据进行编码,再通过muxer(libavformat)进行封装,最后成为输出流。

    二、ffplay和ffprobe

    ffplay:它提供了音视频的显示播放功能

    ffprobe:它是一个多媒体分析工具,可用查询你要了解的媒体信息,比如音频的参数,视频的参数,时长等。

    例:ffprobe -show_streams  那些年,我们一起追的女孩.mp4

     然后,这一章的后面还讲了FFmpeg支持的封装和解封装格式,编码器与解码器支持,通信协议支持,这些知识后面遇到再去查。

    上面的语言是经过我自己的整理写的,如果有错误,欢迎纠正!

  • 相关阅读:
    ArcGIS Engine开发之地图浏览
    ArcGIS Engine开发之地图文档保存
    ArcGIS Engine开发之地图基本操作(4)
    ArcGIS Engine开发之地图基本操作(3)
    ArcGIS Engine开发之地图基本操作(2)
    ArcGIS Engine开发之地图基本操作(1)
    ArcGIS Engine开发前基础知识(4)
    C#读取Excel的三种方式以及比较
    XtraGrid RepositoryItemCheckEdit 显示状态以及单选多选问题
    Dev GridControl数据修改后实时更新数据源
  • 原文地址:https://www.cnblogs.com/ranyang/p/14942233.html
Copyright © 2020-2023  润新知