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

 

版权声明: 本文为独家原创稿件,版权归 乐数软件 ,未经许可不得转载。