写在文章前面:ffmpeg是一个开源的编解码框架,拥有很强大的功能。但是对于如果使用其来做开发呈现着严重两极分化,大神们讨论着高深的问题,大多数像我这样的小白连门都进不去。最近无意间领会了如何入门,现在写下这个系列文章《零基础学习视频解码》用来帮大家提供入门基础。博主的开发机器是基于Ubuntu 14.04 64位的,所以这个系列的文章都是在Ubuntu下完成的。

  一、安装SDL

  C语言没有图形库,其中SDL比较小巧,并且是开源的,适合入门者学习。另外安装ffmpeg的时候会检测是否安装SDL库,否则会安装失败,故先安装SDL库。

  Ubuntu已经包含SDL库,所以通过几个简单的命令就可以安装。

  sudo apt-get install libsdl1.2-dev(比较大,10M左右) 或者到 Ubuntu Software Center中安装

  附加包:

  sudo apt-get install libsdl-image1.2-dev

  sudo apt-get install libsdl-mixer1.2-dev

  sudo apt-get install libsdl-ttf2.0-dev

  sudo apt-get install libsdl-gfx1.2-dev

  安装完成之后,在目录/usr/include中,就会有个SDL文件夹,里面包含了所需要的头文件。

  执行sdl-config --version 查看是否安装成功,如果显示版本信息则表示安装成功。

  二、安装ffmpeg

  方法一:直接前往 Ubuntu Software Center中搜索ffmpeg安装。

  方法二:命令行运行:sudo  apt-get install ffmpeg

  方法三:自己下载源码编译安装:

    1、git clone https://github.com/FFmpeg/FFmpeg.git

    2、需求配置:./configure --prefix=/usr/local/ffmpeg --enable-shared --enable-nonfree --enable-gpl --enable-pthreads --disable-yasm --extra-cflags=-I/usr/local/ffmpeg/include/ --extra-ldflags=-L/usr/local/ffmpeg/lib

      --prefix=PREFIX 设置的是ffmpeg安装目录

      --enable-shared 设置允许编译共享库

      --enable-nonfree --enable-gpl 设置对License的限制,分别为允许使用付费代码和gpl代码。

      --disable-yasm 禁用汇编程序

      --extra-ldflags 设置动态链接库目录

    3、编译安装:

      sudo make

      sudo make install

      安装完成后,如果我们直接运行ffmpeg程序,会报错:

      ffmpeg: error while loading shared libraries: libavdevice.so.55: cannot open shared object file: No such file or directory

      这是因为还有一些动态链接库没有注册到系统中。第4步执行注册动态链接库。

    4、注册动态链接库:

      我们设置了动态链接库的目录,需要注册到系统中。

      echo "/usr/local/ffmpeg/lib" > /etc/ld.so.conf.d/ffmpeg.conf

      ldconfig -v

    

    在命令行执行:ffmpeg

    显示如下信息,那么恭喜你编译安装ffmpeg成功了:

    ffmpeg version N-64965-g937eaba Copyright (c) 2000-2014 the FFmpeg developers
    built on Jul 29 2014 01:28:01 with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1)
    configuration: --prefix=/usr --disable-yasm --enable-shared
    WARNING: library configuration mismatch
    swscale configuration: --arch=amd64 --enable-pthreads --enable-runtime-cpudetect --extra-version='6:9.14-0ubuntu0.14.04.1' --libdir=/usr/lib/x86_64-linux-gnu --prefix=/usr --enable-bzlib --enable-libdc1394 --enable-libfreetype --enable-frei0r --enable-gnutls --enable-libgsm --enable-libmp3lame --enable-librtmp --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-vaapi --enable-vdpau --enable-libvorbis --enable-libvpx --enable-zlib --enable-gpl --enable-swscale --enable-libcdio --enable-x11grab --enable-libx264 --enable-libxvid --shlibdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-static
    libavutil 52. 92.101 / 52. 92.101
    libavcodec 55. 69.100 / 55. 69.100
    libavformat 55. 49.100 / 55. 49.100
    libavdevice 55. 13.102 / 55. 13.102
    libavfilter 4. 11.102 / 4. 11.102
    libswscale 2. 6.100 / 2. 1. 1
    libswresample 0. 19.100 / 0. 19.100
    Hyper fast Audio and Video encoder
    usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...

    Use -h to get full help or, even better, run 'man ffmpeg'

  

  

[原]零基础学习视频解码之安装ffmpeg的更多相关文章

  1. [原]零基础学习视频解码之android篇系列文章

    截止今天,<零基础学习视频解码系列文章>.<零基础学习在Android进行SDL开发系列文章>以及<零基础学习视频解码之android篇>系列文章基本算是告一段落了 ...

  2. [原]零基础学习视频解码之FFMpeg中比较重要的函数以及数据结构

    在正式开始解码练习前先了解下关于FFmpeg中比较重要的函数以及数据结构. 1. 数据结构:  (1) AVFormatContext  AVFormatContext是一个贯穿始终的数据结构,很多函 ...

  3. [原]零基础学习视频解码之seek

    现在,我们要添加一些功能,当你看不能倒带的电影,是不是很烦? 那么函数av_seek_frame功能看起来是多么赏心悦目. 我们将让左,右箭头来回走在影片中通过一个小的向上和向下箭头很多,其中“三多一 ...

  4. [原]零基础学习在Android进行SDL开发系列文章

    [原]零基础学习SDL开发之移植SDL2.0到Android [原]零基础学习SDL开发之在Android使用SDL2.0显示BMP图 [原]零基础学习SDL开发之在Android使用SDL2.0显示 ...

  5. [原]零基础学习SDL开发之在Android使用SDL2.0显示BMP图

    关于如何移植SDL2.0到安卓上面来参考我的上一篇文章:[原]零基础学习SDL开发之移植SDL2.0到Android 在一篇文章我们主要使用SDL2.0来加载一张BMP图来渲染显示. 博主的开发环境: ...

  6. [原]零基础学习SDL开发之在Android使用SDL2.0显示BMP叠加图

    关于如何移植在android上使用SDL,可以参考[原]零基础学习SDL开发之移植SDL2.0到Android 和 [原]零基础学习SDL开发之在Android使用SDL2.0显示BMP图 . 在一篇 ...

  7. 零基础学习视频解码之FFMpeg中比较重要的函数以及数据结构

    http://www.cnblogs.com/tanlon/p/3879081.html 在正式开始解码练习前先了解下关于FFmpeg中比较重要的函数以及数据结构. 1. 数据结构:  (1) AVF ...

  8. [原]零基础学习SDL开发之移植SDL2.0到Android

    在[原]SDL开发教程我们知道了如何在pc下使用SDL进行开发,在android上面是否一样可以使用呢?答案是肯定的. 下面我们进行移植SDL到Android,这里都是基于SDL最新版进行移植的,在E ...

  9. [原]零基础学习在Android进行SDL开发后记

    本着学习交流记录的目的编写了这个系列文章,主要用来记录如何从零开始学习SDL开发的过程,在这个过程中遇到了很多问题,差点就放弃了.首先是SDL的Android移植的时候遇到了比较坑的是SDL移植到An ...

随机推荐

  1. h5空白页面过渡加载

    h5空白页面过渡加载 页面第一部分内容是图片,考虑到手机图片加载慢,想用简单.转化为base64的图片过渡 开始尝试将图片转为灰度图片,结果还是很大. 后来选取重要元素,保存2位的png,尺寸是494 ...

  2. CentOS 7下使用yum安装MySQL5.7

    1.卸载 1.1先停掉mysql进程,没有安装过的可以直接跳过 pkill - mysqld rpm -qa|grep -i mysql 1.2用命令 yum -y remove -.el7.x86_ ...

  3. 【c++】访问控制

    1.  类内的访问控制 在基类中,public和private具有普通的含义:用户(即基类的对象)可以访问public成员(包括函数.数据),而不能访问private成员.private只能被基类的成 ...

  4. iostat命令——监控系统设备的IO负载情况

    iostat命令的安装 #yum install sysstat iostat常见选项 -t   输出数据时打印搜集数据的时间 -m  输出的数据以MB为单位 -d  显示磁盘的统计信息 # iost ...

  5. bat下执行java程序报错处理

    G:\>java -Xms128M -Xmx512M -server -Dprogram.name=b omc-sa-tdtpagent -Dfile.encoding=GBK -Duser.t ...

  6. solr的schema.xml配置文件关键词意义

    fieldType:配置扩展的分析器analyzer:具体的分析器的全路径field:配置具体的索引业务字段name:字段的名称type:指定使用哪种分析器域:StringField,textFiel ...

  7. JS实现单链表、单循环链表

    链表 链表是一种物理存储单元上非线性.非连续性的数据结构(它在数据逻辑上是线性的),它的每个节点由两个域组成:数据域和指针域.数据域中存储实际数据,指针域则存储着指针信息,指向链表中的下一个元素或者上 ...

  8. node.js控制请求处理数量

    问题: 现在有一个接口,这个接口用到了无头浏览器,总之是一个比较消耗内存的接口,并发上来后,这个接口会把服务器内存榨干,导致服务器宕机.现在在不加机器的情况下,并发上来后我该怎么做既能处理掉所有请求又 ...

  9. css兼容小问题

    1.RGBA在CSS3.0体现,不向下兼容: 2.非float元素和float元素在一起版本时,非float元素会排斥float元素,为避免换行,float元素应优先显示(放非float元素之前)

  10. 预防XSS方法:HtmlEncode和JavaScriptEncode(转)

    XSS又称CSS,全称Cross SiteScript,跨站脚本攻击,是Web程序中常见的漏洞,XSS属于被动式且用于客户端的攻击方式,所以容易被忽略其危害性.其原理是攻击者向有XSS漏洞的网站中输入 ...