﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-走火入魔-文章分类-linux</title><link>http://www.blogjava.net/loger168/category/6785.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 02 Mar 2007 02:39:03 GMT</lastBuildDate><pubDate>Fri, 02 Mar 2007 02:39:03 GMT</pubDate><ttl>60</ttl><item><title>Linux下多媒体文件处理(转载)</title><link>http://www.blogjava.net/loger168/articles/26895.html</link><dc:creator>Loger</dc:creator><author>Loger</author><pubDate>Fri, 06 Jan 2006 07:52:00 GMT</pubDate><guid>http://www.blogjava.net/loger168/articles/26895.html</guid><wfw:comment>http://www.blogjava.net/loger168/comments/26895.html</wfw:comment><comments>http://www.blogjava.net/loger168/articles/26895.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/loger168/comments/commentRss/26895.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/loger168/services/trackbacks/26895.html</trackback:ping><description><![CDATA[看过几个坛子，发现除了Linuxforum有篇相关的入门类文章再就没有什么了<br />forum最近登不上了。所以跑到CU来扔块板砖看看能不能引出达人的兴趣砸回两块玉石来。<br /><br />首先说说谈论的范围：<br />主要是mpg，avi，rm，DV的raw这些耳熟能详的。至于象一些专业性比较强的多媒体文件处理就有待高人了。<br />其次用的软件，随大流一点。这里就讲讲ffmpeg和mencoder。ffmpeg是mplayer的后端；mencoder则是mplayer的兄弟，一般二进制包安装或者默认设置的编译安装都是mplayer和mencoder两者兼而有之的。<br />也就是说，只要你机器上装好了mplayer，ffmpeg和mencoder基本上就有了。<br />除此之外还有mplex，transcode之类的因为处理能力略逊于它们，且没有仔细研究过，所以暂且等待高人来讲解吧。<br /><br />先从ffmpeg开始。<br />[url]http://ffmpeg.sourceforge.net[/url]上有说明，音视频的分离，转换，解码的完全解决方案。<br />其中最重要的就是libavcodec库。它被mplayer或者xine使用作为解码器。还有，国内比较流行的播放器影音风暴或MyMPC的后端ffdshow也是使用ffmpeg的解码库的。<br /><br />ffmpeg包括一组软件，ffmpeg用于对媒体文件进行处理，ffserver是一个http的流媒体服务器，ffplay是一个基于SDL的简单播放器。两个库文件libavcodec和libavformat。<br /><br />ffmpeg作为媒体文件处理软件，基本用法如下：<br />ffmpeg -i INPUTfile [OPTIONS] OUTPUTfile<br />输入输出文件通常就是待处理的多媒体文件了。可以是纯粹的音频文件，纯粹的视频文件，或者混合的。<br />大部分常见的格式都能够“通杀”。象常见的各种mpeg，AVI封装的DIVX和Xvid等等<br />具体的格式支持列表可以使用ffmpeg -formats查看或直接查阅文档。<br /><br />另：由于Linux把设备视为文件，因此－i选项后可以跟设备名。比如DV，视频卡，光驱或者其它的各类设备。<br />输出的内容通过Options调整。列出几个主要的选项<br />-vcodec 视频流编码方式<br />-b       视频流码率（默认只有200k，一般都需要手动设置，具体的数值视codec选择而定）<br />-r        视频流帧数（一般说来PAL制式通常用25，NTSC制式通常用29）<br />-s        视频解析度（分辨率，也要视codec和你的需要而定。通常改变某个视频流的解析度是很耗费CPU的事情。另：具体写法使用“数字x数字”的形式。中间是小写字母“x”，这个用过mplayer的应该都知道）<br />-t        处理持续时间。<br />-acodec  音频流编码方式<br />-ab         音频流码率（默认是同源文件码率，也需要视codec而定）<br />-ar          音频流采样率（大多数情况下使用44100和48000，分别对应PAL制式和NTSC制式，根据需要选择）<br /><br />还有些可能需要用到的选项如<br />-vn和-an分别是屏蔽视频流和屏蔽音频流，分别对源文件处理一次即可得到分离的音频和视频<br />-author -title分别是设置媒体文件的作者和title<br />-f选项是强制使用某种格式<br />－target type是使用预置的格式转换（可以转成dvd，vcd或svcd）<br /><br />除此之外还有些更高级的选项，如设定vbr，或设定high quality，或者设定vbr的buff和max/min码率，象一般我们自用的dvd抓轨啦，DV转vcd或dvd啦，网上下载的电影转成vcd或dvd都不一定需要用到它们。<br />具体的使用方法在man里面有介绍。简单明了。<br /><br />少许使用经验：<br />1：ffmpeg对于rm的处理能力实在不敢恭维。也许是因为我主要使用二进制包安装的缘故，对于Real媒体格式只能处理老式的RV8编码的格式。而且效果不佳。<br />2：格式转换是一件很耗费CPU资源的事情。虽说ffmpeg已经比WinAVI啦，TmpgEnc这些win下的非专业级视频处理软件做的好些了。毕竟我们可以把ffmpeg运行的时候放到后台。<br />3：ffmpeg不是万能的，虽说支持的格式很多，但是如果你不是用的最新CVS出来的版本，可能碰上某些古怪的媒体文件就要郁闷。<br />4：ffmpeg全部是命令行操作。哪位达人写个GUI前端出来就可以让不少菜鸟脱离苦海了。还有就是不能批量处理，但是这个可以用shell帮忙解决。<img src ="http://www.blogjava.net/loger168/aggbug/26895.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/loger168/" target="_blank">Loger</a> 2006-01-06 15:52 <a href="http://www.blogjava.net/loger168/articles/26895.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>