1.基本信息查询命令

ffmpeg 查询参数

示例

1
ffmpeg -version    //查看版本

2.录制命令

  1. 先查看设备支持情况

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    ffmpeg -devices    //查看设备支持情况
    ===========================================
    Devices:
    D. = Demuxing supported
    .E = Muxing supported
    --
    D  avfoundation    AVFoundation input device
    D  lavfi           Libavfilter virtual input device
    E sdl,sdl2        SDL2 output device
  2. 查看输入源

    1
    2
    3
    4
    5
    6
    7
    
    ffmpeg -f avfoundation -list_devices true -i "" //查看输入源
    ==========================================================
    AVFoundation video devices:
    [0] FaceTime HD Camera
    [1] Capture screen 0
    AVFoundation audio devices:
    [0] Built-in Microphone

    从上边输出信息知道,视频的设备分为 Camera和桌面;音频输入为麦克风

  3. 录制

    1
    2
    3
    4
    5
    
    ffmpeg -f avfoundation  -i 1   -r 30 ~/Desktop/demo.yuv
    -------------------------------------------------------------
    -f :指定设备来源            
    -i :指定设备中的输入端来源  
    -r :指定帧率             
  4. 播放

    1
    2
    3
    4
    5
    
    ffplay -video_size 3360x2100 -pix_fmt uyvy422 ~/Desktop/demo.yuv
    ----------------------------------------------------------------
    -video_size :播放yuv需要指定视频大小
    -pix_fmt    :指定存储格式
    (以上两者在录制时都会有信息输出,可以直接复用)

3. 分解与复用

1
2
3
4
5
6
7
ffmpeg -i ~/Desktop/demo.mp4 -vcodec copy -acodec copy ~/Desktop/out.flv
------------------------------------------------------------------------
-i      :输入文件
-vcodec :视频编码方式  填写copy代表保持不变;
                     使用-vn表示不要视频
-acodec :音频编码方式  填写copy代表保持不变;
                     使用-an表示不要音频

只要音频不要视频,保留格式为音频格式 AAC

1
ffmpeg -i ~/Desktop/demo.mp4 -vn -acodec copy ~/Desktop/out.acc

只要视频不要音频,保留格式为视频格式 h264

1
ffmpeg -i ~/Desktop/demo.mp4 -vcodec copy -an ~/Desktop/out.h264

4. 处理原始数据

提取原始音频数据

1
2
3
4
5
6
7
ffmpeg -i  ~/Desktop/ffmpeg_test.mp4 -vn -ar 44100 -ac 2 -f s16le ~/Desktop/out.pcm
-----------------------------------------------------------------------------------
-i     :输入文件
-vn    :去掉视频
-ar    :采样率
-ac    :声道数
-f     :存储数据格式   s16le   --->   16位小端存储

播放

1
ffplay -ar 44100 -ac 2 -f s16le ~/Desktop/out.pcm

5.滤镜命令

改变视频大小

1
2
3
4
5
6
7
ffmpeg -i ~/Desktop/ffmpeg_test.mp4 -vf crop=in_w-200:in_h-100 -c:v libx264 -c:a copy ~/Desktop/out_crop.mp4
------------------------------------------------------------------------------------------------------------
-i     :输入文件
-vf    :视频滤镜
crop   :裁剪
-c:v   :视频编码
-c:a   :音频编码

6.裁剪与合并

裁剪

1
2
3
4
5
6
ffmpeg -i ~/Desktop/ffmpeg_test.mp4 -ss 00:00:44 -to 00:00:50  ~/Desktop/fenpian.ts
------------------------------------------------------------------------------------

-ss   :表示从某个位置开始截取
-to   :表示到某个位置结束
-t    :表示从-ss 的位置开始持续多少秒结束,这个和 -to参数分开使用

拼接

1
2
3
4
5
6
7
8
ffmpeg -f concat -i ~/Desktop/input.txt ~/Desktop/concat.mp4
---------------------------------------------------------
-f    :使用功能 这里concat表示拼接
-i    :表示拼接清单

      =====> input.txt内容如下
              file 'fenpian1.ts'
              file 'fenpian2.ts'       

7.图片与视频互转

视频转图片

1
2
3
4
ffmpeg -i ./ffmpeg_test_two.mp4 -r 1 -f image2 ./ffmpeg_img/image-%3d.jpeg
--------------------------------------------------------------------------
-r    :帧数间隔,用于指定几帧取一副图
-f    :指定图片格式  

图片转视频

1
ffmpeg -i ./ffmpeg_img/image-%3d.jpeg ./img_mp4.mp4

8.直播

推流

1
ffmpeg -re -i out.mp4 -copy -f flv rtmp://server/live/streamNmae

拉流

1
ffmpeg -i rtmp://58.200.131.2:1935/livetv/hunantv -c copy dump.flv