zoukankan      html  css  js  c++  java
  • ffmpeg的使用

    先从ffmpeg开始。
    http://ffmpeg.sourceforge.net上有说明,音视频的分离,转换,解码的完全解决方案。
    其中最重要的就是libavcodec库。它被mplayer或者xine使用作为解码器。还有,国内比较流行的播放器影音风暴或MyMPC的后端ffdshow也是使用ffmpeg的解码库的。

    ffmpeg包括一组软件,ffmpeg用于对媒体文件进行处理,ffserver是一个http的流媒体服务器,ffplay是一个基于SDL的简单播放器。两个库文件libavcodec和libavformat。

    ffmpeg作为媒体文件处理软件,基本用法如下:
    ffmpeg -i INPUTfile [OPTIONS] OUTPUTfile
    输入输出文件通常就是待处理的多媒体文件了。可以是纯粹的音频文件,纯粹的视频文件,或者混合的。
    大部分常见的格式都能够“通杀”。象常见的各种mpeg,AVI封装的DIVX和Xvid等等
    具体的格式支持列表可以使用ffmpeg -formats查看或直接查阅文档。

    另:由于Linux把设备视为文件,因此-i选项后可以跟设备名。比如DV,视频卡,光驱或者其它的各类设备。
    输出的内容通过Options调整。列出几个主要的选项
    -vcodec 视频流编码方式
    -b       视频流码率(默认只有200k,一般都需要手动设置,具体的数值视codec选择而定)
    -r        视频流帧数(一般说来PAL制式通常用25,NTSC制式通常用29)
    -s        视频解析度(分辨率,也要视codec和你的需要而定。通常改变某个视频流的解析度是很耗费CPU的事情。另:具体写法使用“数字x数字”的形式。中间是小写字母“x”,这个用过mplayer的应该都知道)
    -t        处理持续时间。
    -acodec  音频流编码方式
    -ab         音频流码率(默认是同源文件码率,也需要视codec而定)
    -ar          音频流采样率(大多数情况下使用44100和48000,分别对应PAL制式和NTSC制式,根据需要选择)

    还有些可能需要用到的选项如
    -vn和-an分别是屏蔽视频流和屏蔽音频流,分别对源文件处理一次即可得到分离的音频和视频
    -author -title分别是设置媒体文件的作者和title
    -f选项是强制使用某种格式
    -target type是使用预置的格式转换(可以转成dvd,vcd或svcd)

    除此之外还有些更高级的选项,如设定vbr,或设定high quality,或者设定vbr的buff和max/min码率,象一般我们自用的dvd抓轨啦,DV转vcd或dvd啦,网上下载的电影转成vcd或dvd都不一定需要用到它们。
    具体的使用方法在man里面有介绍。简单明了。

    少许使用经验:
    1:ffmpeg对于rm的处理能力实在不敢恭维。也许是因为我主要使用二进制包安装的缘故,对于Real媒体格式只能处理老式的RV8编码的格式。而且效果不佳。
    2:格式转换是一件很耗费CPU资源的事情。虽说ffmpeg已经比WinAVI啦,TmpgEnc这些win下的非专业级视频处理软件做的好些了。毕竟我们可以把ffmpeg运行的时候放到后台。
    3:ffmpeg不是万能的,虽说支持的格式很多,但是如果你不是用的最新CVS出来的版本,可能碰上某些古怪的媒体文件就要郁闷。
    4:ffmpeg全部是命令行操作。哪位达人写个GUI前端出来就可以让不少菜鸟脱离苦海了。还有就是不能批量处理,但是这个可以用shell帮忙解决。
  • 相关阅读:
    Java的特性和优势
    MyBatis
    SpringBoot简介
    Liunx
    MySql简介与入门
    Volatile
    MySQL简介
    Redis
    Spring IoC
    什么是springboot
  • 原文地址:https://www.cnblogs.com/top5/p/1682774.html
Copyright © 2011-2022 走看看