FFmpeg常用命令
前言#
FFmpeg一般使用官方打包好的命令行程序, 也可以使用源码集成到自己的程序中,这种方式要求更高.这篇文章主要收录命令行下的使用方法
使用方式#
ffmpeg [global_options] {[input_file_options] -i input_url} ... {[output_file_options] output_url} ...
ffmpeg -i [输入文件名] [参数选项] -f [格式] [输出文件]
参数选项:#
先总结一下经常使用的参数
-an: 去掉音频
-vn: 去掉视频
-acodec: 设定音频的编码器,未设定时则使用与输入流相同的编解码器。音频解复用在一般后面加copy表示拷贝
-vcodec: 设定视频的编码器,未设定时则使用与输入流相同的编解码器,视频解复用一般后面加copy表示拷贝
–f: 输出格式(视频转码)
-bf: B帧数目控制
-g: 关键帧间隔控制(视频跳转需要关键帧)
-s: 设定画面的宽和高,分辨率控制(352*278)
-i: 设定输入流
-ss: 指定开始时间(0:0:05)
-t: 指定持续时间(0:05)
-b: 设定视频流量,默认是200Kbit/s
-aspect: 设定画面的比例
-ar: 设定音频采样率
-ac: 设定声音的Channel数
-r: 提取图像频率(用于视频截图)
-c:v: 输出视频格式
-c:a: 输出音频格式
-y: 输出时覆盖输出目录已存在的同名文件
使用方式#
不精确裁剪视频#
# -ss 指定从什么时间开始
# -t 指定需要截取多长时间
# -i 指定输入文件
ffmpeg -ss 00:00:00 -t 00:00:30 -i test.mp4 -vcodec copy -acodec copy output.mp4
精确时间裁剪视频#
- 全部帧都转换为关键帧, 将所有的帧的编码方式转为帧内编码
#旧版本
ffmpeg -i output.mp4 -sameq -intra keyoutput.mp4
#新版本
ffmpeg -i output.mp4 -strict -2 -qscale 0 -intra keyoutput.mp4
- 再开始裁剪视频
ffmpeg -ss 00:00:00 -t 00:00:30 -i test.mp4 -vcodec copy -acodec copy output.mp4
合并视频#
//截取从头开始的30s
ffmpeg -ss 00:00:00 -t 00:00:30 -i keyoutput.mp4 -vcodec copy -acodec copy split.mp4
//截取从30s开始的30s
ffmpeg -ss 00:00:30 -t 00:00:30 -i keyoutput.mp4 -vcodec copy -acodec copy split1.mp4
//进行视频的合并
ffmpeg -f concat -i list.txt -c copy concat.mp4
#list.txt
file ./split.mp4
file ./split1.mp4
往流媒体服务器推流#
##有打印
ffmpeg -re -i 1.mp4 -vcodec libx264 -acodec aac -f flv rtmp://ip:port/rtmplive/home
ffmpeg -re -stream_loop -1 -loglevel quiet -i 1.flv -vcodec copy -f flv rtmp://ip:port/live/test
修改视频帧率#
// 强制把输出视频文件帧率改为 24 fps:-r 帧率
ffmpeg -i input.avi -r 24 output.avi
压缩视频#
// 改码率. 这里的700k可以依照个人要求改. 越大,最后视频就越清晰.
ffmpeg -i ./map.mp4 -b:v 700k map1.mp4
MP4 转 m3u8 hls ts片段#
MP4 转 ts#
ffmpeg -i ./水车.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb ./水车.ts
ts 转 m3u8#
// -segment_time 设定 hls 片段时长,这里设定的3s
// sh-%d.ts 是输出的ts片段的名称
ffmpeg -i ./水车.ts -c copy -map 0 -f segment -segment_list ./水车.m3u8 -segment_time 3 sh-%d.ts
MP4 直接转 m3u8#
mp4 直接转 m3u8 比较慢,没有把 mp4 先转成 ts,然后再切割 ts效率高
// -hls_time 设定 hls 片段时长,这里设定的 6s
ffmpeg -i ./水车.mp4 -c:v libx264 -hls_time 6 -hls_list_size 0 -c:a aac -strict -2 -f hls ./index.m3u8
合并视频和音频#
使用的条件是:视频文件中没有音频
ffmpeg -i video.mp4 -i audio.wav -c:v copy -c:a aac -strict experimental output.mp4
video.mp4,audio.wav分别是要合并的视频和音频,output.mp4是合并后输出的音视频文件。
合并视频和音频#
用audio音频替换video中的音频
ffmpeg -i video.mp4 -i audio.wav -c:v copy -c:a aac -strict experimental -map 0:v:0 -map 1:a:0 output.mp4
混合两个视频的画面和音频#
ffmpeg -i video.mp4 -i ./aideo.mp4 -c:v copy -c:a copy output.mp4
参考教程#
作者:水车
出处:https://www.cnblogs.com/shuiche/p/13259579.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
推荐一个激活软件下载站:mac.shuiche.cc
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
2015-07-07 CSS-Transform-transition-Animation