mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4mobile wallpaper 5mobile wallpaper 6
1436 words
4 minutes
谈谈 FFmpeg
2026-03-20

FFmpeg 之利,惠及全球#

引入#

FFmpeg 当之无愧为 21 世纪最伟大的发明之一! 你说什么?你还不知道 FFmpeg 是个什么东西? 那好,现在就让我给你开开眼界。

介绍#

FFmpeg 是一个开源的音视频处理程序,使用 C 语言编写。
在此处可以打开开源项目的地址:单击此处以跳转
在 Github 上有也有存储仓库 单击此处以跳转

特色#

FFmpeg 集成了很多强大的音视频处理功能。学习一些 FFmpeg 的指令,即可实现高度自定义的音视频转换操作。比如:提取音频或视频流、转封装格式、编码格式、调节比特率、调节音频分贝、调节视频分辨率、调节视频帧率…(以及更多功能)

作为一个 C 语言程序,对特定平台编译后,即可实现跨平台使用。

你可能还未见识过 FFmpeg 的各项功能,但你应当知道,FFmpeg 早已融入到你身边的软件中。(你用过 Chrome 吗?)凭借其开源而强大的技术,几乎任何需要音视频处理的操作都离不开他。

你说什么?格式工厂也有这样的功能?不要说我没有警告过你:格式工厂就是一个参数调得很烂的 FFmpeg 外壳,因为他内部使用的技术就是 FFmpeg。

你说什么?FileConverter 也有这样的功能?不要说我没有警告过你:FileConverter 就是一个参数调得很好的 FFmpeg 外壳,因为他内部使用的技术就是 FFmpeg,并且比格式工厂好用。

哇,好厉害!那我能拿他做什么?#

~你可以用他制作 osu! 谱面!~当然,我不是说真的去摆放游戏物件,而是让他处理音视频以供谱面使用。由于谱面要上传到服务器,并且 osu! 服务器对谱面大小有较严格的要求(上限100MB,无论谱面有多长。详情参见 osu! 谱面大小限制),因此必须要对体积很大的视频文件进行压缩处理。

让我们开始吧!#

需要安装 FFmpeg 并学习一些 FFmpeg 的指令。一起来看看吧!首先你有一个体积约为 200MB、时长约为 13 分钟、分辨率为 1920×1080、帧率为 60、包含音频轨道的视频文件。对于 osu! 谱面而言,必须先分离视频与音频轨道,然后最好将视频体积压缩至 50~60MB;音频保留 192kbps 的比特率,体积约为 15~20MB。

需要准备的材料:

  1. 搭配英伟达显卡的 Windows 电脑。
  2. 下载好的视频文件。
  3. FFmpeg 程序。如果你还没有安装 FFmpeg,请参阅 如何安装 FFmpeg
  4. 你的脑子。

详细步骤:

  1. 分离出音频轨道。打开视频所在文件夹,右键打开终端,输入以下指令(此处假定视频文件名为 origin.mp4):

    ffmpeg -i origin.mp4 -vn -b:a 192k audio.mp3

    -vn 指去除视频轨道。
    -b:a 192k 指设定音频轨道的比特率为 192Kbps。

    WARNING

    如果音频流比特率本就没有 192kbps(例如某些音频比特率只有 128Kbps),那么需要将数值调低至不高于音频本身的比特率,否则过高的比特率将没有意义。

    等待指令执行完毕,稍后将在同一个目录下输出名为 audio.mp3 的文件。

  2. 分离出视频轨道。事实上,可以将分离视频与编码视频的指令合并到一起,就像上一步输出音频那样,但视频编码的指令较为复杂,所以此处将两者分开,以使过程更清晰。继续在终端输入以下指令:

    ffmpeg -i origin.mp4 -an -c:v copy origin_video.mp4

    -an 指去除音频轨道。
    -c:v copy 指复制视频轨道。

    等待指令执行完毕,稍后将在同一个目录下输出名为 origin_video.mp4 的文件。

  3. 压缩视频。继续在终端输入以下指令:

    ffmpeg -hwaccel cuda -i origin_video.mp4 -vf "scale=1280x720:flags=lanczos,fps=30" -b:v 600k -maxrate 700k -c:v h264_nvenc video.mp4

    -hwaccel cuda 指使用英伟达显卡进行全局硬件渲染加速。
    -vf "scale=1280x720:flags=lanczos,fps=30" 指使用慢速高质量输出选项缩放视频尺寸为 1280×720,并设置帧率为 30 帧。
    -b:v 600k -maxrate 700k 指设定视频恒定比特率为 600Kbps,最大 700Kbps。
    -c:v h264_nvenc 指设定编码器为英伟达专用编码器 h264_nvenc。

    NOTE

    主流的编码器有 H.264、H.265 和 AV1。
    其中,H.264 应用最为广泛、兼容性最强、编码速度快,但压缩比率不高;
    H.265 是 H.264 的改进版本,大幅提高了压缩比率,但是兼容性较差、编码速度慢;
    AV1 是近来新推出的编码器,压缩比率强于 H.265,但兼容性同样较差、编码速度极慢。

    对于 osu!stable,只能使用 H.264 编码器编码的视频。如果导入了 H.265 或 AV1 的视频,那么游戏在加载视频时会卡死崩溃。

    所以,用于 osu! 谱面的视频只能使用 H.264 编码器编码。

    等待指令执行完毕,稍后将在同一个目录下输出名为 video.mp4 的文件。

至此,你已借助 FFmpeg 的功能完成了音频与视频的转换!现在,可以将他们拖入游戏窗口进行谱面创作了。

另请参阅:https://github.com/leandromoreira/ffmpeg-libav-tutorial

Share

If this article helped you, please share it with others!

谈谈 FFmpeg
https://vista233.top/posts/ffmpeg-tutorial/
Author
forer4433
Published at
2026-03-20
License
CC BY-NC-SA 4.0

Some information may be outdated

Cover
Sample Song
Sample Artist
Cover
Sample Song
Sample Artist
0:00 / 0:00