FFmpeg 命令备忘

13

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