FFMPEG介绍

FFMPEG是一个开源的编解码软件,读作“ef ef em peg”。官方网址是:http://ffmpeg.org/。FFMPEG几乎支持所有的格式,当然了像一些特殊的格式FFMPEG是无法支持的,例如爱奇艺的QLV等等,如果自己做一个格式,加入一些视频信息或者专门用于加密的,并且不公开格式,FFMPEG当然是无法支持的。国内的好多音视频转码、播放工具都是基于FFMPEG的,例如:格式工厂、完美解码。其实,这两款软件还是不错的,使用起来相当便利,而且功能也是比较完善的,强烈推荐。

FFMPEG是开源的,所以理论上支持所有的系统,官方直接编译好的有Windows/Linux/Mac,安装方法都很简单。简单介绍一下windows和Debian/Ubuntu的安装方式,其他的可以去FFMPEG的下载页面查看http://ffmpeg.org/download.html。

Linux安装方法(Debian/Ubuntu/Deepin等)

很简单,只需要通用APT软件包的安装方法就可以。

sudo apt install ffmpeg

Windows安装方法

可以通过上面的下载页面,点击Windows的下载图标,然后点击build来跳转,也可以直接点击https://ffmpeg.zeranoe.com/builds/来打开页面,打开后的页面如下:

在version列中有两栏:第一栏是每夜版,是正在开发中最新的版本,缺点就是可能包含大量的BUG,不建议用在实际使用中,也不建议下载;第二栏是最新的稳定版,可以看到现在的最新版本是4.0.2,就采用这个版本。在Architecture中有3栏,第3栏MacOS栏不必多说,主要来讨论下Windows 64bit和32bit。64bit的系统可以采用64bit的软件,也可以采用32bit的软件,但是32bit的系统只能采用32bit的软件。在实际开发中,建议无论系统是32bit还是64bit都采用32bit的来进行开发,当然如果包含的其他库中部分库没有32bit的,导致所有的库都采用64bit的话,那么FFmpeg也建议采用64bit的。

在Linking列中有三栏,如果是日常使用,仅仅使用命令行的方式的话,那么可以使用static版本和share版本,static版本中有3个目录:bin、doc、preset,bin目录中包含3个文件:ffmpeg.exe、ffplay.exe、ffprobe.exe,ffmpeg主要用于转码,也是日常用的比较频繁的,ffplay主要用于播放,也很实用,不过目前我使用VLC比较多,这个软件也是很强大,ffprobe就用的比较少了,主要是用来查看元数据,doc文件夹中主要是ffmpeg的文档内容,preset中有一些预配置文件。

share版本与static版本不同的是,share版本是动态编译,static版本是静态编译的。所以,share版本中的bin文件夹,除了3个可执行程序,还有一些DLL文件,不过可执行程序的体积与static相比,小了很多。

对于开发来讲,最重要的是share版本和dev版本,简单介绍dev版本:include、lib、example三个目录,分别是C/C++头文件、链接文件以及例子源代码,都挺重要的。开发完成后,动态编译,所以还需要有share版本中的dll动态编译库。

其实对于开发来讲,最好是把static和源代码全部下载下来。可以用static做一些测试,毕竟static中拥有ffmpeg中所有的标准功能,有时候遇到些问题,可以查看一下是不是不是代码的问题,而是某些格式的特定要求,ffmpeg帮忙转换而自己却不知道,源代码也很重要,源代码目录中的doc下同样有个example文件夹,里面也有大量的例子程序参考,而且有时候当某个函数不太明白,看看源代码或许就有感觉了。

另外需要用一款MediaInfo的软件来查看生成的文件,很强大,使用起来很方便。网址:https://mediaarea.net/en/MediaInfo/Download/Windows。当然了,ffmpeg的官方文档也是非常重要的:http://ffmpeg.org/doxygen/4.0/index.html(最新的4.0的,拿好不谢,可惜是英文的)。另外比较重要的就是雷神的博客,我开始的入门其实都是看的雷神的博客,可惜的是雷神走的早,导致他大量的程序都是基于2点多的版本,当年雷神的文章中,h265还仅仅是一个新的标准,但是现在h265早就被各大厂商玩坏了。雷神的博客:https://blog.csdn.net/leixiaohua1020/,尤其是可以先看看这篇入门的文章:https://blog.csdn.net/leixiaohua1020/article/details/15811977/。虽然,雷神的博客都是基于2点多的版本,但是依然拥有极高的参考价值,曾听说过国内搞音视频的基本上没有没听说过雷神的。其实网上大部分都是2点多的,我猜测一方面是音视频不再像之前那么火爆了,另外一方面2点多也基本上够用了也就懒得去整新版本了。而且,其实网上很多的原程序都是盗用雷神的,最可恶的是没有提到雷神的名字,而且什么都没改,就把关于雷神的作者注释去掉了。。。

我写这篇博客的原因其实也很简单,无非是网络上的代码基于ffmpeg版本的代码太老,与现有版本有很大不同,其二就是要么只介绍一下思路,没有什么实质性的代码,想要源代码就需要付钱,当然了,没有白吃的午餐,这样无可厚非。

我的代码讲解部分会在这个系列的文章中慢慢介绍,最终的源代码将会托管到github或者gitee当中,喜欢我的代码可以给我star,转载我的文章或者使用我的代码请署名。如果有关于音视频相关的项目,可以联系我,当然不是无偿的,不过如果是技术性的问题或者探讨,欢迎大家在文章下评论或留言,我会经常回复的,虽然我也是菜鸟,但是如果我知道的,必然是知无不言。

项目介绍

接下来的FFmpeg项目主要有以下的功能:

  1. 3个rtsp流输入,1个话筒输入,进行转码后进行rtmp流输出(多线程)
  2. 可以调节4个输入流的延迟(音视频同步)
  3. 增加台标或水印,图片的或者是文字的
  4. 精彩片段的慢速回放(例如:进球后或者得分后,慢速回放10s进球时的视频)
  5. 台标(水印)的实时变化,例如:显示秒数或者是增加字幕(都是动态的)
  6. 这个项目最主要的用处肯定是用来直播的,所以还会增加一些直播的服务器配置和网页(PC端、移动端)HTML5直播代码

目前想到的就只有这些,后续有什么补充的,还会增加的。

目录

使用FFMPEG进行音视频编解码(C++) 0.简介
使用FFMPEG进行音视频编解码(C++) 1.FFmpeg的命令行使用及代码开发的环境配置

使用FFMPEG进行音视频编解码(C++) 0.简介相关推荐

  1. FFMPEG总结 -- 音视频编解码和转码(全)

    在经过一周的学习后,现将其稍加总结下:附代码及详细注释. 简单分为如下六个部分 一.播放一个视频文件的流程 二.ffmpeg 视频编码 (YUV编码为H.264) 三.ffmpeg 视频解码 (解码为 ...

  2. 【FFmpeg】音视频编解码

    FFmpeg 常识 常用数据结构: AVCodex 编码器结构体 AVCodexContext编码器上下文 AVFrame解码后的帧 结构体的分配与释放: av_frame_alloc() / av_ ...

  3. 【ffmpeg for wince】音视频编解码多平台移植(for window/wince)

    from: http://www.cnblogs.com/windwithlife/archive/2009/05/31/1492728.html 终于完成了了第二个Client side原型(for ...

  4. 基于FFmpeg 实现RTSP, 音视频编解码,视频流添加文字,音视频合成MP4

    前言: 最近闲这没事,整理了一下之前开发过的音视频编解码库,主要基于ffmpeg,实现音视频的编解码.视频流添加文字,音视频同步到MP4等功能.有需要的小伙伴可以参考参考,如果写的有什么不对的地方,欢 ...

  5. FFmpeg音视频编解码示例

    FFmpeg示例程序集:https://www3.nd.edu/~sjiang1/docio/ffmpeg_doc/globals_eval.html FFmpeg音视频编解码示例:https://w ...

  6. 基于FFMPEG 的跨平台视频编解码研究

    第33卷 第11期 2011年11月 武 汉 理 工 大 学 学 报 JOURNALOF WUHANUNIVERSITYOFTECHNOLOGY Vol.33 No.11 췍췍췍췍췍췍췍췍췍췍췍췍췍췍 ...

  7. mplayer 所支持的音视频编解码

    这里我把mplayer 所支持的音视频编解码都罗列出来,方便大家查阅: ---------------------------------------------------------------- ...

  8. Android 音视频编解码 MediaCodec

    MediaCodec 简介 Android中的MediaCodec是一个用于音视频编解码功能的API,使用它可以实现对音视频数据进行压缩.解压缩.编辑和转换.以下是MediaCodec的主要功能: 支 ...

  9. 各种音视频编解码学习详解之 编解码学习笔记(四):Mpeg系列——Mpeg 4

    最近在研究音视频编解码这一块儿,看到@bitbit大神写的[各种音视频编解码学习详解]这篇文章,非常感谢,佩服的五体投地.奈何大神这边文章太长,在这里我把它分解成很多小的篇幅,方便阅读.大神博客传送门 ...

最新文章

  1. Attribute在.net编程中的应用
  2. leetcode--链表的设计--python
  3. C++程序设计(第二版)谭浩强----程序题课后习题答案第二章
  4. 完美日记的微服务实践和优化思路
  5. 网络编程 UDP套接字
  6. error: Microsoft Visual C++ 14.0 is required问题解决方案
  7. LiveVideoStack线上分享第三季(十四):FLV封装格式介绍及解析
  8. 判断是否是完全二叉树_【数据结构】二叉树高频考试题目【代码模板】!
  9. caioj1522: [NOIP提高组2005]过河
  10. 朋友圈消失的人,都在偷偷读哪些书?
  11. MySQL模糊查询的那些谣言
  12. 两条信号之间加电容_模电总结:第七章、波形的发生和信号的转换,正弦波振荡的电路...
  13. Eclipse或SVN—如何在Eclipse中安装SVN客户端插件
  14. ArcGIS设置默认金字塔弹出框
  15. 人脸数据集——亚洲人脸数据集
  16. C# 判断字符串中文汉字
  17. 机器学习的应用——关于正确应用机器学习
  18. Windows系统安装失败日志分析
  19. JAVA语言程序设计 第十六章 (16.10、16.11、16.12、16.13、16.14、16.15、16.16)
  20. python any函数_python中的any函数是什么?如何使用any函数?

热门文章

  1. Chapter3、色调映射
  2. php 上传到爱奇艺,php 爬虫爱奇艺 视频、内容
  3. Win11和Win10家庭版添加组策略gpedit.msc
  4. Delphi测试题——将字符串10ad200d3 中的数字合计
  5. python中griddata_python – 来自xyz数据的Matplotlib轮廓:griddata无效索引
  6. 海洋工作室——网站建设专家:送两个高级可信的IT方面的电子书下载地址给大家【关键是完全免费,无需额外Q币或积分什么的】...
  7. 「FVWM」 - 控制窗口状态 @20210120
  8. CreateCompatibleDC 介绍
  9. 华北科技学院计算机考研资料汇总
  10. python 论坛爬虫代码_python博客文章爬虫实现代码