• ffmpeg视频处理常用命令


    1.ffmpeg主要参数
    1. -f fmt(输入/输出) 强制输入或输出文件格式。 格式通常是自动检测输入文件,
    2. 并从输出文件的文件扩展名中猜测出来,所以在大多数情况下这个选项是不需要的。
    3. -i url(输入) 输入文件的网址
    4. -y(全局参数) 覆盖输出文件而不询问
    5. -n(全局参数) 不要覆盖输出文件,如果指定的输出文件已经存在,请立即退出。
    6. -c [:stream_specifier] codec(输入/输出,每个流)
    7. 选择一个编码器(当在输出文件之前使用)或解码器(当在输入文件之前使用时)用于
    8. 一个或多个流。codec 是解码器/编码器的名称或 copy(仅输出)以指示该流不被重新编码。
    9. 如:ffmpeg -i INPUT -map 0 -c:v libx264 -c:a copy OUTPU
    10. -codec [:stream_specifier]编解码器(输入/输出,每个流) 同 -c
    11. -t duration(输入/输出) 当用作输入选项(在-i之前)时,限制从输入文件读取的数据的
    12. 持续时间。当用作输出选项时(在输出url之前),在持续时间到达持续时间之后停止输出。
    13. -ss位置(输入/输出) 当用作输入选项时(在-i之前),在这个输入文件中寻找位置。
    14. 请注意,在大多数格式中,不可能精确搜索,因此ffmpeg将在位置之前寻找最近的搜索点。
    15. 当转码和-accurate_seek被启用时(默认),搜索点和位置之间的这个额外的分段将被解码和丢弃。
    16. 当进行流式复制或使用-noaccurate_seek时,它将被保留。当用作输出选项(在输出url之前)时,
    17. 解码但丢弃输入,直到时间戳到达位置。
    18. -frames [:stream_specifier] framecount(output,per-stream)
    19. 停止在帧计数帧之后写入流。
    20. -filter [:stream_specifier] filtergraph(output,per-stream)
    21. 创建由filtergraph指定的过滤器图,并使用它来过滤流。filtergraph是应用于
    22. 流的filtergraph的描述,并且必须具有相同类型的流的单个输入和单个输出。
    23. 在过滤器图形中,输入与标签中的标签相关联,标签中的输出与标签相关联。
    24. 有关filtergraph语法的更多信息,请参阅ffmpeg-filters手册。

    -------------------------------------------------

    2.ffmpeg音频参数
    1. -vframes num(输出)
    2. 设置要输出的视频帧的数量。对于-frames:v,这是一个过时的别名,您应该使用它。
    3. -r [:stream_specifier]
    4. fps(输入/输出,每个流)设置帧率(Hz值,分数或缩写)。作为输入选项,忽略存储
    5. 在文件中的任何时间戳,根据速率生成新的时间戳。这与用于-framerate选项不同(它
    6. 在FFmpeg的旧版本中使用的是相同的)。如果有疑问,请使用-framerate而不是输入选
    7. 项-r。作为输出选项,复制或丢弃输入帧以实现恒定输出帧频fps。
    8. -s [:stream_specifier]大小(输入/输出,每个流) 设置窗口大小。作为输入选项,
    9. 这是video_size专用选项的快捷方式,由某些分帧器识别,其帧尺寸未被存储在文件中。
    10. 作为输出选项,这会将缩放视频过滤器插入到相应过滤器图形的末尾。请直接使用比例过
    11. 滤器将其插入到开头或其他地方。格式是'wxh'(默认 - 与源相同)。
    12. -aspect [:stream_specifier] 宽高比(输出,每个流设置方面指定的视频显示宽高比。
    13. aspect可以是浮点数字符串,也可以是num:den形式的字符串,其中num和den是宽高比的
    14. 分子和分母。例如“43”,“169”,“1.3333”和“1.7777”是有效的参数值。如果与-vcodec
    15. 副本一起使用,则会影响存储在容器级别的宽高比,但不会影响存储在编码帧中的宽高比(如果存在)。
    16. -vn(输出) 禁用视频录制。
    17. -vcodec编解码器(输出) 设置视频编解码器。这是-codec:v的别名。
    18. -vf filtergraph(输出) 创建由filtergraph指定的过滤器图,并使用它来过滤流。

    -----------------------------------

    3.编码/解码命令


    提取yuv数据

    1. ffmpeg -i testVedio,flv -an -c:v rawivideo -pix_fmt yuv420p out.yuv
    2. 提取yuv数据
    3. -pix_fmt设置像素格式

    -----------------------------------

    提取PCM数据

    1. ffmpeg -i break.mp4 -vn -ar 44100 -ac 2 -f s16le out.pcm
    2. 提取PCM数据
    3. -ar 设置音频采样率
    4. -ac 设置音频通道数目
    5. -f 设置pcm文件数据格式

    -------------------------------------

    编码命令

    1. ffmpeg -s 1920×1080 -iout.yuv -vcodec h264 out.h264
    2. 使用和64编码压缩音频数据
    3. ffmpeg -ar 44100 -ac 2 -f sl16le -i out.pcm -acodec libfdk_acc out.acc
    4. 使用fdk_aac编码压缩PCM数据

    ------------------------------------

    4.处理原始数据
    1. 提取YUV数据
    2. ffmpeg -i input.mp4 -an -c:v rawvideo -pixel_format yuv420p out.yuv
    3. ffplay -s wxh out.yuv
    4. -c:v rawvideo 指定将视频转成原始数据
    5. -pixel_format yuv420p 指定转换格式为yuv420p
    6. YUV转H264
    7. ffmpeg -f rawvideo -pix_fmt yuv420p -s 320x240 -r 30 -i out.yuv -c:v libx264 -f rawvideo out.h264
    8. 提取PCM数据
    9. ffmpeg -i out.mp4 -vn -ar 44100 -ac 2 -f s16le out.pcm
    10. ffplay -ar 44100 -ac 2 -f s16le -i out.pcm
    11. PCM转WAV
    12. ffmpeg -f s16be -ar 8000 -ac 2 -acodec pcm_s16be -i input.raw output.wav

    -------------------------------------

    mp4 的封装格式转成flv

    ffmpeg -i out.mp4 -vcodec copy -acodec copy out.flv

    -------------------------------------------

    5.裁剪/合并命令

    裁剪命令

    1. ffmpeg -SS 00:00:00 -t 10 -i break.mp4 -vcodec copy -acodec copy 1.ts
    2. -SS position跳转到输入文件的postion位置,可以是秒数或者hh:mm:ss形式
    3. -t duration读取到文件的duration位置,可以是秒数或者hh:mm:ss形式

    -------------------------------------------

    合并命令

    1. ffmpeg -f concat -i input.txt -vcodec copy -acodec copy new.ts
    2. 合并input.txt的视频文件列表
    3. input.txt格式: file 'fileName'
    4. ffmpeg -i out.h264 -i out.aac -vcodec copy -acodec copy out.mp4
    5. 音视频合并

    -------------------------------------------

    6.图片/视频互转命令
    1. ffmpeg -i break.mp4 -t5 -r 2 -S 1024x768 %3d.jpeg视频转图片
    2. -r fps设置图片截取速率,可以为浮点数
    3. -S WxH设置截取图片的大小
    4. ffmpeg -i %3d.jpeg out.mp4图片转视频
    5. ffmpeg -i %3d.jpeg -r 5 out.gif图片转gif动图
    6. ffmpeg -i break.mp4 -t 5 -r 30 image.gif视频转gif动图

    ------------------------------------------


    7.录制命令
    1. ffmpeg -y f x11grab -r 30 -S 1024x768 -i :0.0 -preset ultrafast output.mp4
    2. 录制屏幕命令,并编码封装成mp4文件
    3. -preset设置编码器预设参数
    4. -ultrafast最快的编码方式
    5. ffmpeg -f alsa -i pulse -ar 44100 -ac2 -f s16le out.pcm
    6. 获取音频数据命令
    7. ffmpeg -f avfoundation -i 1:0 -r 29.97 -c:v libx264 -crf 0 -c:a libfdk_aac -profile:a aac_he_v2 -b:a 32k out.flv
    8. 录制视频音频命令
    9. -i 1:0 冒号前面的 "1" 代表的屏幕索引号。冒号后面的"0"代表的声音索相号。
    10. -c:v 与参数 -vcodec 一样,表示视频编码器。c 是 codec 的缩写,v 是video的缩写。
    11. -crf 是 x264 的参数。 0 表式无损压缩。
    12. -c:a 与参数 -acodec 一样,表示音频编码器。
    13. -profile 是 fdk_aac 的参数。 aac_he_v2 表式使用 AAC_HE v2 压缩数据。
    14. -b:a 指定音频码率。 b 是 bitrate的缩写, a是 audio的缩与。

    ---------------------------------------------

    直播命令

    1. ffmpeg -re -i input.mp4 -acodec copy -vcodec copy -f flv rtmp://xxx
    2. 推视频流至流媒体服务器
    3. -re读取输入的原始帧速率
    4. ffmpeg -i http://ivi.bupt.edu.cn/hls/cctv6hd.m3u8 -C copy output.m3u8
    5. 保存流媒体服务器上的流至本地

    ----------------------------------------------------

    8.视频处理命令:
    1. ffmpeg -i in.mp3 -filter_ complex atempo=0.5 out.mp3
    2. 对声音进行变速不变调处理
    3. -filter_ complex filtergraph设置复杂滤镜
    4. atempo设置音频速度因子(0.5 - 100,默认1)
    5. ffmpeg -i testVideo.flv -vf crop=in_ W-200:in_ _h- 100 -vcodec libx264 -c:a copy out.flv
    6. 裁剪视频
    7. -vf filtergraph创建和使用filtergraph指定的滤镜组
    8. crop滤镜名称
  • 相关阅读:
    Synopsys ICC学习(1)
    矩阵类运算(运算符重载)
    React18学习
    【docker】虚拟化和docker容器概念
    提高数据科学效率的 8 个Python神库
    二十二、SpringBoot + Jwt + Vue 权限管理系统 (3)
    AcWing 138. 兔子与兔子
    LeetCode:1337. 矩阵战斗力最弱的 K 行、11. 盛最多水的容器、剑指 Offer 51. 数组中的逆序对题解
    基于springboot会员制医疗预约服务管理信息系统设计与实现-计算机毕业设计源码和LW文档
    ubuntu默认关联程序
  • 原文地址:https://blog.csdn.net/weixin_44651073/article/details/136664339