【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第一个小程序:进度条 1. 输出缓冲区2. 回车和换行的本质3. 实现进度条3.1 简单原理版本3.2 实际工程版本 1. 输出缓冲区 1. 小实验: 编写一个test.c文件,: #include <stdio.h> #include <unistd.h…...
软件工程师,是时候了解下Rust编程语言了
背景 2024年年初,美国政府发布了一份网络安全报告,呼吁软件开发人员停止使用容易出现内存安全漏洞的编程语言,比如:C和C,转而使用内存安全的编程语言。这份报告由美国网络空间总监办公室 (ONCD) 发布,旨在落…...
SSL---VPN
文章目录 目录 一.SSL-VPN概述 优点 二.SSL协议的工作原理 三.虚拟网关技术 用户认证方式 本地认证 服务器认证: 证书匿名认证 Web代理 Web-link和Web改写 端口转发 网络扩展(允许UDP协议) 总结 一.SSL-VPN概述 SLL VPN是一种基于HTTPS&am…...
Chrome 跨域问题CORS 分析
先叠个甲,有错误,望沟通指正! 文章目录 1.什么是跨域报错2.为什么postman可以,浏览器访问就不行?根本原因是什么?2.1浏览器是依据什么来报错跨域的? 3.常规解决方案的分析方案1.通过代理解决方案2.被请求的B域的服务端开启Access-Control-Allow-Origin返回头的支持方案3.通…...
GPU性能测试中的张量和矩阵运算
正文共:888 字 7 图,预估阅读时间:1 分钟 前面我们使用PyTorch将Tesla M4跑起来之后(成了!Tesla M4Windows 10AnacondaCUDA 11.8cuDNNPython 3.11),一直有个问题,那就是显存容量的问…...
Linux运维_Bash脚本_编译安装FreeRDP-3.3.0
Linux运维_Bash脚本_编译安装FreeRDP-3.3.0 Bash (Bourne Again Shell) 是一个解释器,负责处理 Unix 系统命令行上的命令。它是由 Brian Fox 编写的免费软件,并于 1989 年发布的免费软件,作为 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
记录,git svn混用,检出代码时出错及解决方案, 执行命令: git svn clone svn_project_url 报错: certificate problem.(R)eject,accept (t)emporarily or accept (p)ermanently 解决: 在弹框中 输入P …...
C++实验 面向对象编程
一、实验目的: 掌握类中静态成员的定义方法,初始化方法,使用方法; 掌握类的友元说明方法,理解友元的使用特点 二、实验内容: 1、编写程序,统计某旅馆住宿客人的总数,要求输入客人…...
VC++ 设置网卡接口MTU大小
在 Windows C/C 之中一共有三种方法可以设置网卡的MTU大小。 方法一: 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常用的方法和功能介绍(UCMM) 5.自己封装了一个类,只要知道标签名称,和数据类型即可读写数据 6.demo展示 1.CIP是什么 CIP通信…...
企业如何高效管理微信里的客户?
对于企业来说,懂得高效管理微信列表的客户是非常重要的一件事,只有把客户管理好了,才能更好地提高客户的满意度和忠诚度,我们的销售业务才能顺利进行。 那么,应该怎样管理才能算是高效管理呢?下面就给大家…...
怎么在windows系统上查看kylinos的md5、sha1、sha256值
背景 当前信创行业正如火如荼进行中,当下载kylinos镜像到windows系统下,如何核对镜像是否有损坏,确保文件不被篡改,需要使用工具计算md5、sha1、sha256、sha512值,并与出库邮件中的md5比对。 QuickHash GUI软件简介 QuickHash GUI是一款开源代码的哈希工具,注意哈希能够…...
边缘计算医疗风险自查APP开发方案
核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...
ssc377d修改flash分区大小
1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...
《Playwright:微软的自动化测试工具详解》
Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...
基于当前项目通过npm包形式暴露公共组件
1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹,并新增内容 3.创建package文件夹...
DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
反射获取方法和属性
Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...
数据库分批入库
今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
如何在最短时间内提升打ctf(web)的水平?
刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...
AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...
