`
天梯梦
  • 浏览: 13730217 次
  • 性别: Icon_minigender_2
  • 来自: 洛杉矶
社区版块
存档分类
最新评论

linux下ffmpeg的使用方法

 
阅读更多

格式转换 (将file.avi 转换成output.flv)

#ffmpeg -i file.avi output.flv

 

-i 表示输入文件


:现在有个视频video.avi,有个音频 audio.mp3,将其合并成output.avi
两个命令(file.avi 是中间文件,用完可删)

#ffmpeg -i video.avi -vcodec copy -an video2.avi  
#ffmpeg -i video2.avi -i audio.mp3 -vcodec copy -acodec copy output.avi

 

-i 表示输入文件
-vcodec copy 表示 force video codec (‘copy’ to copy stream) 这个不知怎么译 ,估计是直接copy
-acodec copy 这个说的应该是音频了 跟上面一样
-an:表示 disable audio 估计是audio no 之类的缩写,表示去掉video.avi 原有的音频

 

方法2 好像可以直接指定两个输入文件 ,

#ffmpeg -i /tmp/a.wav -i /tmp/a.avi /tmp/a.avi

 

两个文件的顺序很重要

 

从视频里提取声音(声音与视频的分离)

#ffmpeg -i 人生若只如初见.flv -vnr.mp3

 

从flv 文件中提取声音并保存为mp3格式

-vn : 表示忽略视频 估计是video no 之类的缩写

 

#ffmpeg -i 人生若只如初见.flv -an r.flv

 

只留视频不留声音
-an : 表示 忽略 声音 估计是audio no 之类的缩写

 

从视频里提取图片( )

#ffmpeg -i test.avi -y -f image2 -ss 8 -t 0.001 -s 350x240 test.jpg   
-ss

 

第8秒处截一图


压缩mp3 文件
如果你觉得mp3文件有点大,想变小一点那么可以通过-ab 选项改变音频的比特率 (bitrate)

#ffmpeg -i input.mp3 -ab 128 output.mp3

 

//这里将比特率设为128

你可以用file 命令查看一下源文件 的信息
z.mp3: Audio file with ID3 version 2.3.0, contains: MPEG ADTS, layer III, v1, 192 kbps, 44.1 kHz, Stereo
其中的192 kbps 就是这个东西

 

mp3中比特率的含义是:在压缩音频文件至mp3时,由压缩软件所确定数码文件在播放时每秒传 送给播放器大小,其单位是:千位/秒;英文的含义是:kbps – = kilobits per second。现在mp3文件的最高数位率是320 kbps。这样的文件体积很大,每分钟的音乐超过两兆字节。如果采用可变比特率(VBR)编码来生成mp3文件,获得与320 kbps相当音质,文件的体积会缩小25~50%。请注意:播放时间相同,而歌曲不同,所获的压缩mp3文件的一般不相同,这是因为VBR编码所生成的 mp3文件的大小不仅仅取决于播放时间的长度,还取决于源音频文件的其它因素。

 

录音(要有可用的麦克风,并且如果用alsa 的话,好像得安alsa-oss,重启)

#ffmpeg -f oss -i /dev/dsp out.avi
#ffmpeg -f alsa -ac 2 -i hw:0,0 ut.avi
#ffmpeg -f alsa -ac 2 -i pulse

 

oss 是linux 下的声音相关的东西,与alsa 一样,不过oss 是商业的, 而/dev/dsp 是oss 用到的麦克的设备吧,可以这样理解

 

屏幕录像

#ffmpeg -f x11grab -s xga -r 10 -i :0.0+0+0 wheer.avi 
#ffmpeg -f x11grab -s 320x240  -r 10 -i :0.0+100+200 wheer.avi

 

:0:0 表示屏幕(个人理解,因为系统变量$DISPLAY值就是:0.0) 而100,表示距左端100象素,200表示距上端200
-s 设置窗口大小
-r 10 好像是设置频率,不懂

#ffmpeg -f x11grab -s xga-qscale 5-r 10 -i :0.0+0+0 wheer.avi

 

-qscale 8 设定画面质量,值越小越好

 

屏幕录像,同时录音

#ffmpeg -f oss -i /dev/dsp-f x11grab -r 30 -s 1024x768 -i :0.0  output.mkv
#ffmpeg -ac 2 -f oss -i /dev/dsp -f x11grab -r 30 -s 1024x768 -i :0.0 -acodec pcm_s16le -vcodec libx264 -vpre lossless_ultrafast -threads 0 output.mkv

 

看到这,你会发现这个命令有多强大,
如果我屏幕上打开了一个窗口,我只想录这个窗口的内容,如何确定这个窗口的坐标位置呢
可以用另外一个命令
xwininfo 输入这个命令后,用鼠标点选目标窗口,
会出现目标窗口的坐标,宽高等一系列信息
Absolute upper-left X: 276
Absolute upper-left Y: 57
Relative upper-left X: 2
Relative upper-left Y: 23
Width: 742
Height: 499
Depth: 24
Visual: 0×21
Visual Class: TrueColor
Border width: 0
Class: InputOutput
Colormap: 0×20 (installed)
Bit Gravity State: NorthWestGravity
Window Gravity State: NorthWestGravity
Backing Store State: NotUseful
Save Under State: no
Map State: IsViewable
Override Redirect State: no
Corners: +276+57 -262+57 -262-244 +276-244
-geometry 80×24+274+34 看到这一行了没 ()

比如根据上面的信息

#ffmpeg -f oss -i /dev/dsp -f x11grab -r 30  -s 1280x752 -i :0.0+0+23  output.avi

 

Another thing you can change is the video frame rate (FPS). In the example above we used -r 30 which means capture at 30 FPS. You can change this value to whatever frame rate you want.
这个 -r 30 应该是每秒钟取样几次,估计是一秒截三十次屏,

切头去尾

#ffmpeg -ss 00:00:10 -t 00:01:22 -i 五月天-突然好想你.mp3 output.mp3

 

只要从第10秒开始截取,共截取1:22时长的内容,视频文件的连接,如两个flv 文件 连接成一块
好像必须先将文件 转成mpg ,dv 等格式的文件后才能进行连接
连接复数的AVI影片档之范例(在此范例中须一度暂时将AVI档转换成MPEG-1档(MPEG-1, MPEG-2 PS, DV格式亦可连接))

 

#ffmpeg -i input1.avi -sameq inputfile_01.mpg -r 20
#ffmpeg -i input2.avi -sameq inputfile_02.mpg -r 20
#cat inputfile_01.mpg inputfile_02.mpg > inputfile_all.mpg
#ffmpeg -i inputfile_all.mpg -sameq outputfile.avi

 

上面将input1.avi input2.avi 合并成outputfile.avi
-sameq 表示 相同的质量(可能指的是画面,不太清楚)
-r 指频率
=====================================================================

下面是wiki 上给的几个例子

 

参数

FFmpeg可使用众多参数,参数内容会根据ffmpeg版本而有差异,使用前建议先参考参数及编解码器的叙述。此外,参数明细可用 ffmpeg -h 显示;编解码器名称等明细可用 ffmpeg -formats 显示。

下列为较常使用的参数。

 

主要参数

-i 设定输入档名。
-f 设定输出格式。
-y 若输出档案已存在时则覆盖档案。
-fs 超过指定的档案大小时则结束转换。
-ss 从指定时间开始转换。
-title 设定标题。
-timestamp 设定时间戳。
-vsync 增减Frame使影音同步。

 

影像参数

-b 设定影像流量,默认为200Kbit/秒。( 单位请参照下方注意事项 )
-r 设定FrameRate值,默认为25。
-s 设定画面的宽与高。
-aspect 设定画面的比例。
-vn 不处理影像,于仅针对声音做处理时使用。
-vcodec 设定影像影像编解码器,未设定时则使用与输入档案相同之编解码器。

 

声音参数

-ab 设定每Channel (最近的SVN 版为所有Channel的总合)的流量。( 单位 请参照下方注意事项 )
-ar 设定采样率。
-ac 设定声音的Channel数。
-acodec 设定声音编解码器,未设定时与影像相同,使用与输入档案相同之编解码器。
-an 不处理声音,于仅针对影像做处理时使用。
-vol 设定音量大小,256为标准音量。(要设定成两倍音量时则输入512,依此类推。)

 

注意事项

以-b及ab参数设定流量时,根据使用的ffmpeg版本,须注意单位会有kbits/sec与bits/sec的不同。(可用ffmpeg -h显示说明来确认单位。)

例如,单位为bits/sec的情况时,欲指定流量64kbps时需输入‘ -ab 64k ’;单位为kbits/sec的情况时则需输入‘ -ab 64 ’。

以-acodec及-vcodec所指定的编解码器名称,会根据使用的ffmpeg版本而有所不同。例如使用AAC编解码器时,会有输入aac 与 libfaac的情况。此外,编解码器有分为仅供解码时使用与仅供编码时使用,因此一定要利用ffmpeg -formats 确 认输入的编解码器是否能运作。

 

范例

将MPEG-1影片转换成MPEG-4格式之范例

#ffmpeg -i inputfile.mpg -f mp4 -acodec libfaac -vcodec mpeg4 -b 256k -ab 64k outputfile.mp4

 

将MP3声音转换成MPEG-4格式之范例

#ffmpeg -i inputfile.mp3 -f mp4 -acodec libaac -vn -ab 64k outputfile.mp4

 

将DVD的VOB档转换成VideoCD格式的MPEG-1档之范例

#ffmpeg -i inputfile.vob -f mpeg -acodec mp2 -vcodec mpeg1video -s 352x240 -b 1152k -ab 128k outputfile.mpg

 

将AVI影片转换成H.264格式的M4V档之范例

#ffmpeg -i inputfile.avi -f mp4 -acodec libfaac -vcodec libx264 -b 512k -ab 320k outputfile.m4v

 

将任何影片转换成东芝REGZA可辨识的MPEG2格式之范例

#ffmpeg -i inputfile -target ntsc-svcd -ab 128k -aspect 4:3 -s 720x480 outputfile.mpg

 

连接复数的AVI影片档之范例(在此范例中须一度暂时将AVI档转换成MPEG-1档(MPEG-1, MPEG-2 PSDV格式亦可连接)、

#ffmpeg -i input1.avi -sameq inputfile_01.mpg
#ffmpeg -i input2.avi -sameq inputfile_02.mpg
#cat inputfile_01.mpg inputfile_02.mpg > inputfile_all.mpg
#ffmpeg -i inputfile_all.mpg -sameq outputfile.avi

=============================================================================

http://ffmpeg.org/ffmpeg-doc.html

http://ubuntuforums.org/showthread.php?t=1392026

 

同时搞明白的一些问题
在alsa 体系中声卡(也可能是麦克风,)叫hw:0,0 而在oss 体系中叫/dev/dsp (用词可能不太专业) Linux在安装了声卡后,会有一些设备文件生成。


采集数字样本的/dev/dsp文件,针对混音器的/dev/mixer文件,用于音序器的/dev/sequencer,/dev/audio文件一个 基于兼容性考虑的声音设备文件。只要向/dev/audio中输入wav文件就能发出声音。而对/dev/dsp文件读取就能得到WAV文件格式的声音文 件。

 

原文:http://www.tuicool.com/articles/FNVJ3a

 

 用ffmpeg将rmvb压制成mp4

 

1、查看rmvb属性

转换之前先查看一下文件属性,将分辨率等信息看一下,如果分辨率超过960*640就需要调整。顺便看一下码率,压制成x264的时候参考一下。

ffmpeg -i 文件名

2、压制成mp4

1.pass1编码

ffmpeg -i 01.rmvb -an -vcodec libx264 -b 560k -pass 1 -f mp4 -y NUL 
-an : 不编码音频
-vcodec : 设置视频的编码,我这里使用的是x264
-b : 这个是码率
-f : 强制使用格式
-y : 自动输y确认
NUL : 因为是pass1 所以不需要输出文件,直接用NUL

2.pass2编码

ffmpeg -i 01.rmvb -acodec copy -vcodec libx264 -b 560k -pass 2 -f mp4 01.mp4 

因为现在很多rmvb的音频部分都是aac编码的,所以可以直接用-acodec copy复制音频部份

3、针对某些文件的参数调整

有些rmvb或着mkv之类的分辨率比较高,所以传到itouch需要调整一下。在ffmpeg里面可以用-s参数:

ffmpeg -i 01.rmvb -acodec copy -vcodec libx264 -b 560k -s 960x640 -f mp4 01.mp4

960x640需要自己计算一下,按比例进行调整

按时间截取:

ffmpeg -i 01.rmvb -acodec copy -vcodec libx264 -b 560k -ss 00:00:00 -t 00:01:00 -f mp4 01.mp4

设置B-frame对动画片有些好处,2pass的时候不是很明显,1pass的比较明显:

ffmpeg -i 01.rmvb -acodec copy -vcodec libx264 -b 560k -bf 6 -f mp4 01.mp4

 

原文:http://blog.plotcup.com/a/41

分享到:
评论

相关推荐

    Linux下使用ffmpeg录屏代码

    让我们深入了解一下如何在Linux环境下使用`ffmpeg`进行录屏以及C++与`ffmpeg`的结合。 首先,`ffmpeg`是一个跨平台的解决方案,支持多种格式的音频和视频编码解码。它的功能包括采集、转换、剪辑、流媒体等。在录屏...

    Linux下FFmpeg的安装包

    安装完成后,FFmpeg的命令行工具就可以在全局路径下使用了。你可以通过`ffmpeg -version`来检查安装是否成功。 需要注意的是,由于FFmpeg的版本不断更新,新版本可能会包含更多的特性和支持。因此,建议定期更新...

    linux上使用ffmpeg 实现视频截图

    在这个场景下,我们主要关注如何通过Java程序与FFmpeg交互,实现在特定时间点获取视频的静态图像。 首先,我们需要在Linux系统上安装FFmpeg。通常可以通过添加官方仓库并执行apt-get或yum命令来安装。例如,在...

    linux下安装FFmpeg命令,亲测可用

    以下是对"linux下安装FFmpeg命令,亲测可用"这一主题的详细解释。 1. **FFmpeg简介** FFmpeg是跨平台的音频和视频处理工具,包含了一系列的命令行工具,如ffmpeg、ffplay、ffprobe等,用于编码、解码、转码、合并、...

    Linux下编译ffmpeg的wasm库

    在Linux环境下编译FFmpeg的WebAssembly库是一个技术性较强的过程,主要涉及到FFmpeg的源码编译和WebAssembly的交叉编译。FFmpeg是一个强大的开源多媒体处理框架,广泛用于音视频的编码、解码、转码等任务。而...

    Linux下FFMpeg的简单使用

    在Linux平台下使用FFmpeg和SDL2库实现一个简单的视频播放器涉及到多个知识点,包括Linux下的软件开发流程、FFmpeg库的使用、SDL2库的使用以及视频数据的处理。 首先,我们需要了解Linux下的软件开发环境。Linux作为...

    linux下编译ffmpeg

    FFMpeg 在 Linux 下的编译和使用 FFMpeg 是一个功能强大且广泛使用的开源多媒体处理框架,它可以对多种格式的音频和视频文件进行处理,包括编码、解码、转换、流媒体等。今天,我们将介绍如何在 Linux 操作系统下...

    linux下ffmpeg获取视频流

    在Linux环境下,FFmpeg是一个强大的命令行工具,用于处理各种多媒体文件,包括音频、视频以及图像。它提供了从录制、转换到流式传输的一站式解决方案。本篇将深入探讨如何使用FFmpeg在Linux系统中获取视频流。 一、...

    linux 下ffmpeg安装包

    在Linux环境下,通常有多种方法安装FFmpeg: 1. 使用包管理器:对于Ubuntu或Debian用户,可以通过运行以下命令来安装: ``` sudo apt-get update sudo apt-get install ffmpeg ``` 对于Fedora或CentOS用户,可以...

    Linux下ffmpeg的配置资源压缩包

    在Linux环境下,FFmpeg的配置与安装通常涉及到多个步骤,包括获取依赖库、编译源代码等。这个资源压缩包就是为了简化这个过程,提供了一站式的解决方案。 一、FFmpeg简介 FFmpeg是一个跨平台的项目,支持多种操作...

    LINUX下FFMPEG解码h264格式到YUV

    总的来说,这个项目提供了一个在Linux环境下使用FFmpeg解码h264到YUV的基础框架,对于学习FFmpeg的API和视频处理技术有着很好的实践价值。通过深入理解和扩展这个项目,开发者可以进一步掌握多媒体处理的技巧,从而...

    Linux下使用FFmpeg录屏代码.rar

    本资源"Linux下使用FFmpeg录屏代码.rar"包含了一个利用FFmpeg在Linux系统上进行屏幕录制的示例项目。通过解压文件,我们可以看到一个名为"screen-recorder-ffmpeg-cpp-master"的文件夹,这很可能是用C++编写的FFmpeg...

    linux下ffmpeg和SDL可以播放视频文件,也可以直接拉流播放

    总的来说,FFmpeg和SDL的结合使用为Linux平台上的多媒体处理提供了极大的灵活性和便利性。无论是播放本地文件还是拉取网络流,这两个工具都能提供高效且可定制化的解决方案。对于开发者来说,熟悉它们的使用对于...

    linux版FFmpeg-4.1(带运行环境,可直接运行)

    5. **使用说明.txt**:这份文件很可能是提供关于如何在Linux环境下运行和使用这个预编译版本的FFmpeg的指南,可能包含一些基本的命令示例和注意事项。 在实际使用中,用户可以利用FFmpeg的强大功能处理各种多媒体...

    Linux下安装ffmpeg库

    ### Linux下安装ffmpeg库 #### 知识点一:FFmpeg简介及用途 - **FFmpeg**是一款强大的跨平台音视频处理工具集,能够进行音视频的编码、解码、转码、复用、解复用、流媒体传输、滤镜处理等功能。 - 它包含了一系列...

    linux ffmpeg 完整安装包

    在 Linux 环境下,FFmpeg 的安装涉及多个步骤,因为它是由一系列库和插件组成的。以下是安装 FFmpeg 4.0.2 版本以及相关插件的详细过程,以及这些操作所涉及的知识点。 1. **获取源码包**: 首先,你需要从 FFmpeg...

    linux(ubuntu)下ffmpeg + alsa 的音频播放器

    因为想弄个基于ffmpeg 和 alsa 的音频播放器,但是网上找了很久都没有这方面的,有也是有些问题的,要不是不能播,就是播出来的声音不对,总之很多限制。所以自己网上找资料,东拼西凑。终于把这个播放器给弄出来了...

    linux ffmpeg 编译好的lib库和头文件,自己实用

    在Linux环境下,使用FFmpeg编译好的lib库和头文件,你可以实现以下功能: 1. **H264编码与解码**:H264是一种高效能的视频编码标准,广泛应用于高清视频传输和存储。通过FFmpeg的libavcodec库,你可以实现对H264...

Global site tag (gtag.js) - Google Analytics