【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.mzph.cn/news/733187.shtml

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

相关文章

如何批量加密U盘?U盘如何批量设置密码?

但U盘数量较多时,加密U盘的工作就会非常麻烦。这时你需要使用U盘批量加密工具。那么,如何批量加密U盘? 批量加密U盘 想要实现U盘批量加密,我们需要使用专业的U盘批量加密工具,如U盘内存卡批量只读加密专家。它支持批量…

RabbitMQ发布确认高级版

1.前言 在生产环境中由于一些不明原因,导致 RabbitMQ 重启,在 RabbitMQ 重启期间生产者消息投递失败, 导致消息丢失,需要手动处理和恢复。于是,我们开始思考,如何才能进行 RabbitMQ 的消息可靠投递呢&…

代码随想录训练营第41天 | 动态规划:01背包理论基础、动态规划:01背包理论基础(滚动数组)、LeetCode 416.分割等和子集

动态规划:01背包理论基础 文章讲解:代码随想录(programmercarl.com) 视频讲解:带你学透0-1背包问题!_哔哩哔哩_bilibili 动态规划:01背包理论基础(滚动数组) 文章讲解:代码随想录(…

Cocos Creator 2d光照

godot游戏引擎是有2d光照的,用起来感觉还是很强大的,不知道他是怎么搞的,有时间看看他们怎么实现的。 之前一直以为cocos社区里面没有2d光照的实现,偶然看到2d实现的具体逻辑,现在整理如下, 一&#xff1…

【java】22:try-catch 异常处理

try-catch 方式处理异常说明 public static void main(String[] args) { int num1 10; int num2 0; try { int res num1 / num2; } catch (Exception e) { System.out.println(e.getMessage()); } } 注意事项 1)如果异常发生了,则异常发生后面的代码不会执行&…

前后端分离项目Docker部署指南(下)

目录 前言: 一.安装nginx 创建目录 上传nginx.conf至/data/nginx/conf文件夹中 运行启动容器 上传静态资源文件 ​编辑 访问结果 前言: 在上一篇博客中,我们深入探讨了如何使用Docker部署一个前后端分离的项目中的后端部分。我们构建…

基于qt的图书管理系统----05其他优化

参考b站:视频连接 源码github:github 目录 1 优化借阅记录显示2 时间显示为年月日3 注册接口 1 优化借阅记录显示 现在只能显示部分信息,把接的书名和人的信息全部显示 在sql语句里替换为这一句即可实现查询相关联的所有信息 QString str…

2024 年 AI 辅助研发发展与趋势研究

引言 这几年,人工智能(AI)技术火得不行,它渗透到了我们生活的方方面面。从帮助我们识别图片、理解语音,到推荐我们喜欢的内容,甚至自动驾驶汽车,AI都在大显身手。特别是在研发领域,…

蓝桥杯倒计时 36天-DFS练习

文章目录 飞机降落仙境诅咒小怂爱水洼串变换 飞机降落 思路&#xff1a;贪心暴搜。 #include<bits/stdc.h>using namespace std; const int N 10; int t,n; //这题 N 比较小&#xff0c;可以用暴力搜搜复杂度是 TN*N! struct plane{int t,d,l; }p[N]; bool vis[N];//用…

基于springboot实现大学外卖管理系统项目【项目源码+论文说明】

基于springboot实现大学外卖管理系统演示 摘要 如今&#xff0c;信息化不断的高速发展&#xff0c;社会也跟着不断进步&#xff0c;现今的社会&#xff0c;各种工作都离不开信息化技术&#xff0c;更离不开电脑的管理。信息化技术也越来越渗透到各小型的企业和公司中&#xff…

Java8 CompletableFuture异步编程-进阶篇

&#x1f3f7;️个人主页&#xff1a;牵着猫散步的鼠鼠 &#x1f3f7;️系列专栏&#xff1a;Java全栈-专栏 &#x1f3f7;️个人学习笔记&#xff0c;若有缺误&#xff0c;欢迎评论区指正 前言 我们在前面文章讲解了CompletableFuture这个异步编程类的基本用法&#xff0c;…

Web Worker:JavaScript的后台任务解决方案

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

SpringBoot项目没有启动按键

问题一&#xff1a; pom文件正常&#xff0c;但是springboot包报红&#xff0c;同时Plugin ‘org.springframework.boot:spring-boot-maven-plugin:‘ not found报红 解决办法&#xff1a; 无法识别使用哪个版本的 spring-boot-maven-plugin 包 <build><plugins>&…

javase day01笔记

第一天课堂笔记 Java第三代高级语言中的面向对象的语言 b/s 浏览器/服务器c/s 客户端/服务端 1991年詹姆斯高斯林在sun公司开发的Java 常用的dos命令 磁盘操作系统&#xff1a;dos win &#xff0b; r -》 cmd dos命令 切换盘符&#xff1a;直接输入对应盘符目录操作&#x…

【C++进阶】哈希的应用 --- 布隆过滤器

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前学习C和算法 ✈️专栏&#xff1a;C航路 &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章对你有帮助的话 欢迎 评论&#x1f4ac; 点赞&#x1…

面试准备不充分,被Java守护线程干懵了,面试官主打一个东西没用但你得会

写在开头 面试官&#xff1a;小伙子请聊一聊Java中的精灵线程&#xff1f; 我&#xff1a;什么&#xff1f;精灵线程&#xff1f;啥时候精灵线程&#xff1f; 面试官&#xff1a;精灵线程没听过&#xff1f;那守护线程呢&#xff1f; 我&#xff1a;守护线程知道&#xff0c;就…

计算机软件文档编制规范GB_T 8567-2006

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 计算机软件文档编制规范概述 计算机软件文档编制规范&#xff08;Specification for computer software documentation&#xff09; 由TC28&#xff08;全国信息技术标准化技…

《HTTPS协议》

文章目录 一、什么是HTTPS协议二、理解关键字三、为什么要加密四、常见的加密方式1.对称加密2.非对称加密 五、如何进行加密&#xff1f;1.只使用对称加密2.只使用非对称加密3.双方都使用非对称加密4.使用对称加密非对称加密5.对称加密非对称加密CA证书认证5.1数据摘要&#xf…

GPT-4-turbo还是大家心中第一!Claude 3竞技场人类投票成绩出炉:仅居第三

Claude 3的竞技场排名终于揭晓了&#xff1a; 在仅仅3天的时间里&#xff0c;20000张投票使得排名的流量达到了前所未有的高度。 最后&#xff0c;Claude 3的"大杯"模型Opus以1233的分数赢得了胜利&#xff0c;成为了第一个能和GPT-4-Turbo匹敌的选手。 "中杯…

QGridLayout网格布局和QVBoxLayout垂直布局有着非常大的差别

QGridLayout网格布局&#xff1a;1.把这块控件划分成一个个的 单元格 2.把你的控件填充进入 单元格 3.这些有关限制大小的函数接口统统失效 setMaximumWidth&#xff08;&#xff09; setMinimumWidth() setPolicySize()图示&#xff1a;我是用的网格布局&#xff0c;左边放QT…