文章目录

  • FFmpeg参数
    • 主要参数
    • 音频参数
    • 视频参数
      • 其他参数
    • 格式值
      • 声音格式
      • 滤镜值
  • 常见命令
    • 查询命令
    • 录制命令
      • 录制视频
        • windows 设备
      • 录制声音
        • Windows设备
      • 录制音视频
    • 分解/复用命令
    • 处理原始数据命令
      • 提前YUV数据
      • ffmpeg提取PCM数据
    • 滤镜命令
    • 裁剪与合并命令
    • 图片/视频互转命令
      • 视频转图片
      • 图片转视频
    • 直播推/拉流
      • 直播推流
      • 直播拉流
    • ffprobe
    • 参考

FFmpeg参数

主要参数

  • -i 设定输入流

  • -f : 强制输入或输出文件的格式。

    ffmpeg -formats 可以列出所有的formats.

    对于输入,如果不指定-f, ffmpeg 会根据输入数据(来自于输入文件,或输入设备或其它协议)来判断数据的封装格式.

    对于输出,如果不指定-f, ffmpeg 也可以通过输出文件名进行推导.

  • -ss 开始时间

  • -t 时间长度

音频参数

-a a指的是audio。

  • -acodec <codec_name> :设定声音编解码器,(编码器设定为”copy“,保持原有的编解码)
  • copy:copy:用于指定输出视频流和输入视频流的编码格式保持一致
  • -an: (audio no)疏略音频,只保留视频。
  • -ar <音频采样率>:指定音频的采样率。例 ffmpeg -i test.mp4 -ar 44100
  • -ac <整数>: (audio channel):指定音频声道数量。 例ffmpeg -i test.mpr -ac
  • -c:a <编码器名字>: 指定音频的编码器。

视频参数

-v v指的是video

  • -vn:(video no)忽略视频,只保留音频。
  • -vcodec <codec_name>: 设定视频编解码器(编码器设定为”copy“表示不进行编解码,即保持原来的编解码格式)。
  • copy:copy:用于指定输出视频流和输入视频流的编码格式保持一致
  • -pix_fmt <像素格式>:指定视频像素格式
  • -c:v <编码器>: 指定视频编码器。(-c:v copy。 保持原有的)
  • -vf <滤镜>: 指定路径名字。例 ffmpeg -i input.mp4 -vf crop=in_w-100:in_h-100 output.mp4
  • -r <帧率>:设定帧速率。

其他参数

  • -re: 要求按照既定速率处理输入数据,这个速率即是输入文件的帧率

格式值

声音格式

  • s16le

    s16le是一种无压缩的声音格式全称为signed 16-bit little-endian意思是有符号的16位音频数据用小端字节序来存储。这种格式通常用于存储语音、音效等低质量的音频数据,因为它可以提供音频采样的全范围动态范围,从-32768到32767,能够提供足够的音量和质量,同时比其他无损或有损音频格式的文件大小较小。

滤镜值

  • crop

    FFmpeg 的 crop 滤镜可以用于裁剪视频,其使用方法如下:

    1. 基本语法:crop=<width>:<height>:<x>:<y>

      其中,<width> 表示裁剪后视频的宽度,<height> 表示裁剪后视频的高度,<x> 表示从视频左侧开始裁剪的像素数量,<y> 表示从视频顶部开始裁剪的像素数量。

      例如,下面的命令将从输入的视频文件中裁剪出宽度为 500,高度为 500,左上角坐标为 (100,100) 的视频,并将裁剪后的视频输出为 output.mp4:
      ffmpeg -i input.mp4 -vf crop=500:500:100:100 output.mp4

    2. 输入视频时使用滤镜:-vf "crop=<width>:<height>:<x>:<y>"

      例如,要对输入的视频裁剪掉右侧和底部各 100 像素,可以输入以下命令:

      ffmpeg -i input.mp4 -vf crop=in_w-100:in_h-100 output.mp4
      

      在这个命令中,in_win_h 表示输入视频的宽度和高度。

    注意,crop 滤镜也可以用于裁剪音频或图片。如果要裁剪视频中的特定部分,请先使用 FFmpeg 的 trim 滤镜裁剪为所需的范围,然后再使用 crop 滤镜裁剪到所需的大小。例如,trim=start_frame=100:end_frame=200,crop=320:240:100:100 表示从视频的第 100 帧开始裁剪,裁剪到第 200 帧,然后将宽度裁剪为 320 像素,高度为 240 像素,裁剪掉左边 100 像素和顶部 100 像素。

常见命令

查询命令

录制命令

录制视频

windows 设备

  1. 使用 gdigrab :ffmpeg -f gdigrab -i desktop -r 30 out.yuv

    • -f 指定采集数据的设备

      Windows下可以使用gdigrab(给予GDI(图形设备接口(Graphics Device Interface))的抓屏设备)

      ffmpeg -devices 命令查询当前可用采集的设备有哪些。

  • -i 表示查看输入设备,可以指定数字,也可以指定设备名字。

    ffmpeg -list_devices true -f dshow -i dummy,查看可用设备的清单


    - -r表示帧率- out.yuv表示存储数据的文件。YUV表示原始数据格式。没有任何的压缩。

执行命令如下图,所示。

播放刚才录制的视频

原始数据未指定分辨率和播放格式,播放器无法解析,可能会播放异常。

播放视频文件指定分辨率和格式。就是录制视频生成out.yuv文件显示的分辨率和格式信息。

  • -video_size

    指定分辨率。

  • -pixel_format

    指定视频像素格式。

执行播放命令

ffplay -video_size 1920x1080 -pixel_format bgra ./out.yuv

qctrl+c停止录制

录制声音

Windows设备

  1. 查询录音设备

支持的录音设备为(麦克风 (Realtek High Definition Audio))

  1. 录制声音

    ffmpeg -f dshow -i audio="麦克风 (Realtek High Definition Audio)" out.wav

  2. 播放声音

    ffplay ./out.wav

qctrl+c停止录制

录制音视频

ffmpeg -f gdigrab -s 1920x1080 -i desktop -f dshow -i audio="麦克风 (Realtek High Definition Audio)" out.mp4

指定录制视频和音频的信息。

分解/复用命令

一个已经封装格式的音视频文件,例如mp4、flv格式。Demuxer 拆解,解封装之后拿到编码数据,decoder解码后拿到原始数据(高度还原的数据,不是真正的原始数据,真正的原始数据是相机或者麦克风手机的数据),然后再指定编码格式encoder编码,最后指定封装格式muxer就变成最后的输出文件了。

分解复用就是对解封装后的编码数据操作。可以转格式,单独抽取音频或者视频。

  • mp4 转 flv
    ffmpeg -i out/media.mp4 -vcodec copy -acodec copy media.flv
  • mp4 转 mov
    ffmpeg -i out/media.mp4 -vcodec copy -acodec copy media.mov
  • 从flv中抽取视频
    ffmpeg -i out/media.flv -vcodec copy -an out/meida_video.h264
  • 从flv中抽取音频
    ffmpeg -i out/media.flv -acodec copy -vn out/meida_audio.aac
  • aac 转 mp3
    ffmpeg -i out/meida_audio.aac -acodec mp3 out/meida_audio.mp3

处理原始数据命令

原始数据在这里指的就是FFmpeg解码后的数据,对于视频来说就是YUV数据,属于音频来说就PCM数据。

提前YUV数据

ffmpeg -i input.mp4 -an -c:v rewvideo -pix_fmt yuv420p out.yuv

既然是提取原始数据,所以要指定格式。

ffmpeg提取PCM数据

提取PCM命令如下:

ffmpeg -i out.mp4 -vn -ar 44100 -ac 2 -f sl6le out.pcm

当播放的时候可能会出现错误:out.pcm: Invalid data found when processing nput

因为你是原始的数据嘛,播放器不知道你采样频率,声道数,这些信息,所以会出错。

生成pcm数据需要指定这些参数,同样播放pcm数据也需要告诉ffplay这些对应的参数。

播放命令

ffplay -ar 44100 -ac 2 -f s16le out.pcm

滤镜命令

滤镜使用的大致流程:拿到解码后的数据帧,过滤,拿到过滤后的数据,编码再输出。

命令使用:

ffmpeg -i input.mp4 -vf <指定滤镜> -c:v libx264 -c:a copy out.mp4

ffmpeg -i input.mp4 -vf crop=500:500:0:0 -c:v libx264 -c:a copy out.mp4

意思就是输入input.mp4文件,裁剪出宽度为 500,高度为 500,左上角坐标为 (0,0) 的视频,视频编码指定为 libx264 ,音频编码保持不变。并将裁剪后的视频输出为 output.mp4

裁剪与合并命令

ffmpeg -i input.mp4 -ss 00:00:00 -t 10 out.mp4

这个命令意思是 从 input.mp4的0时0分0秒开始截取10秒的视频。

ffmpeg -f concat -i input.txt out.flv

input.txt内容是文件列表,记录了要合并的文件。内容为"file fileName"形式。

这条命令就是把t1.ts和t2.ts合并。

图片/视频互转命令

视频转图片

ffmpeg -i input.mp4 -r 1 -f image2 image-%3d.jpeg
  • -r 设定帧速率,视频转换出图片的帧率,-r 1 表示每秒转出为1张图片。
  • -f 告诉ffmeg 转出的格式。 image2是一种图片格式。
  • image-%3d.jpeg 是生成图片的命名。

图片转视频

ffmpeg -i image-%3d.jpeg out.mp4

直播推/拉流

直播推流

ffmpeg -re -i out.mp4 -c copy -f flv trmp://server/live/streamName

直播拉流

ffmpeg -i remp://server/live/streamName -c copy output.flv

ffprobe

ffprobeffmpeg提供的三大工具之一,用来查看音视频文件的各种信息,比如:封装格式、音频/视频流信息、数据包信息等。

查看音视频文件的封装格式

ffprobe -show_format inputFile

查看音视频文件的流信息

ffprobe -show_streams inputFile

参考

  • ffmpeg 基本命令介绍
  • 音视频ffmpeg——ffmpeg 命令大全
  • FFMPEG详解(完整版)

音视频开发四:FFmpeg音视频处理的基本命令使用相关推荐

  1. 软件合码器-驾考-驾驶员考试-音视频合成-四合一-多路视频合成一路技术开发-音视频合码器

    本技术以实际开发实施案例为基础(驾驶员路考系统用的音视频监控合成) 软件合码器-驾考-驾驶员考试-音视频合成-四合一-多路视频合成一路技术开发-音视频合码器 软件效果: 设计流程: 简介 视频合成软件 ...

  2. 【Android音视频开发】- 实时采集视频

    前言 通过我的上一篇文章,可以知道直播大致有几个步骤:音视频采集 -> 美颜/滤镜/特效处理 -> 编码 -> 封包 -> 推流 -> 分发 -> 解码/渲染/播放 ...

  3. 音视频开发进阶指南--音视频概念基础

    音视频开发进阶指南--音视频概念基础 音频概念基础: 采样.量化和编码: 首先要对模拟信号进行采样,所谓采样就是在时间轴上对信号进行数字化.根据奈奎斯特定理(也称为采样定理),按比声音最高频率高2倍以 ...

  4. 音视频系列四 ffmpeg配合opensl es播放音频

    文章目录 一 解码成PCM 二 opensl es创建引擎,混音器 创建引擎 创建混音器 创建播放器,注册回调函数 一 解码成PCM 流程其实和视频差不多,参考播放视频的代码,稍作增改 先定义后面需要 ...

  5. 音视频开发系列1:音视频开发基本概念

    #视频文件的本质 #一张图 音视频技术=封装技术+视频压缩编码技术+音频压缩编码技术+流媒体协议技术 播放流程: 获取流–>解码–>播放 录制播放流程: 录制音频视频–>剪辑–> ...

  6. java音视频开发技术_FFmpeg音视频核心技术精讲与实战

    百度网盘2 D2 h2 i; n# o0 D# M* C! [: B1 M 第1章 学习指南[课程提供200+问题与答案库]4 a# t% {  h6 ^: E# O [你遇到的坑,别人已经出坑了,课 ...

  7. 音视频开发二:音视频知识总结

    文章目录 简介 简单理解,音视频原理 音视频理论基础 音频 声音介绍 **为什么要存在数字音频 ?** **什么是数字音频?** 从"模拟信号"到"数字化"的过 ...

  8. 安卓音视频开发(4)—— 视频录制、预览、解析与封装合成

    前言 这节学习视频开发的一些基础操作,具体包括使用MediaRecorder来录制视频,采集视频数据并保存为mp4文件.我学习的教程里使用的是Camera,通过回调来获取到NV21数据,这个获取的数据 ...

  9. 音视频开发一:音视频基础概念

    文章目录 基础概念 音频 声音介绍 种类 音质 声音存储的发展 采样频率 信号频率 声道 声道布局 音帧 帧时长 采样数 采样位数 存储空间 码流(比特率) 采样格式 音频编码(音频压缩) 音频解码 ...

最新文章

  1. 暖通空调系统计量表选型与应用
  2. 基于VHDL自动售邮票机设计
  3. 继承关系 c# 1613704854
  4. python 迭代器协议_浅谈Python中的生成器和迭代器
  5. python writelines_Python文件writelines()方法
  6. 汽车制造MES介绍之3 - AVI车辆识别与调度
  7. Android开发笔记(八十三)多语言支持
  8. win11搜索栏无法输入 Windows11搜索栏无法输入的解决方法
  9. 谷歌推出一款72个量子比特的通用量子计算机
  10. NEU 1683: H-Index
  11. 摩尔斯电码(摩斯电码)
  12. python自动化英语查词
  13. 华为USG防火墙通过nat64 ipv6用户访问内网ipv4服务(原创,转发请注明出处)
  14. Atitit 档案学 档案管理 attilax学习总结
  15. 互联网行业的众生相,不向命运低头的“英雄主义”
  16. NOI 1.5编程基础之循环控制_02:财务管理(编辑过程解)
  17. python小型登录系统_(Python)注册登录系统完整版
  18. 校园江湖 第三节 风起云涌
  19. wpf 非托管代码崩溃_崩溃! 地狱的网络托管公司
  20. STM32学习——TFTLCD原理

热门文章

  1. 微信小程序html5音频,微信小程序 audio音频播放详解及实例
  2. 神舟战神K660E(D)-I7(D8)(战斗版)(tn15s)拆机清灰教程
  3. 使用python requests 爬取妹子图网站图片
  4. esp8266--04wifi开关
  5. UE4之添加开场动画
  6. ​你在淘宝剁手,钱却可能进入黑客的口袋
  7. 图片情感研究现状与思考
  8. 从 sourcemap 中获取源码
  9. 这一次我要真正学会C语言
  10. 编译原理——证明文法具有二义性