ffmpeg命令使用例子2

本文介绍FFmpeg这款强大的音视频处理工具的基本使用方法,包括录屏、视频转GIF及搭建简易直播服务等内容。

谈到视频编码相关内容就不得不提一个伟大的软件包 - FFmpeg。


FFmpeg 是一个自由软件,可以运行音频和视频多种格式的录影、转换、流功能,包含了 libavcodec -这是一个用于多个项目中音频和视频的解码器库,以及 libavformat -一个音频与视频格式转换库。


FFmpeg 这个单词中的 FF 指的是 Fast Forward。有些新手写信给 FFmpeg 的项目负责人,询问 FF 是不是代表 Fast Free 或者 Fast Fourier 等意思,FFmpeg  的项目负责人回信说:「Just for the record, the original meaning of FF in FFmpeg is Fast Forward.」


这个项目最初是由 Fabrice Bellard 发起的,而现在是由 Michael Niedermayer 在进行维护。许多 FFmpeg 的开发者同时也是 MPlayer 项目的成员,FFmpeg 在 MPlayer 项目中是被设计为服务器版本进行开发。


FFmpeg 下载地址是 : https://ffmpeg.org/download.html

  • 可以浏览器输入下载,目前支持 Linux ,Mac OS,Windows 三个主流的平台,也可以自己编译到 Android 或者 iOS 平台。


  • 如果是 Mac OS ,可以通过 brew 安装

 brew install ffmpeg --with-libvpx --with-libvorbis --with-ffplay

我们可以用 FFmpeg 来做哪些有用有好玩的事情呢?通过一系列小实验来带大家领略 FFmpeg 的神奇和强大。


FFmpeg 录屏


通过一个小例子看一下怎么在 Mac OS 下面使用 FFmpeg 进行录屏:

输入:

ffmpeg -f avfoundation -list_devices true -i ""

输出:

[AVFoundation input device @ 0x7fbec0c10940] AVFoundation video devices:
[AVFoundation input device @ 0x7fbec0c10940] [0] FaceTime HD Camera
[AVFoundation input device @ 0x7fbec0c10940] [1] Capture screen 0
[AVFoundation input device @ 0x7fbec0c10940] [2] Capture screen 1
[AVFoundation input device @ 0x7fbec0c10940] AVFoundation audio devices:
[AVFoundation input device @ 0x7fbec0c10940] [0] Built-in Microphone

给出了当前设备支持的所有输入设备的列表和编号,我本地有两块显示器,所以 1 和 2 都是我屏幕,可以选择一块进行录屏。

查看当前的 H.264 编解码器:

输入:

ffmpeg -codecs | grep 264

输出:

 DEV.LS h264                 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (decoders: h264 h264_vda ) (encoders: libx264 libx264rgb )

查看当前的 VP8 编解码器:

输入:

ffmpeg -codecs | grep vp8

输出:

  DEV.L. vp8                  On2 VP8 (decoders: vp8 libvpx ) (encoders: libvpx )

可以选择用 VP8 或者 H264 做编码器

ffmpeg -r 30 -f avfoundation -i 1 -vcodec vp8 -quality realtime screen2.webm
# -quality realtime 用来优化编码器,如果不加在我的 Air 上帧率只能达到 2

or

ffmpeg -r 30 -f avfoundation -i 1 -vcodec h264 screen.mp4

然后用 ffplay 播放就可以了

ffplay screen.mp4

or

ffplay screen2.webp


FFmpeg 视频转换成 gif


有一个特别有用的需求,在网上发现了一个特别有趣的视频想把它转换成一个动态表情,作为一个 IT 从业者,我第一个想到的不是下载一个转码器,也不是去找一个在线转换网站,直接利用手边的工具 FFmpeg,瞬间就完成了转码:

ffmpeg -ss 10 -t 10  -i tutu.mp4  -s 80x60  tutu.gif
## -ss 指从 10s 开始转码,-t 指转换 10s 的视频 -s


FFmpeg 录制屏幕并直播


可以继续扩展例子1,直播当前屏幕的内容,向大家介绍一下怎么通过几行命令搭建一个测试用的直播服务:

Step 1:首先安装 docker: 访问 https://www.docker.com/products/docker ,按操作系统下载安装。

Step 2:下载 nginx-rtmp 镜像:

docker pull chakkritte/docker-nginx-rtmp

Step 3:创建 nginx html 路径,启动 docker-nginx-rtmp

mkdir ~/rtmp

docker run -d -p 80:80 -p 1935:1935 -v ~/rtmp:/usr/local/nginx/html chakkritte/docker-nginx-rtmp

Step 4:推送屏幕录制到 nignx-rtmp

ffmpeg -y -loglevel warning -f avfoundation -i 2 -r 30 -s 480x320 -threads 2 -vcodec libx264  -f flv rtmp://127.0.0.1/live/test

Step 5:用 ffplay 播放

ffplay rtmp://127.0.0.1/live/test

总结一下,FFmpeg 是个优秀的工具,可以通过它完成很多日常的工作和实验,但是距离提供真正可用的流媒体服务、直播服务还有非常多的工作要做,这方面可以参考七牛云发布的七牛直播云服务 。

<think>我们正在讨论FFmpeg命令使用方法。根据用户之前的引用和问题,用户需要FFmpeg命令使用指南。我们可以从基础命令结构讲起,然后介绍常用命令选项,接着给出一些典型应用场景的示例,最后生成相关问题。 注意:用户之前的引用中提到了转码为HLS、多路视频合并、视频参数设置等,这些可以作为示例。 回答结构: 1. FFmpeg命令基本结构 2. 常用命令选项(输入输出、视频参数、音频参数、流选择等) 3. 典型应用场景示例(格式转换、提取音视频、视频合并、HLS切片等) 4. 相关问题 注意:引用内容在适当的地方标注。 </think>### FFmpeg 命令使用指南 FFmpeg 是强大的多媒体处理工具,支持视频/音频编解码、格式转换、流媒体处理等。以下是核心功能详解: #### 一、基础命令结构 ```bash ffmpeg [全局选项] [输入选项] -i 输入文件 [输出选项] 输出文件 ``` - **全局选项**:`-y`(覆盖输出)、`-v loglevel`(日志级别) - **输入/输出选项**:控制编解码、分辨率、帧率等参数[^4] #### 二、核心操作场景 1. **格式转换**(MP4 → MOV) ```bash ffmpeg -i input.mp4 -c:v copy -c:a copy output.mov # 无损拷贝流 ``` 2. **视频转 HLS 直播流** ```bash ffmpeg -i input.mp4 -c:v libx264 -c:a aac -f hls output.m3u8 ``` - `-f hls`:指定 HLS 格式输出[^1] - `-strict -2`:启用实验性编码器(如 FDK-AAC)[^1] 3. **音视频流选择策略** FFmpeg 默认选择规则: - 视频 → 最高分辨率流 - 音频 → 最多声道数流 - 字幕 → 第一个字幕流[^2] ```bash # 手动选择第2路视频流和第3路音频流 ffmpeg -i input.mkv -map 0:v:1 -map 0:a:2 output.mp4 ``` 4. **多画面拼接(画中画)** ```bash ffmpeg -i top.mp4 -i bottom.mp4 -filter_complex \ "[0:v]scale=640:360[top]; [1:v]scale=640:360[bot]; \ [top][bot]vstack=inputs=2" output.mp4 ``` - `vstack` 垂直拼接 → `hstack` 水平拼接 - 复杂布局参考 `nullsrc` + `overlay` 方案[^3] 5. **关键参数控制** | 选项 | 作用 | 示例值 | |------------|-----------------------|-----------------| | `-b:v` | 视频比特率 | `-b:v 2000k` | | `-r` | 帧率 | `-r 30` | | `-s` | 分辨率 | `-s 1280x720` | | `-vn`/`-an`| 禁用视频/音频流 | `-vn` | | `-ss`/`-t` | 起始时间/持续时间 | `-ss 00:01:30 -t 10` | #### 三、高级应用 1. **硬件加速转码(NVIDIA)** ```bash ffmpeg -hwaccel cuda -i input.mp4 -c:v h264_nvenc output.mp4 ``` 2. **提取关键帧** ```bash ffmpeg -i video.mp4 -vf "select='eq(pict_type,PICT_TYPE_I)'" -vsync 0 keyframes/thumb%03d.jpg ``` 3. **直播推流** ```bash ffmpeg -re -i input.mp4 -c:v libx264 -preset fast -f flv rtmp://server/live/stream ``` #### 四、调试技巧 - **查看媒体信息**:`ffmpeg -i input.mp4` - **测试编解码器**:`ffprobe -show_streams input.mov` - **生成空视频**:`ffmpeg -f lavfi -i testsrc=duration=10:size=1280x720:rate=30 output.mp4`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值