FFmpeg 命令备忘
title: FFmpeg 命令备忘
url: ffmpeg-tips
date: 2024年06月06日
category: 工具
tags:
FFmpeg
推流
需要运行 RTSP 服务器 MediaMTX。
将本地视频推送到 RTSP 服务器:
ffmpeg.exe -re -i .\video.mp4 -c copy -f rtsp -rtsp_transport tcp rtsp://127.0.0.1:8554/test
将 RTSP 流转换成 RTMP流:
ffmpeg.exe -rtsp_transport tcp -re -i "rtsp://stream.strba.sk:1935/strba/VYHLAD_JAZERO.stream" -vcodec libx264 -f flv -an rtmp://localhost/live/hk
将电脑摄像头推流到 RTSP 服务器:
# 首先要查看电脑上摄像头的名称
ffmpeg -list_devices true -f dshow -i dummy
# 然后推流
ffmpeg.exe -r 30 -f dshow -i video="5M HD Camera" -vcodec h264 -max_delay 100 -f rtsp -g 5 -b 700000 rtsp://127.0.0.1:8554/cam
录制RTSP视频流:
使用 -t 参数指定要录制的时长:
ffmpeg -i "rtsp://your.rtsp.url/stream" -c:v libx264 -c:a aac -t 600 output.mp4
图片序列推流:
ffmpeg -f image2 -pattern_type sequence -i '%05d.jpg' -c:v libx264 -r 25 -f rtsp rtsp://localhost:554/stream
视频处理
拼接视频:
vim videos_to_join.txt
/home/ubuntu/Desktop/video_1.mp4
/home/ubuntu/Desktop/video_2.mp4
/home/ubuntu/Desktop/video_3.mp4
ffmpeg -f concat -i join.txt output.mp4
更改播放速度:
第一个命令让播放速度加倍了,第二个则是让播放速度降低了一半。
ffmpeg -i input.mkv -vf "setpts=0.5*PTS" output.mkv
ffmpeg -i input.mp4 -vf "setpts=2*PTS" output,mp4
视频中抽取图片:
r 代表了帧率(一秒内导出多少张图像,默认 25,这里指定为 1), -f 代表了输出格式 (image2 实际上是 image2 序列的意思) 最后一个参数 (输出文件) 有一个有趣的命名:它使用 %3d 来指示输出的图片有三位数字 (000, 001, 等等.)。你也可以用 %2d (两位数字) 或者 %4d (4 位数字) 。
ffmpeg -i video.mp4 -r 1 -f image2 image-%3d.png
截取视频:
要使用 ffmpeg
截取视频中某一时间段,您可以使用 -ss
参数来指定开始时间,以及 -t
参数来指定持续时间。以下是一个例子,展示了如何截取从视频的第30秒开始的10秒钟的视频段:
ffmpeg -i input_video.mp4 -ss 00:00:30 -t 00:00:10 -c copy output_video.mp4
如果您需要从特定时间点截取到视频结束,可以省略 -t
参数,只使用 -ss
参数:
ffmpeg -i input_video.mp4 -ss 00:00:30 -c copy output_video.mp4
从视频中提取音频:
ffmpeg -i input_video.mp4 -q:a 0 -map a output_audio.mp3
ffmpeg -i input_video.mp4 -q:a 0 -map a output_audio.aac
ffmpeg -i input_video.mp4 -q:a 0 -map a output_audio.flac
视频区域截取:
从点(x,y)开始,截取宽out_w,高out_h :
ffmpeg -i input_video.mp4 -filter:v "crop=out_w:out_h:x:y" output_video.mp4
ffmpeg -i input_video.mp4 -filter:v "crop=640:480:320:140" output_video.mp4