ffmpeg 实用命令 - 转换格式

介绍一个全局参数 -hide_banner;它可以阻止 FFmpeg 在每次执行时开头打印的那一堆版本信息文本:

bash 复制代码
ffmpeg -hide_banner -L

转码

比如将一个 FLV 文件转为 MP4 文件并重编码,FFmpeg 会自动寻找编解码器,准确度还是比较高的:

bash 复制代码
ffmpeg -i video.flv video.mp4

其中,在 -i 后指定输入文件的文件名,在所有命令的最后指定输出文件的文件名。 如果文件名带有空格或特殊字符,请用双引号将文件名包裹。 上述的 video.mp4-i 参数之后,称为 输出参数 ;反之,在 -i 之前的称为 输入参数

用户也可以显式地指定编码器,比如使用 h.264 视频编码器与 flac 音频编码器。

bash 复制代码
ffmpeg -i video.flv -c:v libx264 -c:a flac video.mkv

其中 -c-codec 的简写。用 v 表示视频(video)编码器、 a 表示音频(audio)编码器。

一般来说转格式会进行重复编码,有些机器上就会很慢,但如果对编码不作转换要求,就可以进行流复制,这个非常快。

流复制

格式转换还有一种快速的情形。如果两者的所有流都不改动且输出容器支持输入的所有流,那么可以直接向 -c 传递 copy 以进行流复制。这样省去了重新编码的时间,格式转换将十分迅速:

bash 复制代码
ffmpeg -i video.avi -c copy video.mp4

其中,-c 是 codec 的简称,表示所有流的编解码器。该命令表示所有流均不进行额外操作,直接复制到新容器中。

提取流

常见就是提取音频和字幕

比如将一个 MP4 视频文件转为 AAC 音频文件(此处实质上是直接提取):

bash 复制代码
ffmpeg -i video.mp4 -c:a copy audio.aac

此处的 -c:a 表示音频流;视频流 -c:v 与字幕流 -c:s 自然也类似。 注意:如果音频流与容器冲突时,你需要将 copy 改为正确的编解码器(或者删去 -c:a copy 来让 FFmpeg 自动选择),以执行重编码。

转码

bash 复制代码
ffmpeg -i video.mkv -c:a libmp3lame -q:a 2 audio.mp3

对于内挂了字幕的视频文件,也可以将其字幕单独提取出来,例如:

bash 复制代码
ffmpeg -i video.mkv -c:s copy subtitle.srt
相关推荐
筏.k2 小时前
WebRTC 项目中捕获 FFmpeg 底层源码日志(av_log)的完整方案
ffmpeg·webrtc
学习_学习_再学习2 小时前
ffmpeg学习记录
学习·ffmpeg
我科绝伦(Huanhuan Zhou)1 天前
Oracle AWR管理与快照操作完整指南
数据库·oracle·ffmpeg
梵尔纳多1 天前
ffmpeg 使用滤镜实现播放倍速
c++·qt·ffmpeg
无敌最俊朗@3 天前
音视频播放的核心处理流程
ffmpeg
mortimer4 天前
搞懂FFmpeg中2个桀骜不驯的参数:CRF 与 Preset
ffmpeg·音视频开发·视频编码
2401_841495644 天前
Windows 系统中ffmpeg安装问题的彻底解决
windows·python·ffmpeg·bug·语音识别·下载·安装步骤
八月的雨季 最後的冰吻4 天前
FFmpeg --15-视频解码: AVIO内存输入模式分析
ffmpeg·音视频
aqi005 天前
FFmpeg开发笔记(八十八)基于Compose的国产电视直播开源框架MyTV
android·ffmpeg·音视频·直播·流媒体
present12275 天前
一段音频/视频分离成人声与伴奏,Windows + Anaconda 快速跑通 Spleeter(离线可用)
windows·职场和发展·ffmpeg·音视频·娱乐·媒体