FFmpeg命令行教程:66个实用案例解析

FFmpeg命令行使用教程

FFmpeg是一种非常强大的开源工具,可以用于处理各种多媒体数据,如音频,视频和图像。它提供了丰富的功能,包括转码,剪辑,转换格式,添加滤镜等。本教程将详细介绍如何使用FFmpeg命令行,给出66个具体的使用案例。

1. 安装FFmpeg

首先,你需要在你的机器上安装FFmpeg。对于大多数操作系统(如Windows,macOS和Linux),你可以从FFmpeg的官方网站下载安装包。在安装完成后,你可以在命令行中输入以下命令来验证FFmpeg是否已经成功安装:

ffmpeg -version

这将显示FFmpeg的版本信息。

2. FFmpeg基本命令

FFmpeg的主要功能通过以下四个命令实现:

  • ffmpeg:用于处理视频和音频
  • ffprobe:用于查看多媒体信息
  • ffplay:是一个简单的播放器,使用SDL和FFmpeg库
  • ffserver:用于流媒体服务器(2018年已弃用)

本教程将主要关注ffmpeg命令的使用。

3. 使用案例

录制 RTSP 视频流

  1. 持续录制 RTSP 视频流并保存为10秒长度的视频片段

如果你想以25fps的速率只录制视频数据(不录制音频)并将其分割为多个片段,你可以使用以下的命令:

ffmpeg -i rtsp://your_rtsp_stream -c:v copy -map 0:v -r 25 -f segment -segment_time 10 -segment_format_options movflags=+faststart output%03d.mp4

在这个命令中:

  • rtsp://your_rtsp_stream 是RTSP流的地址。
  • -c:v copy 表示复制视频编码,不进行重新编码。
  • -map 0:v 表示只复制视频流。0:v表示第一个(也是唯一的)输入文件的所有视频流。
  • -r 25 表示设置帧率为25fps。
  • -f segment 表示使用 segment 封装器。
  • -segment_time 10 表示每个片段的长度应该是10秒。
  • -segment_format_options movflags=+faststart 是针对MP4格式的选项,它将“moov atom”移动到文件的前面,这对于在线播放非常有用。
    output%03d.mp4 是输出文件的路径,%03d 是一个序号,它会从0开始递增。例如,第一个文件名将是 output000.mp4,第二个文件名将是 output001.mp4,以此类推。
    请注意,你需要将 rtsp://your_rtsp_stream 替换为你的RTSP流地址。

同时,这个命令假设RTSP源已经以25fps或更高的帧率提供视频。如果RTSP源的帧率低于25fps,那么-r 25命令无法增加帧率,因为它不能创造不存在的帧。

视频转码

  1. 将AVI转换为MP4:
ffmpeg -i input.avi output.mp4
  1. 将MOV转换为MP4:
ffmpeg -i input.mov output.mp4
  1. 将MKV转换为MP4,保持原始音频和视频质量:
ffmpeg -i input.mkv -c:v copy -c:a copy output.mp4
  1. 转换视频格式并改变视频质量(CRF值越低,质量越高,通常取值范围为18-28):
ffmpeg -i input.mp4 -vcodec libx264 -crf 20 output.mp4
  1. 将视频转换为GIF:
ffmpeg -i input.mp4 output.gif

音频转码

  1. 将MP3转换为WAV:
ffmpeg -i input.mp3 output.wav
  1. 将WAV转换为MP3:
ffmpeg -i input.wav output.mp3
  1. 将FLAC转换为MP3:
ffmpeg -i input.flac output.mp3
  1. 将音频从视频中提取出来:
ffmpeg -i input.mp4 -vn -ar 44100 -ac 2 -b:a 192k output.mp3
  1. 将音频转换为单声道:
ffmpeg -i input.mp3 -ac 1 output.mp3

视频剪辑

  1. 截取视频的一部分(从第2分钟开始,持续30秒):
ffmpeg -ss 00:02:00 -i input.mp4 -t 00:00:30 -c:v copy -c:a copy output.mp4
  1. 截取视频的一部分(从第60秒开始,持续30秒):
ffmpeg -ss 60 -i input.mp4 -t 30 -c:v copy -c:a copy output.mp4
  1. 截取视频的一部分并转换格式:
ffmpeg -ss 00:02:00 -i input.avi -t 00:00:30 output.mp4

视频和音频合并

  1. 合并视频和音频:
ffmpeg -i video.mp4 -i audio.wav -c:v copy -c:a aac -strict experimental output.mp4
  1. 从多个音频文件中创建一个音频文件:
ffmpeg -i "concat:input1.mp3|input2.mp3" -acodec copy output.mp3

图片和音频合并为视频

  1. 将图片和音频合并为视频:
ffmpeg -loop 1 -i image.jpg -i audio.mp3 -c:v libx264 -c:a aac -strict experimental -b:a 192k -shortest output.mp4

图片序列转换为视频

  1. 将图片序列(如img001.jpg,img002.jpg,…)转换为视频:
ffmpeg -framerate 24 -i img%03d.jpg output.mp4

视频转换为图片序列

  1. 将视频转换为图片序列:
ffmpeg -i input.mp4 img%03d.jpg

添加水印

  1. 在视频中添加水印(水印位置在左上角):
ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=10:10" output.mp4
  1. 在视频中添加水印(水印位置在右下角):
ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=W-w-10:H-h-10" output.mp4

改变分辨率

  1. 将视频的分辨率改为720p:
ffmpeg -i input.mp4 -vf "scale=-1:720" output.mp4
  1. 将视频的分辨率改为1080p:
ffmpeg -i input.mp4 -vf "scale=-1:1080" output.mp4

旋转视频

  1. 将视频旋转90度:
ffmpeg -i input.mp4 -vf "transpose=1" output.mp4
  1. 将视频旋转180度:
ffmpeg -i input.mp4 -vf "transpose=2,transpose=2" output.mp4

调整视频速度

  1. 将视频速度加倍:
ffmpeg -i input.mp4 -filter:v "setpts=0.5*PTS" output.mp4
  1. 将视频速度减半:
ffmpeg -i input.mp4 -filter:v "setpts=2.0*PTS" output.mp4

音频淡入淡出

  1. 添加音频淡入效果:
ffmpeg -i input.mp3 -af "afade=t=in:ss=0:d=5" output.mp3
  1. 添加音频淡出效果:
ffmpeg -i input.mp3 -af "afade=t=out:st=50:d=5" output.mp3

调整音量

  1. 将音频音量提高10dB:
ffmpeg -i input.mp3 -af "volume=10dB" output.mp3
  1. 将音频音量减少10dB:
ffmpeg -i input.mp3 -af "volume=-10dB" output.mp3

调整视频亮度

  1. 提高视频的亮度:
ffmpeg -i input.mp4 -vf "eq=brightness=0.06" output.mp4
  1. 降低视频的亮度:
ffmpeg -i input.mp4 -vf "eq=brightness=-0.06" output.mp4

从视频中提取音轨

  1. 从视频中提取音轨:
ffmpeg -i input.mp4 -map 0:a -c:a copy output.aac
  1. 从视频中提取多个音轨:
ffmpeg -i input.mp4 -map 0:a -c:a copy output1.aac -map 1:a -c:a copy output2.aac

从视频中提取字幕

  1. 从视频中提取字幕:
ffmpeg -i input.mp4 -map 0:s:0 output.srt

压缩视频

  1. 压缩视频文件大小:
ffmpeg -i input.mp4 -vcodec libx265 -crf 28 output.mp4

调整帧率

  1. 将视频的帧率调整为24 fps:
ffmpeg -i input.mp4 -r 24 output.mp4
  1. 将视频的帧率调整为60 fps:
ffmpeg -i input.mp4 -r 60 output.mp4

音频转换为不同的采样率

  1. 将音频转换为44.1 kHz:
ffmpeg -i input.mp3 -ar 44100 output.mp3
  1. 将音频转换为48 kHz:
ffmpeg -i input.mp3 -ar 48000 output.mp3

音频降噪

  1. 对音频进行降噪处理:
ffmpeg -i input.mp3 -af "afftdn=nf=4" output.mp3

创建视频缩略图

  1. 从视频中创建缩略图:
ffmpeg -i input.mp4 -vf "thumbnail" -frames:v 1 output.jpg
  1. 每隔一秒从视频中创建缩略图:
ffmpeg -i input.mp4 -vf "fps=1" output_%d.jpg

视频镜像翻转

  1. 将视频进行水平镜像翻转:
ffmpeg -i input.mp4 -vf "hflip" output.mp4
  1. 将视频进行垂直镜像翻转:
ffmpeg -i input.mp4 -vf "vflip" output.mp4

添加静音音轨

  1. 在视频中添加一个静音音轨:
ffmpeg -i input.mp4 -f lavfi -i anullsrc=channel_layout=stereo:sample_rate=44100 output.mp4

删除音频或视频轨道

  1. 从视频中删除音频轨道:
ffmpeg -i input.mp4 -c copy -an output.mp4
  1. 从视频中删除视频轨道:
ffmpeg -i input.mp4 -c copy -vn output.mp4

为视频添加字幕

  1. 为视频添加字幕:
ffmpeg -i input.mp4 -vf "subtitles=subtitles.srt" output.mp4
  1. 将字幕文件烧录到视频中:
ffmpeg -i input.mp4 -vf "ass=subtitles.ass" output.mp4

音频和视频同步

  1. 音频和视频同步:
ffmpeg -i input.mp4 -itsoffset 0.5 -i input.mp4 -map 0:v -map 1:a -c:v copy -c:a aac output.mp4

提取视频关键帧

  1. 提取视频关键帧:
ffmpeg -i input.mp4 -vf "select=eq(pict_type\,I)" -vsync vfr output_%03d.png

两个视频拼接

  1. 横向拼接两个视频:
ffmpeg -i input1.mp4 -i input2.mp4 -filter_complex hstack output.mp4
  1. 纵向拼接两个视频:
ffmpeg -i input1.mp4 -i input2.mp4 -filter_complex vstack output.mp4

视频裁剪

  1. 裁剪视频:
ffmpeg -i input.mp4 -filter:v "crop=out_w:out_h:x:y" output.mp4

视频倒播

  1. 视频倒播:
ffmpeg -i input.mp4 -vf "reverse" -af "areverse" output.mp4

音频和视频混流

  1. 音频和视频混流:
ffmpeg -i input.mp4 -i input.mp3 -c:v copy -c:a aac -strict experimental output.mp4

调整音频速度

  1. 将音频速度加倍:
ffmpeg -i input.mp3 -filter:a "atempo=2.0" -vn output.mp3
  1. 将音频速度减半:
ffmpeg -i input.mp3 -filter:a "atempo=0.5" -vn output.mp3

视频去噪

  1. 视频去噪:
ffmpeg -i input.mp4 -vf "hqdn3d" output.mp4

录制屏幕

  1. 录制屏幕:
ffmpeg -f x11grab -r 25 -s 1280x720 -i :0.0 -codec:v libx264 -pre lossless_ultrafast -threads 0 output.mkv

提取视频中的帧

  1. 提取视频中的帧:
ffmpeg -i input.mp4 -vf "select=eq(pict_type\,I)" -vsync vfr output_%03d.png

视频分割

  1. 将视频分割为10秒的片段:
ffmpeg -i input.mp4 -c copy -map 0 -segment_time 00:00:10 -f segment output%03d.mp4

添加背景音乐

  1. 为视频添加背景音乐:
ffmpeg -i input.mp4 -i background.mp3 -c:v copy -c:a aac -strict experimental -map 0:v:0 -map 1:a:0 output.mp4

创建视频幻灯片

  1. 创建视频幻灯片(每张图片显示5秒):
ffmpeg -framerate 1/5 -i img%03d.png -c:v libx264 -r 30 -pix_fmt yuv420p output.mp4

添加封面图像

  1. 为音频文件添加封面图像:
ffmpeg -i input.mp3 -i cover.jpg -c copy -map 0 -map 1 -metadata:s:v title="Album cover" -metadata:s:v comment="Cover (Front)" output.mp3

以上就是本篇教程中的全部66个FFmpeg命令行使用案例,希望这些案例能对你在音视频处理方面的工作带来帮助。记住,这只是FFmpeg功能的冰山一角,它还有更多强大的功能等待你去发现和掌握。

你可能感兴趣的:(FFmpeg,ffmpeg,音视频,linux)