【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.rhkb.cn/news/272469.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

我的 4096 创作纪念日

作者:明明如月学长, CSDN 博客专家,大厂高级 Java 工程师,《性能优化方法论》作者、《解锁大厂思维:剖析《阿里巴巴Java开发手册》》、《再学经典:《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

交叉编译qt5.14.2

qt源码下载地址:qt-everywhere-src-5.14.2.tar.xz 1.修改qt-everywhere-src-5.14.2/qtbase/mkspecs/linux-arm-gnueabi-g/qmake.conf文件: # # qmake configuration for building with arm-linux-gnueabi-g #MAKEFILE_GENERATOR UNIX CONFIG …

Spring Boot 多环境配置

Spring Boot 多环境配置 在现代的软件开发中,通常需要将应用程序部署到不同的环境中,如开发环境、生产环境和测试环境等。每个环境可能需要不同的配置参数,例如数据库连接信息、日志级别等。在 Spring Boot 中,我们可以通过简单的…

基于Kronig-Penney能带模型的MATLAB求解与仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于Kronig-Penney能带模型的MATLAB求解与仿真.综合利用 MATLAB提供的求解常微分方程、矩阵行列式、代数表达式化简及绘图等函数 ,可使 Kronig-Penney能带模型分析…

html--彩虹爱心

文章目录 js内容cssreset.min.cssstyle.css html内容 js内容 const colors ["#e03776","#8f3e98","#4687bf","#3bab6f","#f9c25e","#f47274"]; const SVG_NS http://www.w3.org/2000/svg; const SVG_XLINK &q…

数据分析-Pandas数据画箱线图

数据分析-Pandas数据画箱线图 数据分析和处理中,难免会遇到各种数据,那么数据呈现怎样的规律呢?不管金融数据,风控数据,营销数据等等,莫不如此。如何通过图示展示数据的规律? 数据表&#xff…

解决gpt无法发送对话的问题

问题描述 如图,今天登上去发现怎么无法发送消息 解决 可能是cookie问题,重新删除了就行了 cookie删除后,需要重新登录,主题色也重置为原来的白色了

把握机遇:2024年游戏行业春招提前批全攻略

当前,国内游戏行业正处于高速发展期,各大游戏公司对应届毕业生的人才需求十分旺盛。这一趋势不仅为即将步入职场的学生们提供了广阔的就业前景,也为游戏产业的创新和多元化发展注入了新鲜血液。 在这样的大环境下,2024年春季提前批…

七、门控循环单元语言模型(GRU)

门控循环单元(Gated Recurrent Unit,GRU)是 LSTM 的一个稍微简化的变体,通常能够提供同等的效果,并且计算训练的速度更快。 门控循环单元原理图:参考门控循环单元 原理图中各个图形含义: X(t)&a…

训练验证码之ddddocr一个图文视频教学

目录 一、推荐文章视频一、ddddocr环境配置二、字符集验证码训练三、ocr_api_server服务搭建 一、推荐文章视频 文章原文来自这里:训练验证码-4、ddddocr训练字符验证码 , 原文文章末尾有视频介绍更多内容见训练验证码合集 一、ddddocr环境配置 1.打开…

JS直接量及其相关对象

什么是直接量 直接量是指不需要创建对象就可以直接使用的变量。ES中的直接量主要有三种类型:表示字符串的string类型、表示数字的number类型和表示true/false的boolean类型。当我们直接将值赋给变量后,ES就会自动判断其类型,而且当参数发生变…

2024 ssh连接linux ,包括连接被拒的解决方案

这里以windows系统 连接 linux(centOS)为例: 一、如果windows 连接时出现: Permission denied, please try again. 连接被拒绝,做出以下修改: 打开linux - Terminal 输入:cat /etc/ssh/sshd_c…

Canvas笔记05:绘制文本,可视化图表中最常用

hello,我是贝格前端工场,最近在学习canvas,分享一些canvas的一些知识点笔记,本期分享canvas绘制文本的知识,欢迎老铁们一同学习,欢迎关注,如有前端项目可以私信贝格。 Canvas绘制文本是指使用H…

TI IWR6843ISK ROS驱动程序搭建

1、设备准备 1.1 硬件设备 1)TI IWR 6843 ISK 1块 2)Micro USB 数据线 1条 1.2 系统环境 1)VMware Workstation 15 Player 虚拟机 2)Ubuntu18.04 并安装有 ROS1 系统 如若没有安装 ROS 系统,可通过如下指令进行…

解决方案TypeError: string indices must be integers

文章目录 一、现象:二、解决方案 一、现象: PyTorch深度学习框架,运行bert-mini,本地环境是torch1.4-gpu,发现报错显示:TypeError: string indices must be integers 后面报字符问题,百度过找…

ButterKnife实现之Android注解处理器使用教程

ButterKnife实现之Android注解处理器使用教程 1、新建一个注解 1.1、编译时注解 创建注解所需的元注解Retention包含3个不同的值,RetentionPolicy.SOURCE、RetentionPolicy.CLASS、RetentionPolicy.RUNTIME。这3个值代表注解不同的保留策略。 使用RetentionPolic…

flink重温笔记(十三): flink 高级特性和新特性(2)——ProcessFunction API 和 双流 join

Flink学习笔记 前言:今天是学习 flink 的第 13 天啦!学习了 flink 高级特性和新特性之ProcessFunction API 和 双流 join,主要是解决大数据领域数据从数据增量聚合的问题,以及快速变化中的流数据拉宽问题,即变化中多个…

idea连接远程服务器

1. 双击shift,出现如下界面 2. 远程连接 原文来自这个up主的,点击蓝色字体就可以跳转啦! 输入主机ip、用户名、密码,点击Test Connection验证,最后点击ok添加成功 有用的话记得给俺点个赞,靴靴~

出现身份验证错误,无法连接到本地安全机构 顺利解决这个问题希望能帮助大家

出现身份验证错误,无法连接到本地安全机构,远程计算机:XX,这可能是由于密码过期,如果密码已过期请更新密码。 我们可以在系统属性中对远程进行设置,以解决远程桌面无法连接到本地安全机构这一问题。 步骤…

AndroidStudio跑马灯实现

在activity_main.xml中编写如下代码&#xff1a; <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_h…