FFmpeg-Base-1

FFmpeg 转码工具

FFmpeg 官网:http://ffmpeg.org/

简介

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

耻辱柱事件

简而言之,许多播放器使用了 FFmpeg 的代码或模块但没有遵守 LGPL/GPL 协议,FFmpeg 将许多不遵守协议的播放器发布在其官网页面上,名为 Hall Of Shame ,故称为耻辱柱事件,其页面现已停止更新。
涉及耻辱柱事件的播放器包括国内的暴风影音、QQ影音,甚至还有著名的 KMplayer 和 Potplayer。以下为网上流传的信息:

FFmpeg 耻辱柱 (Hall Of Shame):
由于 FFmpeg 是在 LGPL/GPL 协议下发布的(如果使用了其中一些使用 GPL 协议发布的模块则必须使用 GPL 协议),任何人都可以自由使用,但必须严格遵守 LGPL/GPL 协议。目前有很多播放软件都使用了 FFmpeg 的代码,但它们并没有遵守LGPL/GPL协议,没有公开任何源代码。我们应该对这种侵权行为表示耻辱。
2009 年加入 FFmpeg 的播放软件:暴风影音、QQ影音、KMP都在其列。
2009 年 2 月,韩国名软 KMPlayer 被 FFmpeg 开源项目发现使用了它们的代码和二进制文件,但是没有按照规定/惯例开放相应说明/源码。因此被人举报,进入了 FFmpeg 官网上的耻辱黑名单。
2009 年 5 月,网友 cehoyos 下载了暴风影音软件,解压之后发现其安装程序内包含了大量的开源和私有解码器:avcodec,avformat,avutil,x264,xvid,bass,wmvdmod 等,之后暴风影音被正式加入到 FFmpeg 耻辱名单。
2009 年 11 月,网友 roo_zhou 向 FFmpeg 举报,指出QQ影音的 credit 只给出了修改的 FFmpeg 源码下载,声称是 LGPL 许可证。但实际是修改过的 ffdshow,采用的是 GPL 许可证,之后 QQ影音 被正式加入到 FFmpeg 耻辱名单之列。

常用操作

1.分离视频音频流

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

2.视频解复用

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

3.视频转码

1
2
3
4
5
6
7
8
9
10
11
//-bf B帧数目控制,-g 关键帧间隔控制,-s 分辨率控制

//转码为码流原始文件
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            

//转换成标准的 264 编码
ffmpeg -i KSHXTPX2.mp4 -c:v libx264 -strict -2 KSHXTPX2_BAK.mp4  

4.视频封装

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

5.视频剪切

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

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

7.YUV 序列播放

1
ffplay -f rawvideo -video_size 1920x1080 input.yuv

8.YUV 序列转 AVI

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

9. 使用 ffmpeg 从视频中提取图片

1
ffmpeg -i "你是我的小呀小苹果儿.mp4" -r 1 -q:v 2 -f image2 image-3%d.jpeg

-i 选项用来获取输入文件,在这里是视频文件名你是我的小呀小苹果儿.mp4,
-r 选项设置每秒提取图片的帧数。我想要每秒提取一帧

10. 用 FFmpeg 从视频截取任意一帧图片

1
2
ffmpeg -i /home/pandy/视频/1.mp4 -y -f image2 -ss 1 -s 352x240 -vframes 1 /home/pandy/视频/test1.jpg
ffmpeg -i /home/pandy/视频/1.mp4 -y -f image2 -ss 1 -vframes 1 /home/pandy/视频/test1.jpg

11.解决达芬奇解析不到声音问题

1
fmpeg -i "1.mp4" -c:a aac "output.mp4"

常用参数说明

主要参数

1
2
3
-i 设定输入流
-f 设定输出格式
-ss 开始时间

视频参数

1
2
3
4
5
6
-b 设定视频流量,默认为200Kbit/s
-r 设定帧速率,默认为25
-s 设定画面的宽与高
-aspect 设定画面的比例
-vn 不处理视频
-vcodec 设定视频编解码器,未设定时则使用与输入流相同的编解码器

音频参数

1
2
3
4
-ar 设定采样率
-ac 设定声音的Channel数
-acodec 设定声音编解码器,未设定时则使用与输入流相同的编解码器
-an 不处理音频
Contents
  1. 1. FFmpeg 转码工具
    1. 1.1. 简介
    2. 1.2. 耻辱柱事件
    3. 1.3. 常用操作
    4. 1.4. 常用参数说明
|