使用FFmpeg将BDMV蓝光光碟格式转为mp4等常见视频格式

前言

为什么会有这篇文章?我个人一直没有接触过蓝光原盘,所以也没想过会有这个需求,4个月前有个人问我,大概看了一下使用VCL Player给她大概解决了,但是效果不是很好,但因为自己也不需要,所以没过多折腾,能用就行,直到最近我也有了相关文件转码的需求,再来深度研究发现偌大一个互联网居然没人写免费的方案???

故经过无数坑后(一搜相关全是各种付费或者流氓软件的推广,本质上都是基于FFmpeg的),有了本篇文章的诞生。

准备材料

科普:什么是FFmpeg?

首先它开源,FFmpeg能够高效处理音视频文件,涵盖以下核心功能:
格式转换:支持多种音视频格式之间的转换,例如将MP4转换为AVI或MP3,满足不同设备和场景的需求。
编码与解码:支持多种音视频编码格式(如H.264、H.265、AAC等),可对音视频进行压缩和解码,适合存储和传输。
剪辑与合并:可对音视频文件进行裁剪、合并,例如提取视频片段或合并音频和视频文件。
滤镜处理:提供丰富的滤镜功能,如调整视频分辨率、裁剪、添加水印、调整色彩等,适合制作创意内容。
流媒体处理:支持实时视频流的采集、编码和推流,可用于直播或网络传输。
元数据处理:能够读取和修改音视频文件的元数据,例如时长、分辨率、帧率等。

科普:蓝光光碟目录结构

一般BDMV的目录结构示例图如下,一般来说仅观看只需要将index.bdmv放入Pot Player或者VCL Player即可:

这些目录、文件分别有什么用?

1. AUXDATA

  • 作用:存放附加数据文件,如音频和字体文件。
  • 具体功能
    • sound.bdmv:存储与HDMV交互式图形流应用相关的声音数据。
    • aaaa.otf:存储用于文本字幕显示的字体信息。
  • 重要性:为蓝光播放提供必要的辅助数据,例如播放菜单中的音效和字幕显示。

2. BACKUP

  • 作用:数据备份文件夹。
  • 具体功能:存放光碟数据的备份,以防止数据损坏或丢失。
  • 重要性:确保蓝光光碟内容的完整性,提供恢复数据的能力。

3. BDJO

  • 作用:存放蓝光交互式Java对象。
  • 具体功能:包含Java程序文件(.bdjo),用于蓝光播放菜单的交互功能。
  • 重要性:支持蓝光光碟的动态菜单和互动功能,是蓝光播放器界面设计的基础。

4. CLIPINF

  • 作用:存放剪辑信息文件。
  • 具体功能:包含.clpi文件,记录与视频流文件(.m2ts)相关的元数据,例如剪辑的时长、分辨率和音视频同步信息。
  • 重要性:确保视频片段的准确播放,为视频流提供必要的控制信息。

5. JAR

  • 作用:存放Java应用程序文件。
  • 具体功能:存储蓝光光碟中用于导航菜单的Java程序。
  • 重要性:支持蓝光播放器的交互式界面,例如菜单导航和场景切换。

6. META

  • 作用:存放元数据文件。
  • 具体功能:存储蓝光光碟的元数据,如电影标题、导演、演员信息等。
  • 重要性:提供电影的详细信息,增强用户观看体验。

7. PLAYLIST

  • 作用:存放播放列表文件。
  • 具体功能:包含.mpls文件,记录电影片段的播放顺序和播放方式,例如正片、预告片或花絮的播放列表。
  • 重要性:定义蓝光光碟中内容的播放逻辑,用户可以通过播放列表选择不同的观影内容。

8. STREAM

  • 作用:存放视频和音频流文件。
  • 具体功能:包含.m2ts文件,这些文件是蓝光光碟中的实际音视频数据,支持高清和超高清视频播放。
  • 重要性:蓝光光碟的核心内容所在,直接决定影片的画质和音质。

9. index.bdmv

  • 作用:索引文件。
  • 具体功能:记录BDMV文件夹的目录结构,包括播放列表、剪辑和菜单的引用信息。
  • 重要性:作为蓝光光碟的入口文件,指导播放器读取其他文件和文件夹。

10. MovieObject.bdmv

  • 作用:存放电影对象数据。
  • 具体功能:存储与蓝光光碟播放相关的导航命令和程序逻辑,例如播放列表的调用和菜单的显示。
  • 重要性:为蓝光播放提供必要的控制逻辑,支持复杂的播放功能。

FFmpeg工具下载【需准备的软件】

FFmpeg转码神器,可以使用FFmpeg-CUI(命令行工具)或者FFmpeg-GUI(图形化工具),我这里建议使用GitHub上很多大佬开发的带GUI工具,因为简单易上手,可视化太棒啦,没必要为了一些装杯而使用命令行,图形化也占不了多大。

这里推荐俩款基于FFmpeg的可视化(GUI)开源软件(下载自行去Github Releases下载最新版):

FFmpeg-CUI(无可视化页面,需自行配置环境变量等)官网:点击跳转

以上工具三选一,选择适合自己的就行了

转码教程(MediaMux为例)

1.打开软件, 导入BDMV光盘/STREAM文件夹内的m2ts文件(可以用支持播放的软件打开预览确定一下你需要转码的视频是那些,一般这里面包含很多) 或者直接将其拖入文件区域也可以导入。

目录结构示例图

导入文件

2.导入文件后,点击“容器”(这里感觉应该是翻译有问题?)实际上是选择目标格式,也就是你希望导出的视频是什么格式的,常见的MP4、MKV都有。其他的选项如分辨率那些可以保持默认,不选择软件会根据源视频内容输出,选择完毕相关设置后点击开始封装。等待进度条结束即可,左下角有剩余时间等显示。

转码

3.结束后软件左下角会显示完成,同时你导入的这个m2ts后缀视频所在的同级目录下会生成一个和源文件名字一样,但是后缀不一样的新视频文件,这个后后缀根据你上一步选择的后缀而异,博主这里默认MKV电影文件后缀,故后缀是MKV。

完成

目前后记:根据自己需求批量或者单独转换即可,其实就是普通的视频转码,只是没有接触过这个东西,网上也没啥资料误导了……