在linux系统中,使用到的有关流媒体音视频流进行处理的ffmpeg 命令的常用的命令己命令对应的参数如下:记录一下:

1.分离视频音频流

ffmpeg -i input_file -vcodec copy -an output_file_video  //分离视频流
ffmpeg -i input_file -acodec copy -vn output_file_audio  //分离音频流

2.视频解复用

ffmpeg –i test.mp4 –vcodec copy –an –f m4v test.264
ffmpeg –i test.avi –vcodec copy –an –f m4v test.

3.视频转码

ffmpeg –i test.mp4 –vcodec h264 –s 352*278 –an –f m4v test.264              //转码为码流原始文件
ffmpeg –i test.mp4 –vcodec h264 –bf 0 –g 25 –s 352*278 –an –f m4v test.264 //转码为码流原始文件
ffmpeg –i test.avi -vcodec mpeg4 –vtag xvid –qsame test_xvid.avi //转码为封装文件
//-bf B帧数目控制,-g 关键帧间隔控制,-s 分辨率控制

4.视频封装

ffmpeg –i video_file –i audio_file –vcodec copy –acodec copy output_file

5.视频剪切

ffmpeg –i test.avi –r 1 –f image2 image-%3d.jpeg        //提取图片
ffmpeg -ss 0:1:30 -t 0:0:20 -i input.avi -vcodec copy -acodec copy output.avi //剪切视频
//-r 提取图像的频率,-ss 开始时间,-t 持续时间

6.视频录制

ffmpeg –i rtsp://192.168.3.205:5555/test –vcodec copy out.avi

7.YUV序列播放

ffplay -f rawvideo -video_size 1920x1080 input.yuv

8.YUV序列转AVI

ffmpeg –s w*h –pix_fmt yuv420p –i input.yuv –vcodec mpeg4 output.avi

9.视频合并

ffmpeg -i concat:"intermediate1.mpg|intermediate2.mpg" -c copy intermediate_all.mpg

常用参数说明:

主要参数:
-i 设定输入流
-f 设定输出格式
-ss 开始时间
视频参数:
-b 设定视频流量,默认为200Kbit/s
-r 设定帧速率,默认为25
-s 设定画面的宽与高
-aspect 设定画面的比例
-vn 不处理视频
-vcodec 设定视频编解码器,未设定时则使用与输入流相同的编解码器
音频参数:
-ar 设定采样率
-ac 设定声音的Channel数
-acodec 设定声音编解码器,未设定时则使用与输入流相同的编解码器
-an 不处理音频

最后对ffmpeg做一个简单的介绍:
FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视 频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都 是从头开发的。-------摘自百度百科。

用通俗一点的描述就是,这个玩意是个程序,也是由某些大神开发出来的用于处理音视频流的一个程序,开始是在linux系统上开发的,所以在linux系统上面使用很方便,但是在windows 和mac上也实现了,这个东西还是很强大的,因为这个东西主要使用在linux系统上,下面说一下在linux系统上如何使用这个进行对音视频流的处理:

1.ffmpeg下载地址: http://www.ffmpeg.org/download.html

2.解压

 
1
$ tar zvfj ffmpeg.tar.bz2

这里作者假设已经重命名为ffmpeg.tar.bz2

3.解压后进入ffmpeg的文件夹,查看readme, 可以看到和正常的编译安装步骤无异configure && make && make install

 
1
$ cd folder_of_ffmpeg
 
1
$ ./configure --enable-shared --prefix=/usr/local/ffmpeg

编 译FFMPEG时,出现了 ffmpeg yasm not found, use –disable-yasm for a crippled build,是因为 FFMPEG为了提高编译速度,使用了汇编指令,如果系统中没有yasm指令的话,就会出现上述的问题。
解决办法是:
A 如果是Windows系统, 从网上下载一个 yasm.exe 并安装在mingw/bin下面,重新编译,就不会出现该错误了;
B 如果是Linux系统,则更简单,直接在终端输入 sudo apt-get install yasm (centos 输入sudo yum install yasm),安装好后,重新编译就 OK了

 
1
$ sudo apt-get install yasm
 
1
 $ ./configure --enable-shared --prefix=/usr/local/ffmpeg

这一次,编译成功, 出现一大串字符, 大致如下:

4.安装

 
1
$ make
 
1
$ make install

可见直接make install会出现权限问题, 因为之前编译时指定的文件夹是/usr/local/ffmpeg, 所以需要sudo权限

 
1
$ sudo make install

ok,安装成功, 在命令行下试一下命令使用

 
1
$ /usr/local/ffmpeg/bin/ffmpeg

这 时候出现ffmpeg: error while loading shared libraries: libavdevice.so.56: cannot open shared object file: No such file or directory的错误.(部分高版本缺少的是libavdevice.so.54)

我们尝试在系统中找到这个库:

 
1
 $ sudo find / -name "libavdevice.so.56"

由结果可见, 在我们编译后的/usr/local/ffmpeg/lib/中存在libavdevice.so.56,  我们需要将这个库链接写到/etc/ld.so.conf中然后执行sudo ldconfig, 操作如下:

 
1
$ sudo echo '/usr/local/ffmpeg/lib/libavdevice.so.56' >> /etc/ld.so.conf
 
1
$ sudo ldconfig

现在, 在linux上就安装成功了这个工具,就可以直接使用了。具体你安装到那里没有明确的规定,但是你一定要注意这个工具的权限问题。

最新文章

  1. UWP开源项目 LLQNotifier 页面间通信利器(移植EventBus)
  2. Codeforce 493c
  3. MergeSort(归并排序)算法Java实现
  4. Android 完美退出 App (Exit)
  5. node安装 教程 + git初步
  6. 牛逼的bootcss之buttons
  7. 详细分析 javascript 的内存分配
  8. Java学习系列(一)Java的运行机制、JDK的安装配置及常用命令详解
  9. Java NIO实战之聊天室
  10. CreateMutex 创建一个有名字的互斥量的时候hMutex=CreateMutex(NULL,TRUE,"tickets")报错
  11. Ubuntu切换默认语言
  12. jQuery开发自定义插件 $.extend()与$.fn.extend()
  13. android新建项目
  14. <canvas>中isPointInPath()方法在不同绘制内容中的效果
  15. 1228.Poor Pigs 可怜的猪
  16. 一行代码搞定 R 语言模型输出!(使用 stargazer 包)
  17. 【IT笔试面试题整理】字符串的组合
  18. 转【Python】同时向控制台和文件输出日志logging
  19. ASP.NET MVC中全局异常处理
  20. Unity3D手游开发日记(4) - 适合移动平台的热浪扭曲

热门文章

  1. PageHelper
  2. Python中属性
  3. vs2013工程下的各个文件和文件夹的作用
  4. c++动态绑定的技术实现
  5. lodash (js实用工具库)
  6. Swift 学习笔记 (属性)
  7. 关于SAP S4 HANA 的13个问题
  8. Java for LeetCode 088 Merge Sorted Array
  9. LeetCode:跳跃游戏【55】
  10. B. Two Buttons