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

💡简介
在日常工作中,我们经常需要录制会议并将其转化为文字。然而,录制的视频文件通常是mkv格式,而飞书妙记仅支持mp4格式。这篇文章将探讨mkv与mp4的区别,并介绍如何使用ffmpeg在mac上进行格式转换。此外,我们还会简要探讨ffmpeg的工作原理。
🖼️背景
最近经常有会议录屏及转文字需求,但发现录屏生成的文字总是mkv格式,而好用的飞书妙记却仅支持mp4格式。所以首先第一个好奇的问题是:mkv与mp4有什么区别?
其次,折腾了很久之后发现 mac 上可以直接用 ffmpeg 转换格式,所以这篇文章也会记录一下如何使用 ffmpeg 转换视频格式。此外第二个好奇的问题是:ffmpeg 的原理是什么?
🧠思路
为了满足将mkv格式转换为mp4格式的需求,我们需要了解以下几点:
- mkv与mp4的区别。
- 如何在mac上安装并使用ffmpeg进行格式转换。
- 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转换视频格式巨巨巨简单。以下是具体步骤:
- 安装ffmpeg:可以通过Homebrew安装ffmpeg[2]。打开终端并输入以下命令:
1
brew install ffmpeg
- 转换视频格式:安装完成后,可以使用以下命令将mkv文件转换为mp4文件:这里,
1
ffmpeg -i ${input}.mkv -codec copy ${output}.mp4
-i
参数指定输入文件,-codec copy
参数表示直接复制视频和音频流而不进行重新编码。input
和output
分别为输入和输出文件的名称。
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什么区别? - 麦琪的礼物的文章 - 知乎
- 标题: 【视频流】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 进行许可。
推荐阅读
评论