Ubuntu ffmpeg 4.2.2 命令详解 (未集成)
FFmpeg 是 Fast Forward Moving Picture Experts Group (快进运动图片专家组) 的缩写,是一种超快音频 视频编码器。
FFmpeg 是领先的开源跨平台多媒体框架,能解码 编码 转码 Mux Demux 流化 过滤和播放由人类 机器创建的几乎所有内容。
FFmpeg 由 AVCodec 音视频编解码器、AVDevice 音视频设备、AVFilter 音视频滤镜、AVFormat 音视频格式、AVUtil 音视频实用工具、swscale 视频图像转换、swresample 音频转换 7 个部分组成。
另请参阅: FFmpeg 4.2.2 中文文档编制 FFmpeg for Windows
基本用法 详细用法 媒体切片 抽取音频 抽取视频 抽取图像 合成视频 流媒体 多路流
ffmpeg --help
基本语法
ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...
功能 | 命令规范 | 文字解释 | 示例 | 示例解释 |
---|---|---|---|---|
帮助 | ffmpeg --help | 展示帮助信息 | ||
ffmpeg -h | 展示帮助信息 | |||
ffmpeg -h long | 展示更多选项 | |||
ffmpeg -h full | 展示所有选项 (包括所有格式和编解码器特定选项,很长) | |||
ffmpeg -h type=name |
展示 name (如 decoder/encoder/demuxer/muxer/filter/bsf) 的所有选项 |
|||
ffmpeg -h demuxer=mp4 |
展示 mp4 demuxer 的所有选项 |
|||
版本 | ffmpeg -version | 展示版本信息 |
功能 | 命令 | 文字解释 |
---|---|---|
分析 | ffmpeg -re -i input.mp4 -c copy -f segment -segment_format mp4 test_output-%d.mp4 | 将 input.mp4 连续切片成 test_output-%d.mp4 文档 |
ffprobe -v quiet -show_packets -setlect_streams v test_output-0.mp4 2> x|grep pts_time | tail -n 3 | 查看 test_output-0.mp4 切片文档最后 3 时间戳 | |
ffprobe -v quiet -show_packets -setlect_streams v test_output-1.mp4 2> x|grep pts_time | head -n 3 | 查看 test_output-1.mp4 切片文档开始 3 时间戳 | |
索引 | ffmpeg -re -i input.mp4 -c copy -f segment -segment_format mp4 -segment_list_type ffconcat -segment_list output.lst test_output-%d.mp4 | 将 input.mp4 连续切片成 test_output-%d.mp4 文档,生成 ffconcat 格式 output.lst 索引文件 |
ffmpeg -re -i input.mp4 -c copy -f segment -segment_format mp4 -segment_list_type flat -segment_list filelist.txt test_output-%d.mp4 | 将 input.mp4 连续切片成 test_output-%d.mp4 文档,生成 flat 格式 filelist.txt 索引文件 | |
ffmpeg -re -i input.mp4 -c copy -f segment -segment_format mp4 -segment_list_type csv -segment_list filelist.csv test_output-%d.mp4 | 将 input.mp4 连续切片成 test_output-%d.mp4 文档,生成 csv 格式 filelist.csv 索引文件 | |
ffmpeg -re -i input.mp4 -c copy -f segment -segment_format mp4 -segment_list_type m3u8 -segment_list output.m3u8 test_output-%d.mp4 | 将 input.mp4 连续切片成 test_output-%d.mp4 文档,生成 m3u8 格式 output.m3u8 索引文件 | |
时间戳 | ffmpeg -re -i input.mp4 -c copy -f segment -segment_format mp4 -reset_timestamps 1 test_output-%d.mp4 | 按清零时间戳方式将 input.mp4 连续切片成 test_output-%d.mp4 文档 |
ffprobe -v quiet -show_packets -setlect_streams v test_output-0.mp4 2> x|grep pts_time | tail -n 3 | 查看 test_output-0.mp4 切片文档最后 3 时间戳 | |
ffprobe -v quiet -show_packets -setlect_streams v test_output-1.mp4 2> x|grep pts_time | head -n 3 | 查看 test_output-1.mp4 切片文档开始 3 时间戳 | |
定位 | ffmpeg -re -i input.mp4 -c copy -f segment -segment_format mp4 -segment_times 3,9,12 test_output-%d.mp4 | 按从第 3 秒、第 9 秒、第 12 秒开始将 input.mp4 连续切片成 test_output-%d.mp4 文档 |
定点 | ffmpeg -ss 8 -i input.mp4 -c copy output.ts | 按从第 8 秒起将 input.mp4 切片成 output.ts 文档 |
ffprobe -v quiet -show_format input.mp4 | grep duration; ffprobe -v quiet -show_format output.ts | grep duration | 分析 比较 input.mp4 和 output.ts 文档的持续时间 | |
定长 | ffmpeg -i input.mp4 -c copy -t 10 -output_ts_offset 120 output.mp4 | 在 10 秒内从头按 120 秒起始偏移将 input.mp4 切片成 output.mp4 文档 |
ffmpeg -i input.mp4 -c copy -t 10 -copyts output.ts | 按在 10 秒内从头将 input.mp4 切片成 output.ts 文档 | |
ffprobe -v quiet -show_format input.mp4 | grep start_time; ffprobe -v quiet -show_format output.ts | grep start_time | 分析 比较 input.mp4 和 output.ts 文档的起始时间 | |
ffprobe -v quiet -show_format input.mp4 | grep duration; ffprobe -v quiet -show_format output.ts | grep duration | 分析 比较 input.mp4 和 output.ts 文档的持续时间 |
功能 | 命令 | 文字解释 | 示例 | 示例解释 |
---|---|---|---|---|
AAC | ffmpeg -i input.mp4 -vn -acodec copy output.aac | 从 input.mp4 音视频文档抽取 output.aac 音频 | ||
MP3 | ffmpeg -i source.flv -ab 128k dest.mp3 | 从 .flv 视频分离 Mp3 音频 | ||
ffmpeg -i source_video.avi -vn -ar 44100 -ac 2 -ab 192 -f mp3 sound.mp3 | 从视频分离 Mp3 音频 |
功能 | 命令 | 文字解释 | 示例 | 示例解释 |
---|---|---|---|---|
H.264 | ffmpeg -i input.mp4 -vcodec copy -an output.h264 | 从 input.mp4 音视频文档抽取 output.h264 视频 | ||
H.265 | ffmpeg -i input.mp4 -vcodec copy -an -bsf hevc_mp4toannexb hevc output.hevc | 从 input.mp4 音视频文档抽取 output.hevc 视频 |
功能 | 命令 | 文字解释 | 示例 | 示例解释 |
---|---|---|---|---|
JPG | ffmpeg -i input.mpg image_%d.jpg | 从 input.mpg 音视频文档抽取 image_1.jpg image_2.jpg ... 序列图像 |
功能 | 命令 | 说明 | 备注 |
---|---|---|---|
图像 | ffmpeg -f image2 -i image%d.jpg d:/test.mpg | 把序列图像 image1.jpg image2.jpg ... 合成视频 | |
媒体 | ffmpeg -i son.wav -i video_origine.avi video_finale.mpg | 将 son.wav 音频和 video_origine.avi 视频合成 video_finale.mpg 音视频文档 |
功能 | 命令 | 说明 | 备注 |
---|---|---|---|
RTMP |
ffmpeg -rtmp_app live -i rtmp://publish.chinaffmpeg.com -c copy -f flv output.flv ffmpeg -re -i input.mp4 -c copy -f flv -rtmp_app live rtmp://publish.chinaffmpeg.com |
将 rtmp://publish.chinaffmpeg.com 流录制到 output.flv 文档 将 input.mp4 媒体内容发布到 rtmp://publish.chinaffmpeg.com |
|
ffmpeg -re -i input.mp4 -c copy -f flv -rtmp_app live -rtmp_playpath class rtmp://publish.chinaffmpeg.com ffmpeg -rtmp_app live -rtmp_playpath class -i rtmp://publish.chinaffmpeg.com -c copy -f flv output.flv |
将 input.mp4 媒体内容 live 发布到 class 名称 rtmp://publish.chinaffmpeg.com 将 rtmp://publish.chinaffmpeg.com 名称 class 流 live 录制到 output.flv 文档 |
||
ffmpeg -i input.mp4 -c copy -f flv rtmp://publish.chinaffmpeg.com/live/class ffmpeg -i rtmp://publish.chinaffmpeg.com/live/class -c copy -f flv output.flv |
将 input.mp4 媒体内容 live 发布到 class 名称 rtmp://publish.chinaffmpeg.com 将 rtmp://publish.chinaffmpeg.com 名称 class 流 live 录制到 output.flv 文档 |
||
ffmpeg -rtmp_pageurl "http://www.chinaffmpeg.com" -i rtmp://publish.chinaffmpeg.com/live/class ffmpeg -rtmp_swfurl "http://www.chinaffmpeg.com" -i rtmp://publish.chinaffmpeg.com/live/class ffmpeg -rtmp_tcurl "http://www.chinaffmpeg.com" -i rtmp://publish.chinaffmpeg.com/live/class |
将 http://www.chinaffmpeg.com 链接 pageUrl 内容 live 发布到 class 名称 rtmp://publish.chinaffmpeg.com 将 http://www.chinaffmpeg.com 链接 swfUrl 内容 live 发布到 class 名称 rtmp://publish.chinaffmpeg.com 将 http://www.chinaffmpeg.com 链接 tcUrl 内容 live 发布到 class 名称 rtmp://publish.chinaffmpeg.com |
||
RTSP | ffmpeg -h demuxer=RTSP | 展示 RTSP 解复用器帮助信息 | |
ffmpeg -rtsp_transport tcp -i rtsp://47.90.47.25/test.ts -c copy -f mp4 output.mp4 | 采用 TCP 协议将 rtsp://47.90.47.25/test.ts 流录制到 output.flv 文档 | ||
ffmpeg -user-agent "ChinaFFmpeg-Player" -i rtsp://input:554/live/1/stream.sdp -c copy -f mp4 -y output.mp4 | 按 ChinaFFmpeg-Player 用户代理以 UDP 默认协议将 rtsp://input:554/live/1/stream.sdp 流录制到 output.mp4 文档 | ||
HTTP |
ffmpeg -ss 300 -seekable 0 -i http://bbs.chinaffmpeg.com/test.ts -c cooy output.mp4 ffmpeg -ss 300 -seekable 1 -i http://bbs.chinaffmpeg.com/test.ts -c cooy output.mp4 |
采用 HTTP 协议将 http://bbs.chinaffmpeg.com/test.ts 流按禁用寻址方式录制到 output.mp4 文档 采用 HTTP 协议将 http://bbs.chinaffmpeg.com/test.ts 流按启用寻址方式录制到 output.mp4 文档 |
|
ffmpeg -headers "referer: http://bbs.chinaffmpeg.com/index.html" -i http://play.chinaffmpeg.com/live/class.flv -c copy -f flv -y output.flv | 采用 referer: http://bbs.chinaffmpeg.com/index.html 头将 http://play.chinaffmpeg.com/live/class.flv 流录制到 output.flv 文档 | ||
ffmpeg -user_agent "FFmpegPlayer" -i http://bbs.chinaffmpeg.com/output.flv | 按 FFmpegPlayer 用户代理推流到 http://bbs.chinaffmpeg.com/output.flv 文档 | ||
ffmpeg -i http://bbs.chinaffmpeg.com/live.flv -c cooy -f flv output.flv ffmpeg -i http://bbs.chinaffmpeg.com/live.ts -c cooy -f flv output.flv ffmpeg -i http://bbs.chinaffmpeg.com/live.m3u8 -c cooy -f flv output.flv |
采用 HTTP 协议将 http://bbs.chinaffmpeg.com/live.flv 流录制到 output.flv 文档 采用 HTTP 协议将 http://bbs.chinaffmpeg.com/live.ts 流录制到 output.flv 文档 采用 HTTP 协议将 http://bbs.chinaffmpeg.com/live.m3u8 流录制到 output.flv 文档 |
||
TCP |
ffmpeg -listen 1 -f flv -i tcp://127.0.0.1:1234/live/stream -c copy -f flv output.flv time ffmpeg -listen_timeout 5000 -listen 1 -f flv -i tcp://127.0.0.1:1234/live/stream -c copy -f flv output.flv |
采用 TCP 协议监听本机 1234 端口把 tcp://127.0.0.1:1234/live/stream 流录制到 output.flv 文档 采用 TCP 协议 5 秒超时监听本机 1234 端口把 tcp://127.0.0.1:1234/live/stream 流录制到 output.flv 文档 |
|
ffmpeg -re -i input.mp4 -c copy -f flv tcp://127.0.0.1:1234/live/stream | 采用 TCP 协议把 input.mp4 文档发布到 tcp://127.0.0.1:1234/live/stream 流 | ||
time ffmpeg -timeout 20000000 -i tcp://192.168.100.179:1935/live/stream -c copy -f flv output.flv | 采用 TCP 协议 20000 秒超时把 tcp://192.168.100.179:1935/live/stream 流录制到 output.flv 文档 | ||
ffmpeg -re -i input.mp4 -c copy -send_buffer_size 256 -f flv tcp://192.168.100.179:1234/live/stream | 采用 TCP 协议 256 缓冲把 input.mp4 文档发布到 tcp://192.168.100.179:1234/live/stream 流 | ||
UDP | ffmpeg -re -i input.mp4 -c copy -localpart 23456 -f flv udp://192.168.100.179:1234/live/stream | 采用 UDP 协议监听本机 23456 端口把 input.mp4 文档发布到 udp://192.168.100.179:1234/live/stream 流 | |
HDS | ffmpeg -h muxer=hds | 展示 HDS 复用器帮助信息 | |
ffmpeg -i input -c copy -f hds output ffmpeg -i input -c copy -f hds -window_size 4 output |
把 input 切片录制到 HDS 流 output 文件 把 input 分 4 个切片录制到 HDS 流 output 文件 |
||
ffmpeg -re -i input.mp4 -c copy -f hds -window_size 4 -extra_window_size 1 output ffmpeg -re -i input.mp4 -c copy -f hds -window_size 4 -extra_window_size 5 output |
把 input.mp4 分 4 个切片 1 个保留录制到 HDS 流 output 文件 把 input.mp4 分 4 个切片 5 个保留录制到 HDS 流 output 文件 |
||
DASH | ffmpeg -h muxer=dash | 展示 DASH 复用器帮助信息 | |
ffmpeg -re -i input.mp4 -c:v copy -acodec copy -f dash -window_size 4 -extra_window_size 5 index.mpd | 把 input.mp4 按音视频分离由 4 个切片 5 个保留方式录制到 DASH 流 index.mpd 文件 | ||
ffmpeg -re -i input.mp4 -c:v copy -acodec copy -f dash -window_size 4 -extra_window_size 5 -single_file 1 index.mpd | 把 input.mp4 按音视频分离单文件方式录制到 DASH 流 index.mpd 文件 |
功能 | 命令 | 说明 | 备注 |
---|---|---|---|
管道方式 |
ffmpeg -i input -acodec aac -vcodec libx264 -f flv - | ffmpeg -f mpegts -i -c copy output1 -c copy output2 -c copy output3 ffmpeg -i imput.mp4 -vcodec libx264 -acocdec aac -f flv - | ffmpeg -f flv -i - -c copy -f flv rtmp://publish.chinaffmpeg.com/live/stream1 c copy -f flv rtmp://publish.chinaffmpeg.com/live/stream2 |
将 input 流按 flv 格式管道方式录制到 output1 output2 output3 将 input.mp4 流按 flv 格式管道方式录制到 rtmp://publish.chinaffmpeg.com/live/stream1 stream2 |
|
tee 格式 |
ffmpeg -re -i imput.mp4 -vcodec libx264 -acocdec aac -map 0 -f tee "[f=flv] rtmp://publish.chinaffmpeg.com/live/stream1 | [f=flv] rtmp://publish.chinaffmpeg.com/live/stream2" ffmpeg -i rtmp://publish.chinaffmpeg.com/live/stream1 -i rtmp://publish.chinaffmpeg.com/live/stream1 |
将 imput.mp4 流按 tee 格式发布到 rtmp://publish.chinaffmpeg.com/live/stream1 stream2 查看 rtmp://publish.chinaffmpeg.com/live/stream1 stream2 多路流 |
|
tee 协议 | ffmpeg -re -i input.mp4 -vcodec libx264 -acodec aac -f flv "tee:rtmp://publish.chinaffmpeg.com/live/stream1 | rtmp://publish.chinaffmpeg.com/live/stream2" | 将 imput.mp4 流按 tee 协议发布到 rtmp://publish.chinaffmpeg.com/live/stream1 stream2 |
版权声明: 本文为独家原创稿件,版权归 乐数软件 ,未经许可不得转载。