【视频流】mkv与mp4区别,以及利用ffmpeg转换

【视频流】mkv与mp4区别,以及利用ffmpeg转换

Fre5h1nd Lv5

💡简介

在日常工作中,我们经常需要录制会议并将其转化为文字。然而,录制的视频文件通常是mkv格式,而飞书妙记仅支持mp4格式。这篇文章将探讨mkv与mp4的区别,并介绍如何使用ffmpeg在mac上进行格式转换。此外,我们还会简要探讨ffmpeg的工作原理。

🖼️背景

最近经常有会议录屏及转文字需求,但发现录屏生成的文字总是mkv格式,而好用的飞书妙记却仅支持mp4格式。所以首先第一个好奇的问题是:mkv与mp4有什么区别?
其次,折腾了很久之后发现 mac 上可以直接用 ffmpeg 转换格式,所以这篇文章也会记录一下如何使用 ffmpeg 转换视频格式。此外第二个好奇的问题是:ffmpeg 的原理是什么?

🧠思路

为了满足将mkv格式转换为mp4格式的需求,我们需要了解以下几点:

  1. mkv与mp4的区别。
  2. 如何在mac上安装并使用ffmpeg进行格式转换。
  3. ffmpeg的基本工作原理。

🔨解决

mkv与mp4的区别

总结而言:MP4有更好的兼容性,但视频质量比MKV略差;MKV有着更好的质量,但是文件大小更大,且兼容性略差。[1]
mkv(Matroska Video File)和mp4(MPEG-4 Part 14)都是常见的视频文件格式。它们的主要区别在于:

  • 容器格式:mkv是一个开放标准的多媒体容器格式,可以包含无限数量的视频、音频、图片或字幕轨道。mp4是由国际标准化组织(ISO)定义的多媒体容器格式,广泛用于视频播放和流媒体。
  • 兼容性:mp4格式在各种设备和平台上具有更好的兼容性,而mkv格式则更灵活,支持更多的编码格式和功能。

mkv

  • 简介:MKV(Matroska Video File)是一种新的多媒体封装格式,这个封装格式可把多种不同编码的视频16条或以上不同格式的音频语言不同的字幕封装到一个Matroska Media档内。Matroska同时还可以提供非常好的交互功能,而且比MPEG的方便、强大。[1]
  • 特点:Matroska最大的特点就是能容纳多种不同类型编码的视频、音频及字幕流,甚至囊括了RealMedia及QuickTime这类流媒体,可以说是对传统媒体封装格式的一次大颠覆!它现在几乎变成了一个万能的媒体容器。另外,MKV格式也更适合需要压缩大型视频文件的情况,因为它可以保持高质量并同时减小文件大小。
  • 原理:Matroska所谓的封装AVI、RM、MOV等媒体,并不是简单将它们不加改变的合并到Matroska中,而是将它们的音视频流进行了重新组织。
  • 播放:播放Matroska这类格式并不需要专用的播放器,任何DirectShow的播放器都可以播放MKV、OGM、MP4文件,仅需安装相应 Matroska 解码分离器插件即可。现有的播放器要播放MKV格式仅需安装相应的分离器插件即可。
  • 其它补充材料:mkv文件细节解析5

mp4

  • 简介:MPEG(Moving Picture Experts Group),是一个国际标准组织(IS0)认可的媒体封装形式,受到大部份机器的支持。其储存方式多样,可以适应不同的应用环境。MPEG的控制功能丰富,可以有多个视频(即角度)、音轨、字幕(位图字幕)等等。
  • 特点:MP4是一种数字多媒体容器格式,用于存储音频、视频、字幕和图像。它是MPEG-4标准的一部分,广泛用于存储数字音频和视频流,以及其他数据,如静态图像和文本。
  • 原理:MP4格式是由国际标准化组织(ISO)定义的多媒体容器格式,它采用了一种层次化的结构,可以存储多种编码格式的视频和音频数据。
  • 播放:MP4格式的视频几乎可以在所有设备和平台的播放器上播放,包括计算机、手机、平板电脑、电视等。尤其是支持所有的移动设备,而 MKV 则几乎不被所有的移动设备支持。

使用ffmpeg转换格式

在mac上使用ffmpeg转换视频格式巨巨巨简单。以下是具体步骤:

  1. 安装ffmpeg:可以通过Homebrew安装ffmpeg[2]。打开终端并输入以下命令:
    1
    brew install ffmpeg
  2. 转换视频格式:安装完成后,可以使用以下命令将mkv文件转换为mp4文件:
    1
    ffmpeg -i ${input}.mkv -codec copy ${output}.mp4
    这里,-i参数指定输入文件,-codec copy参数表示直接复制视频和音频流而不进行重新编码。inputoutput分别为输入和输出文件的名称。

ffmpeg的原理

ffmpeg是一个开源的多媒体框架,可以用来录制、转换和流式传输音视频。[3]

  • 简介:FFmpeg是一个开源免费跨平台的视频和音频流方案,属于自由软件,采用LGPL或GPL许可证(依据你选择的组件)。它提供了录制、转换以及流化音视频的完整解决方案。
  • 特点:它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多codec都是从头开发的。FFmpeg在Linux平台下开发,但它同样也可以在其它操作系统环境中编译运行,包括Windows、Mac OS X等。
  • 组成:FFmpeg项目由以下几部分组成:[3,4]
    • FFMpeg:视频文件转换命令行工具,也支持经过实时电视卡抓取和编码成视频文件。
    • FFServer:基于HTTP(RTSP正在开发中)用于实时广播的多媒体服务器,也支持时间平移.
    • FFplay:用SDL和FFmpeg库开发的一个简单的媒体播放器.
    • libavcodec:一个包含了所有FFmpeg音视频编解码器的库.为了保证最优性能和高可复用性,大多数编解码器从头开发的.
    • libavformat:一个包含了所有的普通音视格式的解析器和产生器的库,用于是如何输出的封装和解封装.
    • libavfilter:提供音视频效果过滤功能,可以对音视频流进行各种操作。例如,裁剪、旋转、改变亮度和添加水印等。
    • libavdevice:允许FFmpeg与各种输入输出设备交互,例如摄像头、录音设备等。
    • libswscale:用于图像缩放、颜色空间转换等操作,支持不同分辨率和像素格式之间的转换。
    • libswresample:用于音频重采样,支持音频流的转换和处理。
  • 工作原理:FFmpeg的工作原理非常复杂,但简单来说,[4]
    • 输入:使用libavformat读取输入文件的容器格式,解析出音视频流的信息(包括编码格式、时长、分辨率等)。
    • 解码:通过libavcodec解码音视频流,将输入的多媒体文件解码为原始音频和视频帧数据流。
    • 处理:对数据流进行各种处理,如剪辑、滤镜、转码等。例如可选地,使用libavfilter进行各种处理,例如裁剪、缩放、添加特效等。如果进行转码操作,FFmpeg会根据目标格式设置相应的编码参数和选项。
    • 编码:通过libavcodec,将经过处理后的数据重新编码成目标格式。
    • 输出:使用libavformat将编码后的视频和音频流封装到目标媒体格式中。

🏥反思

通过这次学习和实践,我们不仅了解了mkv与mp4的区别,还掌握了使用ffmpeg进行视频格式转换的方法。这为我们在日常工作中处理视频文件提供了极大的便利。同时,我们也对ffmpeg的工作原理有了初步的认识,为进一步深入学习打下了基础。
值得未来深入阅读的材料:



  • 希望这篇博客对你有帮助!如果你有任何问题或需要进一步的帮助,请随时提问。
  • 如果你喜欢这篇文章,欢迎动动小手给我一个follow或star。

🗺参考文献

[1] 什么是MKV格式?和MP4什么区别? - 麦琪的礼物的文章 - 知乎

[2] MacOS安装FFmpeg

[3] FFmpeg介绍及参数详细说明

[4] FFMPEG原理与使用 - 中国电信天翼云的文章 - 知乎

[5] ffmpeg mkv 文件解析

[6] FFmpeg 工作原理和常用命令

  • 标题: 【视频流】mkv与mp4区别,以及利用ffmpeg转换
  • 作者: Fre5h1nd
  • 创建于 : 2025-03-23 21:33:35
  • 更新于 : 2025-03-25 16:28:24
  • 链接: https://freshwlnd.github.io/2025/03/23/mkv-mp4-ffmpeg/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论