【FFmpeg】ffmpeg 命令行参数 ⑤ ( 使用 ffmpeg 命令提取 音视频 数据 | 保留封装格式...
source link: https://blog.51cto.com/u_14202100/10228331
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
- 一、使用 ffmpeg 命令提取 音视频 数据
- 1、提取音频数据 - 保留封装格式
- 2、提取视频数据 - 保留封装格式
- 3、提取视频数据 - 保留编码格式
- 4、提取视频数据 - 重新编码
- 5、提取音频数据 - 保留编码格式
- 6、提取音频数据 - 重新编码
一、使用 ffmpeg 命令提取 音视频 数据
1、提取音频数据 - 保留封装格式
使用 ffmpeg 命令 从 视频数据 中 提取 音频数据 / 视频数据 保留封装格式 , 封装格式 指的就是 封装 视频数据 的 容器 ;
一个 mp4 格式的视频 , 其 封装容器 就是 mp4 容器 , 其中 封装了 h.264 格式的视频数据 和 aac 格式的 音频数据 ;
ffmpeg -i input.mp4 -vn -acodec copy output.mp4
命令 , 从 input.mp4 输入文件中 , 提取 音频数据 到 output.mp4 输出文件 , 封装容器 仍然是 mp4 格式的容器 ;
提取出来 的数据 是 音频数据 , 完全可以存储在 aac / mp3 / wav 等音频封装容器中 , 但是此处保留了 封装容器格式 , 仍然将 音频数据 存储在 mp4 格式的容器 中 ;
上述命令解析 :
-
-i input.mp4
参数 : 指定了 输入文件为 input.mp4 视频文件 ; -
-vn
参数 : 设置 ffmpeg 程序 提取 数据时 忽略视频流 , 只保留 音频流数据 ; -
-acodec copy
参数 : 设置 ffmpeg 程序 提取 音频流 时 不进行重新编码 , 只进行简单拷贝复制即可 ; -
output.mp4
参数 : 指定 提取后的音频数据 存放 的 输出文件 为 output.mp4 ;
注意 : 输出 音频文件 , 需要 使用 -acodec
参数 , 设置 音频编解码器 ;
命令执行过程 : 执行
ffmpeg -i input.mp4 -vn -acodec copy output.mp4
执行前 , input.mp4 的 封装容器 中的 音频流 和 视频流 格式如下 :
- 视频流 : 格式是 H.264 / AVC ( Advanced Video Coding ) 编码的 视频流 ;
- 音频流 : 格式 AAC LC 指的是 AAC ( Advanced Audio Coding ) 编码的音频流 , LC 指的是 特定为 Low Complexity 低复杂性 配置文件 ;
执行上述命令后的 输出文件 中 , 只有 AAC LC 格式的 音频流 数据 , 视频流 数据 被忽略掉了 ;
2、提取视频数据 - 保留封装格式
ffmpeg -i input.mp4 -an -vcodec copy output.mp4
命令 , 从 input.mp4 输入文件中 , 提取 视频数据 到 output.mp4 输出文件 , 封装容器 仍然是 mp4 格式的容器 ;
提取出来 的数据 是 视频数据 , 完全可以存储在 h.264 视频封装容器中 , 但是此处保留了 封装容器格式 , 仍然将 视频数据 存储在 mp4 格式的容器 中 ;
注意 : 输出 视频文件 , 需要 使用 -vcodec
参数 , 设置 视频编解码器 ;
上述命令解析 :
-
-i input.mp4
参数 : 指定了 输入文件为 input.mp4 视频文件 ; -
-an
参数 : 设置 ffmpeg 程序 提取 数据时 忽略 音频流 数据 , 只保留 视频流 数据 ; -
-vcodec copy
参数 : 设置 ffmpeg 程序 提取 视频流 时 不进行重新编码 , 只进行简单拷贝复制即可 ; -
output.mp4
参数 : 指定 提取后的音频数据 存放 的 输出文件 为 output.mp4 ;
命令执行过程 : 执行
ffmpeg -i input.mp4 -an -vcodec copy output.mp4
输出文件 output.mp4 中 , 只有 AVC 格式的视频流数据 , 音频流数据被忽略掉了 ;
3、提取视频数据 - 保留编码格式
ffmpeg -i input.mp4 -an -vcodec copy output.h264
命令 , 从 input.mp4 输入文件中 , 提取 视频数据 到 output.h264 输出文件中 , 不再使用原来的封装格式 ;
上述命令解析 :
-
-i input.mp4
参数 : 指定了 输入文件为 input.mp4 视频文件 ; -
-an
参数 : 设置 ffmpeg 程序 提取 数据时 忽略 音频流 数据 , 只保留 视频流 数据 ; -
-vcodec copy
参数 : 设置 ffmpeg 程序 提取 视频流 时 不进行重新编码 , 只进行简单拷贝复制即可 ; -
output.h264
参数 : 指定 提取后的视频数据 存放 的 输出文件 为 output.h264 ;
执行过程 : 执行
ffmpeg -i input.mp4 -an -vcodec copy output.h264
命令过程 ;
转换后的 H.264 格式的 输出文件 中 , 只有一个 AVC 视频流 数据 ;
4、提取视频数据 - 重新编码
ffmpeg -i input.mp4 -an -vcodec libx264 output.h264
命令 , 从 input.mp4 输入文件中 , 提取 视频数据 到 output.h264 输出文件中 , 并使用 libx264 编解码器重新进行编码 ;
- 如果不重新编码 , 很快就能输出完毕 ;
- 重新进行视频编码 , 执行过程很耗时 ;
上述命令解析 :
-
-i input.mp4
参数 : 指定了 输入文件为 input.mp4 视频文件 ; -
-an
参数 : 设置 ffmpeg 程序 提取 数据时 忽略 音频流 数据 , 只保留 视频流 数据 ; -
-vcodec libx264
参数 : 设置 ffmpeg 程序 提取 视频流 时 使用 libx264 视频编解码器进行重新编码操作 ; -
output.h264
参数 : 指定 提取后的视频数据 存放 的 输出文件 为 output.h264 ;
命令执行过程 :
由于设置了 视频编解码器 , 涉及到 视频重新编码 , 该过程很耗时 , 下面是视频重新编码过程 ;
使用 libx264 视频编解码器 重新 编码输出的 H.264 文件 的 视频信息 如下图所示 :
5、提取音频数据 - 保留编码格式
ffmpeg -i input.mp4 -vn -acodec copy output.aac
命令 , 从 input.mp4 输入文件中 , 提取 音频数据 到 output.aac 输出文件中 , 不再使用原来的封装格式 ;
上述命令解析 :
-
-i input.mp4
参数 : 指定了 输入文件为 input.mp4 视频文件 ; -
-vn
参数 : 设置 ffmpeg 程序 提取 数据时 忽略视频流 , 只保留 音频流数据 ; -
-acodec copy
参数 : 设置 ffmpeg 程序 提取 音频流 时 不进行重新编码 , 只进行简单拷贝复制即可 ; -
output.aac
参数 : 指定 提取后的音频数据 存放 的 输出文件 为 output.aac;
执行过程 : 执行
ffmpeg -i input.mp4 -vn -acodec copy output.aac
命令过程 ;
执行完毕后 , output.aac 输出文件中 有一个 AAC LC 音频流 数据 , 这就是从 input.mp4 视频文件中提取的音频流数据 ;
6、提取音频数据 - 重新编码
ffmpeg -i input.mp4 -vn -acodec libmp3lame output.mp3
命令 , 从 input.mp4 输入文件中 , 提取 音频数据 并且进行重新编码 输出 到 output.mp3 文件中 , 不再使用原来的封装格式 ;
上述命令解析 :
-
-i input.mp4
参数 : 指定了 输入文件为 input.mp4 视频文件 ; -
-vn
参数 : 设置 ffmpeg 程序 提取 数据时 忽略视频流 , 只保留 音频流数据 ; -
-acodec libmp3lame
参数 : 设置 ffmpeg 程序 提取 音频流 时 使用 libmp3lame 音频编解码器对音频流数据重新进行编码 ; -
output.mp3
参数 : 指定 提取后的音频数据 存放 的 输出文件 为 output.mp3;
执行过程 : 执行
ffmpeg -i input.mp4 -vn -acodec libmp3lame output.mp3
命令过程 ;
提取 音频流 数据 并 使用 libmp3lame 编解码器 进行重新编码后的 输出文件信息如下 :
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK