ffdec.10461
所属分类:mpeg/mp3
开发工具:Visual C++
文件大小:5410KB
下载次数:61
上传日期:2008-05-20 21:56:30
上 传 者:
laopo
说明: 封装ffmpeg为一个视频/音频编码解码库,FFDec 库由一个 DLL (有可能按照授权方式不同分为两个版本) 和一个负责动态装载 DLL 的 Pascal 头文件。用户可以直接将其加入到自己的工程中进行编译。
(Ffmpeg package for a video/audio codec library, FFDec library from a DLL (in accordance with the authorization may have divided into two different versions) and a dynamically loaded DLL is responsible for the Pascal header files. Users can add to your project to compile.)
文件列表:
ffdec.gpl.dll (7352320, 2008-04-30)
ffdec.lgpl.dll (5853184, 2008-04-30)
FFDecImport.pas (5254, 2008-04-30)
FFmpeg 是一个非常强大的视频/音频编码解码库。但是很可惜,人们很难将其应用到非 C/C++ 的工程中。因此我在 2007 年将其重新封装为一个库并希望这一工作能够简化其在视频解码方面的应用――尤其是在 Delphi (或 Free Pascal) 中的应用。
FFDec 库由一个 DLL (有可能按照授权方式不同分为两个版本) 和一个负责动态装载 DLL 的 Pascal 头文件。用户可以直接将其加入到自己的工程中进行编译。
您可以访问在 SF.net 上 FFDec 的官方主页来取得最新的信息:http://sourceforge.net/projects/ffdec/
FFDec 几乎是直接对 FFmpeg 的原生 API 进行了转换封装。FFDec 的库函数在应用上也与 libAV* 函数十分接近。因此在使用 FFDec 之前,您有必要先了解一下 FFmpeg 的原理。此外抱歉的是,我近期内恐怕无法提供详细的 FFDec 的文档。不过您可以通过查看 DLL 源代码(它比你想象的要简单)以取得对 FFDec 工作原理的认知。
依照集成的 FFmpeg 库的版本授权不同,FFDec 库分为 GPL 和 LGPL 版本。两个版本都可以按照统一的接口调用,只是 LGPL 版本所支持的文件格式要少一些。
一个简单的例子:
uses FFDecImport;
//...
var
decoder : HFFDecoder;
info : AVInfo;
packet : PAVPacket;
buffer : array [0..10000000] of Byte;
size : Integer;
begin
decoder := ffOpenFile('x:\xxx.avi', @info);
packet := ffCreateAVPacket(True);
try
while ffRead(decoder, packet,
FFDEC_RAW_FRAME_TYPE_ANY) do
begin
if packet.stream_index
= info.audioStreamIndex then
begin
if ffDecode(decoder, packet,
@(buffer[0]), Length(buffer), size) then
// Play the decoded audio samples ...
end
else if packet.stream_index
= info.videoStreamIndex then
begin
if ffDecode(decoder, packet,
@(buffer[0]), Length(buffer), size) then
// Show the decoded
// picture (BGR24 format) ...
end;
end;
finally
ffFreeAVPacket(packet);
ffClose(decoder);
end;
end;
近期下载者:
相关文件:
收藏者: