使用ffmpeg avconv处理音频、视频


#Linux#


2014-07-12

FFmpeg是一个开源免费跨平台的视频和音频流方案,属于自由软件。

安装:

$ sudo apt-get install ffmpeg

版本:

$ ffmpeg -version
ffmpeg version 0.8.12-6:0.8.12-0ubuntu0.13.10.1, Copyright (c) 2000-2014 the Libav developers
  built on Jun 10 2014 15:33:35 with gcc 4.8.1
*** THIS PROGRAM IS DEPRECATED ***
This program is only provided for compatibility and will be removed in a future release. Please use avconv instead.
ffmpeg 0.8.12-6:0.8.12-0ubuntu0.13.10.1
libavutil    51. 22. 2 / 51. 22. 2
libavcodec   53. 35. 0 / 53. 35. 0
libavformat  53. 21. 1 / 53. 21. 1
libavdevice  53.  2. 0 / 53.  2. 0
libavfilter   2. 15. 0 /  2. 15. 0
libswscale    2.  1. 0 /  2.  1. 0
libpostproc  52.  0. 0 / 52.  0. 0

可见,已经不推荐使用ffmpeg了,可以使用avconv命令替换,avconv和ffmpeg的使用基本一致。

也可以使用下面的命令安装avconv:

$ sudo apt-get install libav-tools

avconv是其中的一个工具。本文使用avconv命令。

现有视频video.mp4,使用avconv对其进行操作。

获取视频信息

$ avconv -i video.mp4 
avconv version 0.8.12-6:0.8.12-0ubuntu0.13.10.1, Copyright (c) 2000-2014 the Libav developers
  built on Jun 10 2014 15:33:35 with gcc 4.8.1
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'video.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 0
    compatible_brands: isom3gp4
    creation_time   : 2014-06-24 06:46:43
  Duration: 00:00:10.16, start: 0.000000, bitrate: 194 kb/s
    Stream #0.0(eng): Video: h264 (High), yuv420p, 640x480, 187 kb/s, PAR 65536:65536 DAR 4:3, 29.32 fps, 90k tbr, 90k tbn, 180k tbc
    Metadata:
      creation_time   : 2014-06-24 06:46:43
At least one output file must be specified

-i参数说明如下:

-i filename (input)
   input file name

将mp4格式转换为flv格式

$ avconv -i video.mp4 video.flv

也可以使用下面的形式:

$ avconv -i video.mp4 -f flv video.flv

-f参数说明如下:

-f fmt (input/output)
   Force input or output file format. The format is normally
   autodetected for input files and guessed from file extension for
   output files, so this option is not needed in most cases.

查看一下video.flv的格式:

$ file video.flv 
video.flv: Macromedia Flash Video

将视频中每帧图片提取出来

$ avconv -i video.mp4 image%3d.jpg

生成的图片名称依次是:image001.jpg、image002.jpg、image003.jpg、image004.jpg……

将上面分解出的图片合并为avi视频

$ avconv -i image%3d.jpg video.avi

将视频中的音频提取出来

需要先使用apt-get安装libavcodec-extra-53

$ sudo apt-get install libavcodec-extra-53

提取音频:

$ avconv -i video.mp4 sound.mp3

录制屏幕

如果屏幕分辨率是1366*768,在linux下可以使用下面的命令录制整个屏幕:

$ avconv -f x11grab -video_size 1366*768 -framerate 25 -i :0.0 ~/Desktop/out.mp4

下面这种方式录制的视频更清晰:

$ avconv -f x11grab -r 25 -s 1280x720 -i :0.0+0,0 -vcodec libx264 -pre lossless_ultrafast -threads 0 out.mp4

按ctrl+c键停止录制。

资料

跨平台开源总音视频方案:ffmpeg(新版已名为libav)

Libav Documentation

FFmpeg Documentation

Capture/Desktop


( 本文完 )