4

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

 1 year ago
source link: https://blog.51cto.com/u_14202100/10228331
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
  • 一、使用 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
【FFmpeg】ffmpeg 命令行参数 ⑤ ( 使用 ffmpeg 命令提取 音视频 数据 | 保留封装格式 | 保留编码格式 | 重新编码 )_ffmpeg

执行前 , input.mp4 的 封装容器 中的 音频流 和 视频流 格式如下 :

  • 视频流 : 格式是 H.264 / AVC ( Advanced Video Coding ) 编码的 视频流 ;
  • 音频流 : 格式 AAC LC 指的是 AAC ( Advanced Audio Coding ) 编码的音频流 , LC 指的是 特定为 Low Complexity 低复杂性 配置文件 ;
【FFmpeg】ffmpeg 命令行参数 ⑤ ( 使用 ffmpeg 命令提取 音视频 数据 | 保留封装格式 | 保留编码格式 | 重新编码 )_libx264_02

执行上述命令后的 输出文件 中 , 只有 AAC LC 格式的 音频流 数据 , 视频流 数据 被忽略掉了 ;

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

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
【FFmpeg】ffmpeg 命令行参数 ⑤ ( 使用 ffmpeg 命令提取 音视频 数据 | 保留封装格式 | 保留编码格式 | 重新编码 )_音视频_04

输出文件 output.mp4 中 , 只有 AVC 格式的视频流数据 , 音频流数据被忽略掉了 ;

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

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

命令过程 ;

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

转换后的 H.264 格式的 输出文件 中 , 只有一个 AVC 视频流 数据 ;

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

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 ;

命令执行过程 :

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

由于设置了 视频编解码器 , 涉及到 视频重新编码 , 该过程很耗时 , 下面是视频重新编码过程 ;

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

使用 libx264 视频编解码器 重新 编码输出的 H.264 文件 的 视频信息 如下图所示 :

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

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

命令过程 ;

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

执行完毕后 , output.aac 输出文件中 有一个 AAC LC 音频流 数据 , 这就是从 input.mp4 视频文件中提取的音频流数据 ;

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

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

命令过程 ;

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

提取 音频流 数据 并 使用 libmp3lame 编解码器 进行重新编码后的 输出文件信息如下 :

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

Recommend

  • 75
    • www.tuicool.com 5 years ago
    • Cache

    iOS利用FFmpeg parse音视频数据流

    需求 利用FFmpeg解析音视频流,音视频流可以来自一个标准的RTMP的URL或者是一个文件. 通过解析得到音视频流,进一步就可以解码, 然后视频渲染在屏幕上,音频通过扬声器输出. 实现原理 利用FFmpeg框架中libavfo...

  • 58
    • www.tuicool.com 5 years ago
    • Cache

    iOS利用FFmpeg解析音视频数据流

    利用FFmpeg解析音视频流,音视频流可以来自一个标准的RTMP的URL或者是一个文件. 通过解析得到音视频流,进一步就可以解码, 然后视频渲染在屏幕上,音频通过扬声器输出. 实现原理 利用FFmpeg框架中libavformat模块可以通过...

  • 26

    前言 ​ 该篇文章起就正式进入音视频学习了,在进入音视频学习之前我们必须要先学习 FFmpeg 这个库,这个库非常强大,强大到什么地步...

  • 6

    FFmpeg 命令行工具 - 高级特性、Web 音视频、调试和测试 这篇文章讲解 FFmpeg 命令行工具中使用高级特性、Web 音视频、调试和测试相关的功能。

  • 7

    # 工具简介

  • 9

    本文将在上一篇文章FFmpeg的API使用篇(二):转封装(不涉及转码)的基础上,拓展从视频中提取纯音频或者纯视频的功能。依旧不涉及转码操作,仅仅是将音频流提取出来,然后封装成对应的格式。比...

  • 10
    • www.cnblogs.com 3 years ago
    • Cache

    使用ffmpeg进行视频图片提取

    使用ffmpeg进行视频图片提取 环境:windows10-x64 ffmpeg的功能很强大,可以进行音频和视频的处理,这里记录下需要从视频文件提取图片的情...

  • 7

    写在前面# 最近正好有音视频编辑的需求,虽然之前粗略的了解过FFmpeg不过肯定是不够用的,借此重新学习下; 基本概念

  • 4

    了解 FFmpeg 学习 FFmpeg 工具的下载及环境配置 了解 FFmpeg 工具的使用方式 了解 FFmpeg play 的使用方法 了解 FFmpeg paly 的音量设置、窗口设置、音量设置等设置方法 一、了解 FFmpeg ...

  • 6

    1、参数个数控制 parser.add_argument('-i', '--integers', nargs='?', const=100, type=int, help='input a number') 参数nargs: nargs='*' 表示参数可设置0个或多个,参数是一个列表 nargs='+' 表示参数可设置1个或多...

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK