Fla

Windows下使用MinGW编译ffmpeg与x265

测试系统:Windows XP SP3 x86 & Windows 8.1 x64

2014年4月21日  luofl1992

1、准备工作

MinGW下载地址:http://sourceforge.net/projects/mingw/files/

点选:Installer>>mingw-get-setup.exe 进行下载,完成后开始安装 MinGW,前面的安装设置保持默认,进入到这里后,先在Basic Setup里面选择这样几项:

-base  -g++  -developer-toolkit

如下图:

 

接着在All packages选MSYS里面的 system-builder:

 

 

选择完毕后,点Installations菜单,选择apply changes,然后确认开始下载这些库(约126个包需要下载)。

 

下载完成后,界面上会提示完毕,点击close按钮即可。然后下载yasm,是一个exe文件放到MinGW的安装目录的bin文件夹,重命名为yasm.exe,或者msys/1.0/bin目录下。下面开始的编译相应库和ffmpeg的操作需要使用MSYS,要修改C:\MinGW\msys\1.0\etc目下的fstab文件,如果不存在fstab,复制一份fstab.sample到当前目录,然后改名为:fstab,再修改其内容为

C:/MinGW/mingw  /minGW

其中前面是MinGW的安装目录,也即为MinGW的安装路径,否则后面编译库的时候会提示缺少头文件。下面的操作,需要在命令行下完成,不同的是通过msys进入,即运行C:\MinGW\msys\1.0目录下的msys.bat批处理文件,进入一个模拟linux系统的命令行。如下图,注意切换目录时,相对目录与windows下一致,切换到其他盘时不同,如下图:

 

2、编译ffmpeg

ffmpeg可以到 http://www.ffmpeg.org/releases/ 下载,我下载的是最新版本2.2版。(注意下载的文件后缀名应该是 .tar.gz 如果下载下来没有这两个点的后缀,请自己加上再解压)或者:https://github.com/FFmpeg/FFmpeg 点界面右边的Download Zip下载。

为了支持额外的扩展库编解码,需要额外下载。

首先编译x264库,下载地址:http://www.videolan.org/developers/x264.html

ftp://ftp.videolan.org/pub/videolan/x264/snapshots/

下载源码后解压,编译安装:

./configure --prefix=/olibs --enable-shared --enable-static (注意中间是两个英文的减号,prefix项目指定库的安装目录,配置要2~3分钟的时间)

make (如果提示出错了最好先执行make clean命令,大概10分钟)

make install(无错误的话进行下一步,有错误的话检查一下上面的操作是否有所遗漏)

 

然后是编译x265库:(最新的版本已经有支持配置选项)

    下载tortoiseHG,到目录https://bitbucket.org/multicoreware/x265/src下载最新版本,编译x265需要安装cmake用来生成工程文件,注意下载最新版本,最新的x265需要cmake2.8.8以上版本。安装cmake完毕(注意设置添加到PATH)后重新进入到x265/build/msys目录,执行 make-Makefiles.sh。

这里会报错,Win8.1 x64提示是缺少三个文件( xp系统中没有提示可以直接出现下面界面)

x86_64-w64-mingw32-g++   x86_64-w64-mingw32-gcc  x86_64-w64-mingw32-windres

直接将 MinGW目录下的Bin目录下 g++、gcc、windres三个文件拷贝,然后重命名成对应的即可,然后出现了这样的界面(1处设置为C:\MinGW\msys\1.0\olibs,2处设置为bin,3处设置为lib,2和3是相对于1的路径):

 

先点下面的configure,然后点generate即可,然后关闭,回到命令行。同上面的执行

make 然后是 make install。最后编译成功应该可以找到对应的lib文件在olibs目录下。

 

最后编译ffmpeg

假设安装路径为/FFmpeg/Release(相对于MSYS目录的位置),假设第三方库所在路径为/olibs,配置编译,注意下面蓝色的可能不好用(在Win8.1下尝试时总是提示找不到libx264库,最后将MinGW安装目录下的msys\1.0\olibs里面的结果bin、include和lib中的库和头文件拷贝一份到MinGW安装目录下的对应目录中(比如lib目录对应lib目录)配置如下,灰色的可以选用:

./configure --prefix=/FFmpeg/Release --disable-debug --disable-static --enable-shared --extra-cflags=-I/olibs/include --extra-ldflags=-L/olibs/lib --enable-gpl --enable-libx264 --enable-libx265 \

--enable-version3 --enable-avfilter --enable-avfilter-lavf --enable-memalign-hack --enable-avisynth \

--enable-libgsm \

--enable-libmp3lame

--enable-libopencore-amrnb \

--enable-libopencore-amrwb \

--enable-libtheora \

--enable-libvorbis \

--enable-libxvid

make  (配置不提示出错的话,就没啥问题了,安心等待喝杯咖啡,20~30分钟)

make install  (编译完毕,最后安装)

 

最后可以在目录C:\MinGW\msys\1.0/FFmpeg/Release 找到编译的结果。

 

最后推荐一个ffmpeg常用的库:sdl,用来做播放器很简单。Ffmpeg解码其他格式需要添加相应的库,大家可以自行百度,或者在编译ffmpeg之前 ./configure –help 指令查看一下支持的库,然后上网查询一下对应的库即可。

 

本文到此结束。

 

最后祝大家(工作顺利||学业有成)

 

参考链接:

1、MinGW的安装与配置

http://www.cnblogs.com/azraelly/archive/2012/12/31/2840156.html

2、对ffmpeg支持库的编译说明比较详细

http://www.codecoolie.com/ffmpeg/compile-ffmpeg-under-windows/

3、提到了修改fstab文件

http://blog.chinaunix.net/uid-20718335-id-2980793.html

Working on Ubuntu/Linux with Matlab

Working on linux would be more efficient.

1. Install Ubuntu

install the system:

sudo umount -l /isodevice

uninstall firefox and install chrome.

//保留配置文件
sudo apt-get autoremove firefox firefox-branding firefox-gnome-support ubufox
//配置文件也一起删掉
sudo apt-get purge firefox firefox-branding firefox-gnome-support ubufox

Chrome browzer can be downloaded by google/baidu it and install the deb file by double-click it.

Then the shurufa ibus can also be uninstalled.

sudo apt-get remove ibus

Another problem is the lightness of the screen could not be saved, just try this command.

sudo gedit /etc/rc.local

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will “exit 0″ on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
// add this row
echo 0 > /sys/class/backlight/acpi_video0/brightness
exit 0

You may need to set the default launch system by revising the grub configurations.

sudo gedit /etc/default/grub
// set the default launch system number
grub_default=0
// set waiting time by revising the timeout
timeout=3
// after this
sudo update-grub

And you may need to disable your touch panel while you already have a mouse.

sudo gedit /etc/modprobe.d/blacklist.conf
// in the end, add this line and restart your computer
blacklist psmouse

To reenable, you can delete this line. or try these commands

sudo rmmod psmouse    #disable
sudo modprobe psmouse #enable
通过以上方法禁用触摸板之后,无法再重新启用触摸板,除非删除添加的语句,重启电脑。
今天发现一个应用指示器(Indicator)可以很方便的禁用和启用触摸板,方法如下:
安装Touchpad Indicator (触摸板开关)
sudo add-apt-repository ppa:atareao/atareao
sudo apt-get update
sudo apt-get install touchpad-indicator

2.  Install matlab.iso to device

download the matlab.iso with versions you can, and then mount it like this,

sudo mkdir /media/cdrom 
sudo mount -o loop myfile.iso /media/cdrom

then you can easily install matlab on your system using these commands.

cd /mnt/cdrom
sudo ./install

select "install without using internet" and then input the key to continue the installation, 

when finished, try to "acivate without using the internet" and select the lisence file.

Then execute this to umount the iso file and you can try matlab in your installation directory

sudo umount /mnt/cdrom 
in the /usr/local/MATLAB/ directory, you will find a desktop file, copy it to your desktop and enjoy it.

If you are unable to find the desktop file, you may try to copy the "Matlab.png" icon file and the "Matlab.desktop" to your matlab installation place. And then try to revise the content by

sudo gedit /usr/local/MATLAB/MATLAB_Production_Server/R2013a/Matlab.desktop
// the dektop file content
// the installation path is "/usr/local/MATLAB/MATLAB_Production_Server/R2013a/"
[Desktop Entry]
Type=Application
Name=Matlab 8.01
Comment="Start Matlab 8.01"
Icon=/usr/local/MATLAB/MATLAB_Production_Server/R2013a/Matlab.png
Exec=/usr/local/MATLAB/MATLAB_Production_Server/R2013a/bin/matlab -desktop
Categories=Development;
Name[en_US]=Matlab
// lastly you can copy the desktop file to your desktop.
sudo cp /usr/local/MATLAB/MATLAB_Production_Server/R2013a/Matlab.desktop ~/Desktop/Matlab.desktop 

3. Update the system

Firstly try this commands to update the system.

sudo apt-get update && sudo apt-get dist-upgrade && sudo apt-get autoremove
sudo update-manager –d

Then the system would open the update-manager, select the upgrade button to finish you upgrading.

sudo apt-get install update-manager-core
sudo do-release-upgrade

Unity是Ubuntu自己打造的桌面环境,有人认为Unity桌面环境糟糕的设计使很多Ubuntu用户不满,使其转向Linux Mint等非Unity系列系统。

  • Unity优化工具:Unity Tweak Tool,可用来调整外观设置、鼠标、Unity启动器、窗口行为等选项,可直接在Ubuntu软件中心搜索安装或使用命令:sudo apt-get install unity-tweak-tool
  • 隐私设置:Ubuntu默认在其控制面板中显示用户最近访问的文件,可在“系统设置-安全与隐私”中进行调整。
  • 禁止显示在线搜索结果:可在Dash中点击需要禁用的插件,选择“禁用”即可。
  • 禁止显示购物建议:可在终端执行命令禁用,命令如下:
gsettings set com.canonical.Unity.Lenses disabled-scopes "['more_suggestions-amazon.scope', 'more_suggestions-u1ms.scope', 'more_suggestions-populartracks.scope', 'music-musicstore.scope', 'more_suggestions-ebay.scope', 'more_suggestions-ubuntushop.scope', 'more_suggestions-skimlinks.scope']"

 

4. Install JAVA SE JDK

在安装之前,系统没有任何jdk软件,也就是说在终端执行 java -version
将会输出如下内容:
root@haiyang-Aspire:~# java -version
程序 'java' 已包含在下列软件包中:
 * default-jre
 * gcj-4.6-jre-headless
 * openjdk-6-jre-headless
 * gcj-4.5-jre-headless
 * openjdk-7-jre-headless
请尝试:apt-get install <选定的软件包>
 
先去 Oracle下载Linux下的JDK压缩包,http://www.oracle.com/technetwork/java/javase/downloads/index.html,下好后直接解压。进入在存放jdk文件夹的当前目录,将解压好的jdk1.7.0_10文件夹用最高权限复移动到/usr/lib/jvm目录里,此时即使没有jvm目录也可以执行如下命令,jvm文件夹将得到创建。
sudo mv jdk1.7.0_10 /usr/lib/jvm/
接下来需要设置环境变量,进入当前用户名的主文件夹,修改.profile文件。注意,该文件是当前用户的配置文件,如果要对使用计算机的所有用户生效,那么需要设置的文件应该是 /etc/profile。
sudo gedit ~/.profile
在末尾加上:
export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_10
export JRE_HOME=/usr/lib/jvm/jdk1.7.0_10/jre 
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH

export PATH=$JAVA_HOME/bin:$PATH
然后保存关闭,此时在命令行输入java -version将会仍然显示java没有安装。此时,需要使用source更新下.profile文件:
$ source ~/.profile

再次使用java -version命令可以看到如下输出:

$ java -version
java version "1.7.0_10"
Java(TM) SE Runtime Environment (build 1.7.0_10-b18)
Java HotSpot(TM) 64-Bit Server VM (build 23.6-b04, mixed mode)
到此,已经将oracle jdk配置完成。如果之前系统里面已经安装了openjdk,可以使用如下方法将默认jdk更改过来:
$ sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.7.0_10/bin/java 300

输入sun jdk前的数字就好了

$ sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.7.0_10/bin/javac 300
$ sudo update-alternatives --config java 
$ sudo update-alternatives --config javac

这个问题很奇怪,不知到根本原因是什么,但是用以下方法可以解决:

$ cd <eclipse dir>
$ ln -sf $JRE_HOME jre

目的是在eclipse安装目录下建立一个名称为jre的链接,将其指向java安装目录下的jre目录。

YCbCr420(YUV420)和bmp24图像格式的转换

在视频编码的时候,原始序列一般为YUV序列,可惜目前好用的工具不支持单帧图像的导出,于是我写了这样一个命令行程序。

用来进行两者的转换。

继续阅读

CUDA学习笔记(二)

编程语言的特点是要实践,实践多了才有经验。很多东西书本上讲得不慎清楚,不妨自己用代码实现一下。

作为例子,我参考了书本上的矩阵相乘的例子,这样开始写代码,然后很自然地出现了各种问题。

以下的内容供大家学习参考,有问题可以留言与我反馈。

继续阅读

JDL网站被黑客攻击

(简称联合实验室、JDL)是专门从事多媒体技术和智能人机交互技术等研究的机构,研发目标主要锁定在宽带网络多媒体系统中核心技术的研究,以及关键应用系统的开发。今日打开一看,变成全红色的了。

继续阅读

CUDA学习笔记(一)

CUDA编程中,习惯称CPU为Host,GPU为Device。编程中最开始接触的东西恐怕是并行架构,诸如Grid、Block的区别会让人一头雾水,我所看的书上所讲述的内容比较抽象,对这些概念的内容没有细讲,于是在这里作一个整理。

继续阅读

Visual Assist X支持VS2010高亮显示CUDA代码(Windows 7)

如何在VS2010下,让番茄(Visual Assist X)显示高亮的CUDA代码,本文详细介绍了设置方法。 当然主要是修改注册表啦~~

阅读全文

移植HM到Android实现播放器

我的CSDN博客中详细介绍了其相关内容:

http://blog.csdn.net/luofl1992/article/details/8736149

详细的Android.mk如何编写,之前的文章中有所介绍,这里不再重复介绍了。

本文为相关的代码。

继续阅读

Windos下的HM播放器,MFC制作

使用MFC制作播放器时,需要考虑的主要问题有两点: 1、如何让HM解码出一帧图像就停止。 2、如何显示HM解码的图像(YUV420格式)。 本文将着重介绍这两点并给出相关代码。

阅读全文

Android NDK(ARM开发)使用NEON优化

在进行Android开发时,一般考虑加速某些算法处理速率时,需要使用NDK进行开发, 为了进一步加速程序执行速率,还可以进行汇编级别的优化。 比如采用 NEON 技术进行代码的优化,以实现模块处理效率的成倍增长。

阅读全文




Host by is-Programmer.com | Power by Chito 1.3.3 beta | © 2007 LinuxGem | Design by Matthew "Agent Spork" McGee