当前位置: 首页 > 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 编解码器 进行重新编码后的 输出文件信息如下 :

在这里插入图片描述

相关文章:

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

文章目录 一、使用 ffmpeg 命令提取 音视频 数据1、提取音频数据 - 保留封装格式2、提取视频数据 - 保留封装格式3、提取视频数据 - 保留编码格式4、提取视频数据 - 重新编码5、提取音频数据 - 保留编码格式6、提取音频数据 - 重新编码 一、使用 ffmpeg 命令提取 音视频 数据 1…...

JMeter 二次开发之环境准备

通过JMeter二次开发,可以充分发挥JMeter的潜力,定制化和扩展工具的能力以满足具体需求。无论是开发自定义插件、函数二次开发还是定制UI,深入学习和掌握JMeter的二次开发技术,将为接口功能测试/接口性能测试工作带来更多的便利和效…...

Laravel Class ‘Facade\Ignition\IgnitionServiceProvider‘ not found 解决

Laravel Class Facade\Ignition\IgnitionServiceProvider not found 问题解决 问题 在使用laravel 更新本地依赖环境时,出现报错,如下: 解决 这时候需要更新本地的composer,然后在更新本地依赖环境。 命令如下: co…...

DNS 技巧与窍门

简介 在本文中,您将学习三种可以使用 DNS 完成的技巧。如果您曾经进行过任何与 DNS 配置相关的工作,这些小技巧可能会帮助您更快地完成工作流程。您将学习一些在终端中使用的命令和处理 DNS 数据的方法,比如如何检查当前的域名服务器。完成后…...

第2章 信息技术基础

本章学习要点 全面了解医院信息系统建设所涉及的主要信息技术以及这些技术的应用情况。 计算机与网络、信息技术与信息系统、数字媒体与数据存储技术、条形码(二维码)、RFID技术、云计算、APP技术 1.XML 可扩展标记语言与Access,Oracle和SQL Server等数据库不同…...

uniapp 微信小程序和h5处理文件(pdf)下载+保存到本地+预览功能

uniapp实现微信小程序下载资源功能和h5有很大的不同,后台需返回blob文件流 1.微信小程序实现下载资源功能 步骤1:下载文件 uni.downloadFile({url:url,//调接口返回urlsuccess:(res)>{uni.hideLoading();if(res.statusCode200){var tempFilePath …...

Linux从0到1——Linux第一个小程序:进度条

Linux从0到1——Linux第一个小程序&#xff1a;进度条 1. 输出缓冲区2. 回车和换行的本质3. 实现进度条3.1 简单原理版本3.2 实际工程版本 1. 输出缓冲区 1. 小实验&#xff1a; 编写一个test.c文件&#xff0c;&#xff1a; #include <stdio.h> #include <unistd.h…...

软件工程师,是时候了解下Rust编程语言了

背景 2024年年初&#xff0c;美国政府发布了一份网络安全报告&#xff0c;呼吁软件开发人员停止使用容易出现内存安全漏洞的编程语言&#xff0c;比如&#xff1a;C和C&#xff0c;转而使用内存安全的编程语言。这份报告由美国网络空间总监办公室 (ONCD) 发布&#xff0c;旨在落…...

SSL---VPN

文章目录 目录 一.SSL-VPN概述 优点 二.SSL协议的工作原理 三.虚拟网关技术 用户认证方式 本地认证 服务器认证&#xff1a; 证书匿名认证 Web代理 Web-link和Web改写 端口转发 网络扩展&#xff08;允许UDP协议&#xff09; 总结 一.SSL-VPN概述 SLL VPN是一种基于HTTPS&am…...

Chrome 跨域问题CORS 分析

先叠个甲,有错误,望沟通指正! 文章目录 1.什么是跨域报错2.为什么postman可以,浏览器访问就不行?根本原因是什么?2.1浏览器是依据什么来报错跨域的? 3.常规解决方案的分析方案1.通过代理解决方案2.被请求的B域的服务端开启Access-Control-Allow-Origin返回头的支持方案3.通…...

GPU性能测试中的张量和矩阵运算

正文共&#xff1a;888 字 7 图&#xff0c;预估阅读时间&#xff1a;1 分钟 前面我们使用PyTorch将Tesla M4跑起来之后&#xff08;成了&#xff01;Tesla M4Windows 10AnacondaCUDA 11.8cuDNNPython 3.11&#xff09;&#xff0c;一直有个问题&#xff0c;那就是显存容量的问…...

Linux运维_Bash脚本_编译安装FreeRDP-3.3.0

Linux运维_Bash脚本_编译安装FreeRDP-3.3.0 Bash (Bourne Again Shell) 是一个解释器&#xff0c;负责处理 Unix 系统命令行上的命令。它是由 Brian Fox 编写的免费软件&#xff0c;并于 1989 年发布的免费软件&#xff0c;作为 Sh (Bourne Shell) 的替代品。 您可以在 Linux…...

CMake官方教程4--使用表达式生成器

1. 使用表达式生成器产生警告 CMakeList.txt cmake_minimum_required(VERSION 3.15)project(Tutorial VERSION 1.0)add_library(tutorial_compiler_flags INTERFACE) target_compile_features(tutorial_compiler_flags INTERFACE cxx_std_11)set(gcc_like_cxx "$<COM…...

git for windows

记录&#xff0c;git svn混用&#xff0c;检出代码时出错及解决方案&#xff0c; 执行命令&#xff1a; git svn clone svn_project_url 报错&#xff1a; certificate problem.(R)eject,accept (t)emporarily or accept (p)ermanently 解决&#xff1a; 在弹框中 输入P …...

C++实验 面向对象编程

一、实验目的&#xff1a; 掌握类中静态成员的定义方法&#xff0c;初始化方法&#xff0c;使用方法&#xff1b; 掌握类的友元说明方法&#xff0c;理解友元的使用特点 二、实验内容&#xff1a; 1、编写程序&#xff0c;统计某旅馆住宿客人的总数&#xff0c;要求输入客人…...

VC++ 设置网卡接口MTU大小

在 Windows C/C 之中一共有三种方法可以设置网卡的MTU大小。 方法一&#xff1a; SetIpInterfaceEntry 法 static bool SetInterfaceMtu2(int interface_index, int mtu) noexcept{PIP_ADAPTER_ADDRESSES pAddresses NULL;ULONG ulBufLen 0;GetAdaptersAddresses(AF_UNSPEC…...

dpdk-19.11 对向量指令的使用情况分析

不同向量指令识别关键字 __m128i sse uint64x2_t neon __m256i avx2 __m512i avx512 vector altivec dpdk 向量收发包函数 支持 arm neno 向量收发包函数的 pmd 驱动 bnxt hns3 i40e ixgbe mlx5 virtio 支持 sse 向量收发包函数的 pmd 驱动 axgbe hinic fm10k bnxt i40e …...

使用CIP采集欧姆龙EtherNet/IP从入门到精通

本文将会从以下几个方面介绍 1.CIP是什么 2.EtherNet/IP通信是什么 3.CIP通信报文解析 4.使用CIP常用的方法和功能介绍&#xff08;UCMM&#xff09; 5.自己封装了一个类&#xff0c;只要知道标签名称&#xff0c;和数据类型即可读写数据 6.demo展示 1.CIP是什么 CIP通信…...

企业如何高效管理微信里的客户?

对于企业来说&#xff0c;懂得高效管理微信列表的客户是非常重要的一件事&#xff0c;只有把客户管理好了&#xff0c;才能更好地提高客户的满意度和忠诚度&#xff0c;我们的销售业务才能顺利进行。 那么&#xff0c;应该怎样管理才能算是高效管理呢&#xff1f;下面就给大家…...

怎么在windows系统上查看kylinos的md5、sha1、sha256值

背景 当前信创行业正如火如荼进行中,当下载kylinos镜像到windows系统下,如何核对镜像是否有损坏,确保文件不被篡改,需要使用工具计算md5、sha1、sha256、sha512值,并与出库邮件中的md5比对。 QuickHash GUI软件简介 QuickHash GUI是一款开源代码的哈希工具,注意哈希能够…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引&#xff0c;可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度&#xff08;创建索引的主要原因&#xff09;。3. 可以加速表和表之间的连接&#xff0c;实现数据的参考完整性。4. 可以在查询过程中&#xff0c;…...

聊聊 Pulsar:Producer 源码解析

一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台&#xff0c;以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中&#xff0c;Producer&#xff08;生产者&#xff09; 是连接客户端应用与消息队列的第一步。生产者…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)

服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

cf2117E

原题链接&#xff1a;https://codeforces.com/contest/2117/problem/E 题目背景&#xff1a; 给定两个数组a,b&#xff0c;可以执行多次以下操作&#xff1a;选择 i (1 < i < n - 1)&#xff0c;并设置 或&#xff0c;也可以在执行上述操作前执行一次删除任意 和 。求…...

【Java_EE】Spring MVC

目录 Spring Web MVC ​编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 ​编辑参数重命名 RequestParam ​编辑​编辑传递集合 RequestParam 传递JSON数据 ​编辑RequestBody ​…...

【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)

LeetCode 3309. 连接二进制表示可形成的最大数值&#xff08;中等&#xff09; 题目描述解题思路Java代码 题目描述 题目链接&#xff1a;LeetCode 3309. 连接二进制表示可形成的最大数值&#xff08;中等&#xff09; 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...

消防一体化安全管控平台:构建消防“一张图”和APP统一管理

在城市的某个角落&#xff0c;一场突如其来的火灾打破了平静。熊熊烈火迅速蔓延&#xff0c;滚滚浓烟弥漫开来&#xff0c;周围群众的生命财产安全受到严重威胁。就在这千钧一发之际&#xff0c;消防救援队伍迅速行动&#xff0c;而豪越科技消防一体化安全管控平台构建的消防“…...

解析两阶段提交与三阶段提交的核心差异及MySQL实现方案

引言 在分布式系统的事务处理中&#xff0c;如何保障跨节点数据操作的一致性始终是核心挑战。经典的两阶段提交协议&#xff08;2PC&#xff09;通过准备阶段与提交阶段的协调机制&#xff0c;以同步决策模式确保事务原子性。其改进版本三阶段提交协议&#xff08;3PC&#xf…...

TJCTF 2025

还以为是天津的。这个比较容易&#xff0c;虽然绕了点弯&#xff0c;可还是把CP AK了&#xff0c;不过我会的别人也会&#xff0c;还是没啥名次。记录一下吧。 Crypto bacon-bits with open(flag.txt) as f: flag f.read().strip() with open(text.txt) as t: text t.read…...

STM32标准库-ADC数模转换器

文章目录 一、ADC1.1简介1. 2逐次逼近型ADC1.3ADC框图1.4ADC基本结构1.4.1 信号 “上车点”&#xff1a;输入模块&#xff08;GPIO、温度、V_REFINT&#xff09;1.4.2 信号 “调度站”&#xff1a;多路开关1.4.3 信号 “加工厂”&#xff1a;ADC 转换器&#xff08;规则组 注入…...