转贴--音频视频解决方案:GStreamer/ffmpeg/ffdshow/directshow/vfw

本文转自http://hi.baidu.com/gaomanyi/blog/item/f5d172598107572c2934f048.html

 

音频视频编程相关:GStreamer/ffmpeg/directshow/vfw
linux和window下几种流行的音频视频编程框架作一个总结,防止自己迷惘,免于晕头转向。

一、GStreamer

GStreamer is a library that allows the construction of graphs of media-handling components, ranging from simple Ogg/Vorbis playback to complex audio (mixing) and video (non-linear editing) processing.
GStreamer是一个开源的多媒体框架库。利用它,可以构建一系列的媒体处理模块,包括从简单的ogg播放功能到复杂的音频(混音)和视频(非线性编辑)的处理。
应用程序可以透明的利用解码和过滤技术。开发者可以使用简洁通用的接口来编写一个简单的插件来添加新的解码器或滤镜
gstreamer是linux上的(也支持其它系统) multi-media framework 多媒体应用框架。一直以来,linux上的多媒体开发都很麻烦,由于没有统一模型,所以很多东西都需要自己实现(或者code copy)。gstreamer的目的就是弥补这一缺陷。gstreamer有一个核心,核心管理许多的elements。每个element都有自己的 功能,比如:音量控制、mp3解码、从硬盘读取多媒体数据、把声音发往声卡等。用户变成所需要做的,就是把用得着的elements串成线 (pipeline)。多媒体流就可以在pipeline里流动了,一旦pipeline正常工作,就意味着音乐出来了、vedio出来 了...pipeline是在单独的线程中运行的,所以你不必担心自己的进程会阻塞。 并且pipeline线程的管理(创建、销毁、IPC等)都是gstreamer自己负责的,用户程序只需要对其发出控制信息久可以了。
在Window平台上有DirectShow体系,则在linux平台上有GStreamer框架.

二、ffmpeg

FFmpeg is a complete solution to record, convert and stream audio and video. It includes libavcodec, the leading audio/video codec library. FFmpeg is developed under Linux, but it can compiled under most operating systems, including Windows.

ffmpeg项目由以下几部分组成:
ffmpeg 视频文件转换命令行工具,也支持经过实时电视卡抓取和编码成视频文件.
ffserver 基于HTTP(RTSP正在开发中)用于实时广播的多媒体服务器.也支持时间平移
ffplay 用 SDL和FFmpeg库开发的一个简单的媒体播放器
libavcodec 一个包含了所有FFmpeg音视频编解码器的库.为了保证最优性能和高可复用性,大多数编解码器从头开发的.
libavformat 一个包含了所有的普通音视格式的解析器和产生器的库.
三、

ffdshow

ffdshow is DirectShow and VFW codec for decoding/encoding many video and audio formats, including DivX and XviD movies using libavcodec, xvid and other opensourced libraries with a rich set of postprocessing filters.

ffdshow是对一些codec(ffmpeg, xvid, and other)的封装,封装成了DirectShow和VFW的标准组件。比如对于xvid来讲,ffdshow是可以选择具体使用那个codec的, ffmpeg(libavcodec) or xvid。那么封装有没有额外的成本哪?有,但对大部分应用来讲,可以忽略不计。就如c++和c。
vfw和dshow里的CODEC分别是通过fourcc码和guid机制寻找的,可以在系统注册codec后调用,比自带编解码库形式更加统一,便于使 用。此外,vfw和dshow是代表了两个微软不同时期的音视频处理封装库,里面包含了音视频驱动,音视频处理的一整套方案。

三、DirectShow
DirectShow是微软公司在ActiveMovie和Video for Windows的基础上推出的新一代基于COM的流媒体处理的开发包,与DirectX开发包一起发布。目前,DirectX最新版本为9.0。 DirectShow为多媒体流的捕捉和回放提供了强有力的支持。运用DirectShow,我们可以很方便地从支持WDM驱动模型的采集卡上捕获数据, 并且进行相应的后期处理乃至存储到文件中。这样使在多媒体数据库管理系统(MDBMS)中多媒体数据的存取变得更加方便。DirectShow是微软公司 提供的一套在Windows平台上进行流媒体处理的开发包,与DirectX开发包一起发布。
运用DirectShow,我们可以很方便地从支持WDM驱动模型的采集卡上捕获数据,并且进行相应的后期处理乃至存储到文件中。它广泛地支持各种媒体格 式,包括Asf、Mpeg、Avi、Dv、Mp3、Wave等等,使得多媒体数据的回放变得轻而易举。另外,DirectShow还集成了DirectX 其它部分(比如DirectDraw、DirectSound)的技术,直接支持DVD的播放,视频的非线性编辑,以及与数字摄像机的数据交换。

四、vfw
Video For Windows

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: "gst-launch-1.0 playbin uri=file:///path/to/file.swf" 这句命令是使用 GStreamer 命令行工具 "gst-launch-1.0" 来播放一个 SWF 文件。 "playbin" 是 GStreamer 的一个预定义的播放器元件,它可以自动处理所有必要的播放步骤,如解码、渲染和音频输出。 "uri=file:///path/to/file.swf" 设置了播放的文件的 URI,在这里,是本地文件 "file.swf" 的路径。 ### 回答2: gst-launch-1.0是GStreamer多媒体框架提供的命令行工具,用于构建和运行多媒体处理管道。playbin是一个内置的元素,用于处理音视频文件的播放。在上述命令中,我们使用playbin元素来播放一个文件的URI,URI指向一个.swf文件。 URI是统一资源标识符的缩写,用于唯一地标识一个资源。在这里,我们使用URI指向一个.swf文件。file:///表示文件协议,意味着文件位于本地计算机上。/path/to/file.swf是.swf文件的路径。因此,该命令的目的是使用playbin元素播放指定路径下的.swf文件。 GStreamer提供了灵活强大的多媒体处理功能,并支持各种音视频文件格式和协议。通过使用playbin元素,我们可以轻松地实现音视频文件的播放功能。此命令将自动处理文件的解码、播放和显示,并根据文件的内容和编码格式进行必要的配置。 要运行上述命令,我们需要在终端中输入"gst-launch-1.0 playbin uri=file:///path/to/file.swf"并且将"/path/to/file.swf"更改为.swf文件在本地计算机上的实际路径。然后按下回车键即可启动该命令。在成功运行后,GStreamer将根据指定URI播放相应的.swf文件。 总而言之,使用gst-launch-1.0 playbin uri=file:///path/to/file.swf命令可以轻松地实现在本地计算机上播放指定.swf文件的功能,通过GStreamer提供的多媒体处理功能,我们可以处理各种音视频格式和协议。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值