原文见http://www.voxgratia.org/docs/h263_codec.html
一.介绍.
感谢一些人的努力,一个符合RFC2190规范的用在OPENH323的H.263的视频多媒体编解码器已经面世了.This is the industry standard transport (PS:不知道怎么翻译),并且,H263的编解码已经用在了软件当中.例如NetMeeting,它的可用性意味着基于终点的OPENH323可以替代大多数的基于软件的视频.
下面的人为这个编码作出了很大的贡献(PS:不太好翻译,我就简单的列出人名)
Derek Smithies,
Guilhem Tardy,
AliceStreet Ltd,
The FFMPEG Project,
Craig Southeren,
在完整的应用程序出现之前,FFMPEG库使用 Library (or Lesser) GPL 许可被用来实现H.263编码,它不允许没有没有实现GPL编码的直接的连接.这对使用MPL许可的在一些情况下只能使用二进制distrbutions(PS:什么东西,不知道)的OPENH323是不公平的.但是在LGPL的第6段的b条款中说,这样做是可以接受的.
b)通过使用库为连接使用一个适当的共享的库的配置(PS:怎么感觉那么别扭).一个适当的配置可以是这样的:
(1)在运行的时候,使用一个复制的在用户计算机上已经有的库 好过把库复制到程序的执行里面.
(2)对一个修正过的库的版本的适当的操作,如果用户已经安装了一个,只要在运行的时候实现版本的兼容.
遵守了这些条款,FFMPEG库就可以通过OPENH323连接动态和静态的库,但是在装入的时候要作为OPENH323的外部的模块.
先前我已经通过EMAIL 和Richard Stallman 确认过,这是LGPL的正确的解释
二.FFMPEG 库
通过OPENH323来使用H.263,获取一个你所用的平台上使用的库是必须的.推荐使用已经编译好在windows上或在LINUX 上的库,除非你有一些细节需要自己修改.
●LINUX :在这里下载一些头文件和已经编译的库(HTTP://WWW.VOXGRATIA.ORG/BIN/LIBAVCODEC-0.4.7-linux.bin.tar.gz)
●WINDOWS:在这里下载一些头文件和已经编译的库(HTTP://WWW.VOXGRATIA.ORG/BIN/LIBAVCODEC-0.4.7-windows.bin.tar.gz);
如果你想编译你自己的FFMPEG(可能是开发的目的) 那么你要看下面的信息
Patching ffmpeg (修改的FFMPEG)
一个库的完全修改过的版本可以在这里下载(http://www.voxgratia.org/bin/ffmpeg-o.4.7-patched.tar.gz)
要创建你自己的修改版本,要遵守下面的说明.
1.下载并且解压0.4.7的版本.
2.下载补丁(PS:不知道是不是这样翻译ffmpeg patches) (http://www.voxgratia.org/bin/ffmeg-0.4.7.patch.zip)
3.使用下面的命令行来安装补丁.
patch -p0 < ffmpeg-0.4.7.patch
UNIX的编译.
如果你想更改FFMPEG的库,那么你要遵守下面的步骤.如果你只是编译OPENH323或你的应用程序,那么请用precompiled files.(http://www.voxgratia.org/bin/libavcodec-0.4.7-linux.bin.tar.gz)
1.配置并且按下面命令行的步骤使用它
./configure –enable-shared –disable-a52 –disable-pp –disable-ffserver –disable-ffplay make
2必需的文件在libavcodec/libavcodec下面可以找到,如果不是必须需要使用Debug模式,那么使用下面的命令行,意味这可以减小文件的大小.
strip libavcodec/libavcodec.so
WINDOWS
如果你想更改FFMPEG的库,那么你要遵守下面的步骤.如果你只是编译OPENH323或你的应用程序,那么请用precompiled files.(http://www.voxgratia.org/bin/libavcodec-0.4.7-windows.bin.tar.gz)
FFMPEG使用 MingW compiler(http://www.mingw.org/download.shtml).的话只能在windows上编译.可以使用和UNIX上创建libavcodec.dll 文件同样的步骤.除了一点配置的不同,如下:
make ./configure –extra-cflags=”-mno-cygwin -mms-bitfields” –extra-ldflags=”-Wl,–add-stdcall-alias” –enable-mingw32 –enable-shared –disable-a52 –disable-pp –disable-ffserver –disable-ffplay
Guilhem Tardy在他的站点上已经增加了其他额外的一些关于在windows上编译FFMPEG的信息.(http://www.salyens.com/?page=ffcodec)
三.编译OPENH323
如果你使用的是OPENH323 1.14.1以后的版本,那么关于H.263的支持已经实现.
(现在都使用最新的了,下面是关于1.14.1的,就不翻译了)
UNIX
OPENH323 1.14.1 和以后的版本可以通过以下的命令行对H.263进行设置.
./configure –enable-rfc2190avcodec=dir
”dir”是ffmpeg/libavcodec中的任意一个文件目录,或者是包含 “avcodec.h” 和 “common.h” 的目录.如果成功,输出的配置文件应该包含以下的信息.
…
checking /home/craigs/tmp/tmp/avcodec.h usability… yes
checking /home/craigs/tmp/tmp/avcodec.h presence… yes
checking for /home/craigs/tmp/tmp/avcodec.h… yes
configure: Skipping tests for VIC H.263 and non-standard H.263
…
OPENH323就可以正常编译了.
WINDOWS
在windows上编译OPENH323的时候,配置文件会找一个叫 “avcodec_rfc2190.h” 的文件用来确定FFMPEG的补丁已经存在.这些已经包含在 prepatched ffmpeg library source(PS:不知道)或已经编译的文件当中,但是如果你要自己修补你的FFMPEG源代码的时候,你要确定文件放到了libavcodec.dll和头文件所在的目录
配置将显示出FFMPEG是和RFC 2190是相兼容的.
Located ffmpeg RFC2190 AVCODEC Library at dir(目录)
四.应用程序的更改.
这要求必须把RFCF2190 H263添加到一个应用程序中,但是正常情况下,需要遵循下面的步骤:
1 删除一些不规范的H.263和基于VIC263的编码.
2添加#include “rfc2190avcodec.h”
3增加一个叫 “H323_RFC2190_H263Capability” 的能力集
注意:在代码中 “#if H323_RFC2190_AVCODEC” 可以用在包含一些授权的代码的的环境
五 运行.
在运行的时候,OPENH323将通过PWLIBPLUGINDIR的环境配置参数在指定的目录中寻找libavcodec.so文件.如果参数定义了,那么它将会在目录中/usr/lib/pwlib (或者windows C:/PWLIB_PLUGINS ) 寻找 知道P_DEFAULT_PLUGIN_DIR 的值在配置文件中被修改
如果没有找到libavcodec.so 那么就会打印出如下的信息
Cannot find libavcodec.so as required for RFC2190 H.263 video codec.
This function may appear to be installed, but will not operate correctly.
Please put the file libavcodec.so into one of the following directories:
/usr/lib/pwlib
This list of directories can be set using the PWLIBPLUGINDIR environment
六.测试.
用下面的命令行运行ohphone
./obj_linux_x86_d/ohphone –videoreceive null -Dgsm -n -l -D261 –videotransmit -a
NetMeeting 可以用来呼叫这个终端.在测试模式下,它会自动的应答和发送信息视频.
注意:测试的时候,和视频相关的硬件并不是必须的.