当前位置: 首页 > news >正文

【FFmpeg】ffmpeg 命令行参数 ⑤ ( 使用 ffmpeg 命令提取 音视频 数据 | 保留封装格式 | 保留编码格式 | 重新编码 )

文章目录

  • 一、使用 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 编解码器 进行重新编码后的 输出文件信息如下 :

在这里插入图片描述

http://www.lryc.cn/news/318620.html

相关文章:

  • JMeter 二次开发之环境准备
  • Laravel Class ‘Facade\Ignition\IgnitionServiceProvider‘ not found 解决
  • DNS 技巧与窍门
  • 第2章 信息技术基础
  • uniapp 微信小程序和h5处理文件(pdf)下载+保存到本地+预览功能
  • Linux从0到1——Linux第一个小程序:进度条
  • 软件工程师,是时候了解下Rust编程语言了
  • SSL---VPN
  • Chrome 跨域问题CORS 分析
  • GPU性能测试中的张量和矩阵运算
  • Linux运维_Bash脚本_编译安装FreeRDP-3.3.0
  • CMake官方教程4--使用表达式生成器
  • git for windows
  • C++实验 面向对象编程
  • VC++ 设置网卡接口MTU大小
  • dpdk-19.11 对向量指令的使用情况分析
  • 使用CIP采集欧姆龙EtherNet/IP从入门到精通
  • 企业如何高效管理微信里的客户?
  • 怎么在windows系统上查看kylinos的md5、sha1、sha256值
  • Windows中在C#中使用Dapper和Mysql.Data库连接MySQL数据库
  • 大一专科,物联网专业,变态成长偏方!
  • MyBatis入门(JDBC规范,MyBatis,连接池,Lombok)【详解】
  • Vue3--数据和方法
  • 网络编程面试题
  • 移动端区分点击和长按
  • 虚拟环境的激活
  • 宏集案例 | 风电滑动轴承齿轮箱内多点温度采集与处理
  • linux 16进制写入
  • 代码随想录算法训练营第60天| Leetcode 84.柱状图中最大的矩形
  • 编写一个简单的cmakelist.txt