VLC源码分析01

VLC是开源的并且相当受欢迎的媒体处理软件。我们可以认为VLC是一个完善的多媒体框架,就如同Windows上的DirectShow或Unix上的GStreamer。在必要时它可以动态的加载第三方插件进行媒体处理。因为VLC使用了大量的第三方库,自身的代码量也十分庞大,编译起来也相对比较麻烦,所以网上相关的文章也相对较少,我们将在以下的文章中对VLC做一次深入的剖析。关于VLC的编译请移步http://hongxchen.github.io/2014/07/19/vlc-compile-on-linux/

制作configure文件

(1) 写代码

hello.c
#include <stdio.h>
#include <sys/time.h>

int main(int argc, char *argv[]) {
    double sec;
    struct timeval tv;
    gettimeofday(&tv, NULL);
    sec = tv.tv_sec;
    sec += tv.tv_usec/1000000.0;
    printf ("hello word!\nsec = %e\n", sec);
    exit(0);
}

dd 制作地沟油(Fedora)安装U盘

很多人在windows下直接用一些工具直接将iso写入U盘或者硬盘,这个是U盘安装windows的方法,在fedora上是不行的,因为fedora的iso其实是分轨镜像,在一个iso镜像里有若干个分区,正确的方法是在Linux或者mac下使用dd来做,windows请下载MinGW。

命令如下:
dd if=path/fedora.iso of=/dev/sdX
注意问题
1. if指向的是iso镜像 of指向的是写入目标,不要弄反了,反了就把磁盘做成iso了
2. of的指向目标是整个磁盘,比如是/dev/sde,而不是类似/dev/sde1这样的某个磁盘分区(请在/dev中查看U盘)
3. 等待写入完成

查看dd进度,比如每10秒输出进度(以下命令执行其中一个就行了)
1. watch -n 10 pkill -USR1 ^dd$
2. watch -n 10 killall -USR1 dd
3. while killall -USR1 dd; do sleep 10; done
4. while (ps auxww |grep " dd " |grep -v grep |awk '{print $2}' |while read pid; do kill -USR1 $pid; done) ; do sleep 10; done

Emacs compile on Linux

% yum groupinstall “Development Tools”

% yum install gtk+-devel gtk2-devel libXpm-devel libpng-devel giflib-devel libpng-devel libtiff-devel libjpeg-devel ncurses-devel gpm-devel dbus-devel dbus-glib-devel dbus-python GConf2-devel pkgconfig libXft-devel

% ./configure —prefix=/usr/local —with-x-toolkit=gtk

shadowsocks配置

(1) 安装Shadowsocks和Chrome

brew install shadowsocks-libev
brew cask install google-chrome

(2) 安装Chrome插件Proxy SwitchySharp

https://chrome.google.com/webstore/detail/proxy-switchysharp/dpplabbmogkhghncfbfdeeokoefdjegm

我的Emacs配置

我的emacs配置,已经不再使用

https://github.com/hongxchen/emacs.d

现在使用prelude的配置

https://github.com/bbatsov/prelude.git

具体配置方法如下:

VLC compile on Linux

以下所有过程均参考VLC Building文档,https://wiki.videolan.org/UnixCompile/

(1) 安装linux,本人使用Xubuntu 14.04和Fedora20

(2) 安装所需要的编译器和工具链

On Fedora
% sudo yum install git libtool pkgconfig

On Debian or Ubuntu
% sudo apt-get install git libtool build-essential pkg-config autoconf

On Arch
% sudo pacman -S base-devel git pkg-config autoconf automake