使用 ffmpeg 命令行工具可以将 webm 文件转换为 mp4。核心命令是 ffmpeg -i input.webm -c:v libx264 -c:a aac output.mp4,该命令会重新编码视频和音频以适配 mp4 容器标准。

FFmpeg 如何处理 WebM 的 VP8/VP9 视频流
WebM 容器通常封装 VP8 或 VP9 视频流,而 MP4 标准主要支持 H.264 (AVC) 或 H.265 (HEVC)。因此转换过程必须包含视频重编码步骤,不能直接复制流。

ffmpeg -i video.webm -c:v libx264 -preset medium -crf 23 -pix_fmt yuv420p video.mp4
上述代码中,-c:v libx264 指定使用 H.264 编码器。-preset medium 平衡编码速度与质量。-crf 23 设置恒定速率因子,数值越小质量越高(范围 0-51,23 为默认)。-pix_fmt yuv420p 确保像素格式兼容大多数播放器。执行后,生成的 video.mp4 将包含 H.264 视频流。
FFmpeg 如何处理 WebM 的 Vorbis/Opus 音频流
WebM 的音频通常为 Vorbis 或 Opus 格式,而 MP4 标准音频编码为 AAC。同样需要重新编码音频流以确保兼容性。

ffmpeg -i audio.webm -c:a aac -b:a 128k audio.mp4
此代码中,-c:a aac 指定使用 AAC 编码器。-b:a 128k 设置音频比特率为 128kbps,这是兼顾音质与文件大小的常用值。若需更高音质,可调整为 -b:a 192k 或 -b:a 256k。执行后,audio.mp4 将包含 AAC 音频流。
同时转换音视频并处理色彩空间问题
当单独转换视频或音频时,需注意色彩空间。VP8/VP9 常使用 BT.709 或 BT.2020 色彩空间,而旧版播放器可能期望 BT.601。强制指定色彩空间可避免颜色异常。
ffmpeg -i movie.webm -c:v libx264 -pix_fmt yuv420p -colorspace bt709 -c:a aac -b:a 128k movie.mp4
该完整命令同时处理视频和音频。-colorspace bt709 显式声明输入的色彩空间标准,确保输出正确。若发现输出视频颜色发灰或过饱和,可尝试更改为 -colorspace smpte170m。最终生成的 movie.mp4 包含 H.264 视频和 AAC 音频,适用于绝大多数设备和平台。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











