Skip to content

FFmpeg 是一个非常强大的多媒体框架,提供了创建、处理、传输多媒体数据的能力。下面列出了一些 FFmpeg 的常用命令及其用途:

1. 基本信息提取

  • 显示媒体文件信息

    shell
    ffmpeg -i input.mp4
  • 仅显示基本信息

    shell
    ffmpeg -i input.mp4 -hide_banner

2. 转码与格式转换

  • 将视频转码为另一种格式

    shell
    ffmpeg -i input.mp4 output.webm
  • 转换音频文件格式

    shell
    ffmpeg -i input.mp3 output.wav

3. 截取视频片段

  • 从视频中截取特定时间段的视频
    shell
    ffmpeg -i input.mp4 -ss 00:01:30 -t 00:00:45 -c copy output.mp4
    -ss 指定开始时间,-t 指定持续时间。

4. 视频拼接

  • 合并多个视频文件 首先创建一个文本文件(例如 mylist.txt),其中每行是一个输入文件的路径:
    plaintext
    file 'video1.mp4'
    file 'video2.mp4'
    然后使用 -f concat -safe 0 进行拼接:
    shell
    ffmpeg -f concat -safe 0 -i mylist.txt -c copy output.mp4

5. 抽取音频流

  • 从视频中提取音频
    shell
    ffmpeg -i input.mp4 -vn audio.aac
    -vn 表示不要视频。

6. 调整视频大小

  • 改变视频分辨率
    shell
    ffmpeg -i input.mp4 -vf scale=640:480 output.mp4

7. 录制屏幕

  • 录制屏幕(需要支持的设备)
    shell
    ffmpeg -f x11grab -r 30 -s 1920x1080 -i :0.0+0,0 -f pulse -i default output.mkv

8. 流媒体直播

  • 推流到服务器
    shell
    ffmpeg -re -i input.flv -vcodec copy -acodec copy -f flv rtmp://live.example.com/live/your_stream_name

9. 添加水印

  • 在视频中添加图片水印
    shell
    ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=10:10" output.mp4

当然,以下是更多关于 FFmpeg 的高级功能和用法:

10. 视频滤镜和效果

  • 添加模糊效果

    shell
    ffmpeg -i input.mp4 -vf "boxblur=5" output.mp4
  • 调整亮度和对比度

    shell
    ffmpeg -i input.mp4 -vf "eq=brightness=0.1:contrast=0.2" output.mp4

11. 音频滤镜和处理

  • 调整音频音量

    shell
    ffmpeg -i input.mp4 -af "volume=1.5" output.mp4
  • 淡入淡出

    shell
    ffmpeg -i input.mp4 -af "afade=t=in:st=0:d=2,afade=t=out:st=28:d=2" output.mp4

    这里设置前2秒淡入,最后2秒淡出。

12. 视频分割

  • 从视频中分割出单个文件 使用 -map 参数来选择输出流:
    shell
    ffmpeg -i input.mp4 -map 0:v:0 -c copy video_only.mp4
    ffmpeg -i input.mp4 -map 0:a:0 -c copy audio_only.aac

13. 视频旋转

  • 旋转视频
    shell
    ffmpeg -i input.mp4 -vf "transpose=1" output.mp4
    transpose 可以用于顺时针或逆时针旋转90度。

14. 字幕处理

  • 添加外部字幕

    shell
    ffmpeg -i input.mp4 -i subtitles.srt -c copy -c:s mov_text output.mp4
  • 从视频中提取字幕

    shell
    ffmpeg -i input.mp4 -map 0:s:0 subtitles.srt

15. 分割视频

  • 根据章节标记分割视频 如果视频有章节标记,可以使用 - chapters 选项来分割视频:
    shell
    ffmpeg -i input.mp4 -map_chapters -1 -f segment -segment_time 600 output_%03d.mp4
    这里会把视频分割成每段600秒的文件。

16. 多路复用

  • 创建多语言音轨或字幕的视频
    shell
    ffmpeg -i video.mp4 -i audio_track_1.aac -i audio_track_2.aac -map 0:v -map 1:a -map 2:a -c copy -metadata:s:a:0 language=eng -metadata:s:a:1 language=fr output.mp4

17. 直播流录制

  • 从网络流录制视频
    shell
    ffmpeg -re -i http://example.com/live/stream -c copy -bsf:a aac_adtstoasc output.mp4

好的,让我们继续介绍一些 FFmpeg 的其他有用命令和技巧:

18. 音视频同步调整

  • 修复音视频不同步问题
    shell
    ffmpeg -i input.mp4 -itsoffset -0.5 -i input.mp4 -map 0:v:0 -map 1:a:0 -c copy output.mp4
    这里通过 -itsoffset 参数延迟了音频 0.5 秒。

19. 音频混音

  • 混合两个音频文件
    shell
    ffmpeg -i audio1.mp3 -i audio2.mp3 -filter_complex amix=inputs=2:duration=shortest output.mp3
    amix 滤镜可以混合多个音频流。

20. 音频淡入淡出

  • 对音频文件进行淡入淡出处理
    shell
    ffmpeg -i input.mp3 -af "afade=t=in:st=0:d=2,afade=t=out:st=28:d=2" output.mp3
    这条命令会让音频文件的开头2秒逐渐变响,结尾2秒逐渐减弱。

21. 创建 GIF 动图

  • 从视频中创建 GIF 图像
    shell
    ffmpeg -i input.mp4 -ss 00:00:10 -t 10 -vf "scale=320:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" output.gif
    该命令从视频的第10秒开始,截取10秒钟,并将其转换为 GIF 格式。

22. 提取视频帧

  • 从视频中提取单帧图像
    shell
    ffmpeg -i input.mp4 -vf "select=gt(scene\,0.3)" -frames:v 1 frame.jpg
    -vf select=gt(scene,0.3) 会在场景变化超过 30% 时截取一帧。

23. 批量处理

  • 批量转换目录中的所有视频文件 你可以编写一个 shell 脚本来批量处理文件:
    shell
    for file in *.mp4; do ffmpeg -i "$file" -c:v libx264 -preset veryfast -crf 22 -c:a aac -b:a 128k "${file%.mp4}.mkv"; done
    这个脚本会将所有 .mp4 文件转换为 .mkv 格式。

24. 编码优化

  • 优化 H.264 编码输出
    shell
    ffmpeg -i input.mp4 -c:v libx264 -preset medium -crf 23 -c:a aac -b:a 128k output.mp4
    这里使用了 libx264 编码器,并设置了适当的预设和 CRF 值。

25. 修复损坏的视频文件

  • 尝试修复损坏的视频文件
    shell
    ffmpeg -i broken.mp4 -c copy -bsf h264_mp4toannexb repaired.mp4
    有时候,通过重新封装视频文件可以帮助恢复损坏的文件。

26. 高级调试

  • 查看解码后的视频帧
    shell
    ffmpeg -i input.mp4 -vf fps=1/60 -vsync vfr frame%04d.png
    这条命令会每隔一秒输出一帧到图片文件中,便于检查视频内容。

FFmpeg 拥有许多强大的功能,除了前面提到的一些基本命令外,还有很多其他的实用命令。以下是一些补充的常用命令及应用场景:

27. 音频混流

  • 将多个音频流混入一个视频
    shell
    ffmpeg -i video.mp4 -i audio1.mp3 -i audio2.mp3 -filter_complex "[1:a][2:a]amerge=inputs=2[a]" -map 0:v -map "[a]" -c:v copy -c:a aac output.mp4

28. 音频分离

  • 从视频中分离并合并多个音频流
    shell
    ffmpeg -i input.mp4 -map 0:a:0 -c copy audio_stream_1.mp3
    ffmpeg -i input.mp4 -map 0:a:1 -c copy audio_stream_2.mp3

29. 视频裁剪

  • 裁剪视频的一部分
    shell
    ffmpeg -i input.mp4 -vf "crop=in_w:in_h-180" output.mp4
    这里裁剪掉视频底部的180像素。

30. 音频修剪

  • 修剪音频文件的长度
    shell
    ffmpeg -i input.mp3 -ss 00:00:10 -t 00:00:30 -c copy trimmed.mp3
    从第10秒开始,截取30秒的音频。

31. 视频去噪

  • 去除视频中的噪声
    shell
    ffmpeg -i input.mp4 -vf "hqdn3d" output.mp4
    使用 hqdn3d 过滤器去除视频中的噪声。

32. 视频去隔行

  • 将隔行扫描视频转换为逐行扫描
    shell
    ffmpeg -i input.mp4 -vf "yadif" output.mp4
    使用 yadif 过滤器去除隔行效应。

33. 音频均衡器调整

  • 调整音频均衡器
    shell
    ffmpeg -i input.mp3 -af "equalizer=f=1000:t=h:width_type=o:width=2:g=10" output.mp3
    调整特定频率范围内的增益。

34. 视频压缩

  • 压缩视频文件大小
    shell
    ffmpeg -i input.mp4 -vcodec libx264 -crf 28 -preset slow output.mp4
    使用 libx264 编码器并设置 CRF 值来控制压缩质量。

35. 视频旋转并裁剪

  • 旋转视频并保持原始宽高比
    shell
    ffmpeg -i input.mp4 -vf "transpose=1,crop=in_w:in_h-ih/2*(cos(PI/4)-sin(PI/4))" output.mp4
    先旋转视频,然后裁剪以保持原始宽高比。

36. 音频标准化

  • 调整音频文件的音量水平
    shell
    ffmpeg -i input.mp3 -af "loudnorm" output.mp3
    使用 loudnorm 过滤器标准化音频电平。

37. 视频颜色调整

  • 调整视频的颜色
    shell
    ffmpeg -i input.mp4 -vf "hue=s=1.2" output.mp4
    使用 hue 过滤器调整视频的饱和度。

38. 视频速度调整

  • 改变视频播放速度
    shell
    ffmpeg -i input.mp4 -vf "setpts=0.5*PTS" output.mp4
    将视频播放速度减半。

39. 视频重复播放

  • 循环播放视频片段
    shell
    ffmpeg -i input.mp4 -vf "loop=loop=2:size=2" output.mp4
    循环播放视频两次。

40. 音频重采样

  • 改变音频的采样率
    shell
    ffmpeg -i input.mp3 -ar 44100 -ac 2 output.mp3
    将音频采样率改为44100Hz,双声道。

当然,我们还可以继续探讨 FFmpeg 的更多高级用法和特殊功能。以下是一些补充的命令:

41. 音频与视频同步检测

  • 检测音视频是否同步
    shell
    ffmpeg -i input.mp4 -lavfi "[0:v][0:a]async=25" -f null -
    该命令通过 async 过滤器检查音视频是否同步,如果输出中有错误提示,则说明音视频不同步。

42. 从视频中提取缩略图

  • 从视频中提取特定时间点的缩略图
    shell
    ffmpeg -i input.mp4 -ss 00:01:30 -vframes 1 thumbnail.jpg
    从视频的第1分30秒处提取一张缩略图。

43. 音频降噪

  • 对音频进行降噪处理
    shell
    ffmpeg -i input.mp3 -af "aformat=channel_layouts=mono,anull",noise=level=-30dB,f=6000,level_in=-10dB,level_out=-10dB,attack=0.01,release=0.1 output.mp3
    使用 noise 滤镜减少背景噪音。

44. 视频翻转

  • 垂直或水平翻转视频
    shell
    ffmpeg -i input.mp4 -vf "hflip" output.mp4
    或者
    shell
    ffmpeg -i input.mp4 -vf "vflip" output.mp4
    hflipvflip 分别用于水平和垂直翻转视频。

45. 音频淡入淡出

  • 为音频添加淡入淡出效果
    shell
    ffmpeg -i input.mp3 -af "afade=t=in:st=0:d=2,afade=t=out:st=28:d=2" output.mp3
    在音频开头和结尾分别添加2秒的淡入和淡出效果。

46. 视频字幕嵌入

  • 将字幕嵌入视频
    shell
    ffmpeg -i input.mp4 -vf "subtitles=subtitles.srt" output.mp4
    从外部 SRT 文件中读取字幕并嵌入视频。

47. 视频字幕移除

  • 移除视频中的字幕轨道
    shell
    ffmpeg -i input.mp4 -c copy -sn output.mp4
    -sn 参数表示不复制字幕轨道。

48. 音频音调调整

  • 调整音频的音调
    shell
    ffmpeg -i input.mp3 -af "atempo=1.5" output.mp3
    使用 atempo 滤镜调整音频播放速度,从而改变音调。

49. 视频色彩空间转换

  • 转换视频的色彩空间
    shell
    ffmpeg -i input.mp4 -vf "format=yuv420p" output.mp4
    将视频的色彩空间转换为 YUV 4:2:0。

50. 视频编码参数调整

  • 调整视频编码参数
    shell
    ffmpeg -i input.mp4 -c:v libx264 -preset veryfast -crf 23 -c:a aac -b:a 128k output.mp4
    设置视频编码器为 libx264,并调整 presetcrf 值以优化编码速度和质量。

51. 视频元数据修改

  • 修改视频的元数据(如标题、艺术家等)
    shell
    ffmpeg -i input.mp4 -metadata title="My Video Title" -metadata artist="Artist Name" output.mp4
    使用 -metadata 参数来添加或修改视频文件的元数据。

52. 视频音频分离

  • 从视频中分离音频
    shell
    ffmpeg -i input.mp4 -vn -acodec copy audio.aac
    -vn 参数表示不包含视频,只保留音频。

53. 视频音频合并

  • 将分离的音频和视频重新合并
    shell
    ffmpeg -i video.mp4 -i audio.aac -c copy -map 0:v:0 -map 1:a:0 output.mp4
    将两个文件重新组合成一个带有音频和视频的新文件。

54. 音频通道调整

  • 调整音频通道布局
    shell
    ffmpeg -i input.mp3 -ac 2 output.mp3
    将音频通道数调整为立体声(2通道)。

55. 视频分辨率调整

  • 调整视频的分辨率
    shell
    ffmpeg -i input.mp4 -vf "scale=-1:720" output.mp4
    调整视频的高度为720像素,宽度自动保持原有比例。

当然,我们可以继续探索 FFmpeg 的更多功能和高级用法。以下是一些额外的命令和技巧:

56. 音频均衡调节

  • 精细调节音频的均衡
    shell
    ffmpeg -i input.mp3 -af "equalizer=f=1000:t=q:b=2:g=5" output.mp3
    使用 equalizer 滤镜调整特定频率的增益。

57. 视频画面稳定

  • 稳定抖动的视频画面
    shell
    ffmpeg -i input.mp4 -vf "vidstabdetect=stepsize=15:shakiness=10:accuracy=10:search=15:result=transforms.trf" -f null -
    ffmpeg -i input.mp4 -i transforms.trf -vf "vidstabtransform=input=transforms.trf:zoom=0:smoothing=60" output.mp4
    这个过程分为两步,首先检测视频中的抖动,然后应用变换来稳定视频。

58. 音频淡入淡出循环

  • 创建一个循环播放的音频文件,带淡入淡出效果
    shell
    ffmpeg -i input.mp3 -af "afade=t=in:st=0:d=2, afade=t=out:st=28:d=2, loop=stop_duration=1:stop_threshold=-60dB" output.mp3
    创建一个带有淡入淡出效果的循环音频文件。

59. 视频帧率调整

  • 调整视频的帧率
    shell
    ffmpeg -i input.mp4 -vf "fps=fps=30" output.mp4
    将视频的帧率调整为30 FPS。

60. 视频色彩校正

  • 调整视频的色彩平衡
    shell
    ffmpeg -i input.mp4 -vf "lutrgb=r='0.95*in':g='1.05*in':b='1.1*in'" output.mp4
    通过 lutrgb 过滤器调整红绿蓝通道的亮度。

61. 音频回声效果

  • 给音频添加回声效果
    shell
    ffmpeg -i input.mp3 -af "aecho=0.8:0.9:1000|1600:0.3|0.1" output.mp3
    使用 aecho 滤镜模拟回声效果。

62. 视频去噪

  • 去除视频中的噪声
    shell
    ffmpeg -i input.mp4 -vf "hqdn3d" output.mp4
    使用 hqdn3d 过滤器去除视频中的噪声。

63. 视频叠加文字

  • 在视频中叠加文字
    shell
    ffmpeg -i input.mp4 -vf "drawtext=text='Sample Text':fontfile=/path/to/font.ttf:fontsize=24:fontcolor=white@0.8:x=(w-text_w)/2:y=(h-text_h)/2" output.mp4
    使用 drawtext 过滤器在视频中央添加文字。

64. 视频去黑边

  • 去除视频周围的黑色边缘
    shell
    ffmpeg -i input.mp4 -vf "crop=in_w:in_h-2*blackbar_height" output.mp4
    去除视频上下两侧的黑色边缘。

65. 视频时间码添加

  • 在视频中添加时间码
    shell
    ffmpeg -i input.mp4 -vf "drawtext=text='%{pts\:localtime\:hours\:minutes\:seconds}':fontfile=/path/to/font.ttf:fontsize=24:fontcolor=red:x=10:y=30" output.mp4
    在视频左上角添加当前播放时间的时间码。

66. 视频区域截图

  • 从视频中截图特定区域
    shell
    ffmpeg -i input.mp4 -vf "crop=x1:y1:w:h" -ss 00:00:10 -vframes 1 screenshot.png
    从视频指定位置截图指定区域。

67. 视频水平垂直居中

  • 使视频在输出中水平垂直居中
    shell
    ffmpeg -i input.mp4 -vf "scale=iw*2:ih*2,pad=iw+2*margin:ih+2*margin:(ow-iw)/2:(oh-ih)/2,setsar=1" output.mp4
    使视频在输出中居中,并添加边缘空白。

68. 视频水平垂直拉伸

  • 拉伸视频以适应特定尺寸
    shell
    ffmpeg -i input.mp4 -vf "scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2" output.mp4
    拉伸视频以适应1280x720的分辨率,同时保持原宽高比。

69. 视频音频流切换

  • 创建一个带有多个音频流的视频文件,并允许用户在播放器中切换
    shell
    ffmpeg -i video.mp4 -i audio1.mp3 -i audio2.mp3 -map 0:v -map 1:a -map 2:a -c copy -metadata:s:a:0 language=eng -metadata:s:a:1 language=fr output.mp4
    创建一个多语言音频流的视频文件。

70. 视频音频同步检测

  • 检测并修正音视频同步问题
    shell
    ffmpeg -i input.mp4 -vf "asetpts=PTS-STARTPTS" -c copy -map 0:v:0 -map 0:a:0 -shortest output.mp4
    修正音视频同步问题,并确保输出文件的长度由最短的流决定。

71. 字幕添加的问题

在FFmpeg中添加字幕需要使用subtitles滤镜,但是FFmpeg不支持直接在视频文件中添加字幕。字幕需要单独的文本文件,然后使用subtitles滤镜将其与视频文件关联起来。

shell
字幕文件,相对于运行目录, 不支持盘符

✨ 网站运行时间: 3年11月15天 ❤️ 道阻且长,行则将至 - 微信号: heikedreamer