如何使用ffmpeg将BDMV(m2ts)转换成MKV、MP4等其他格式的文件

news2024/11/15 12:42:18

BDMV 是蓝光碟使用的格式。这种格式没有办法使用播放软件播放,必须要用硬盘播放器,也就是专门的设备。但是最经典的 ffmpeg 可以将其转换成其他格式,并且保持相同的码率和清晰度,这样就可以很方便的查看了。

本文使用 macOS 进行演示,但是会介绍如何一些其他平台的方法和操作。

一般 BDMV 下载格式是一个 ISO,加载打开之后内容大致如下:

请添加图片描述

如果你使用的是终端,那么(如果你下下来的 ISO 加载后不叫“BDROM”,那么需要进行修改的):

## macOS
$ cd /Volumes/BDROM/

## Linux
$ cd /dev/BDROM/

## WSL
$ cd /mnt/BDROM/

## Windows(PowerShell)
$ cd BDROM:\

如果你看过 DVD 或者蓝光碟,会知道光盘播放的时候并不是插进去就直接开始播放了,而是会有选择界面,以及花絮、音效、广告等内容(不过零几年那时候我看盗版 DVD 有一些是直接开始播放了),如果是电视剧的话还会有每集的选择界面。所以这时候我们要找到电影的m2ts文件来进行转换,电视剧的话则会是多个m2ts文件。如果你需要花絮等内容还请按照后面的方法进行转换。

上图中的 BDMV 其实是一个包,右键选择“显示包内容”即可查看,如下:
请添加图片描述

请添加图片描述

然后进入“STREAM”文件夹。

上面的操作在终端中如下,不同平台都一样:

## macOS
## Linux
## WSL
## Windows(PowerShell)
$ cd BDMV/STREAM/

然后显示内容如下:

请添加图片描述

一般来说第一个就是我们需要的m2ts文件,看文件大小也能看出来。一般是00000.m2ts,不过也有可能是00001.m2ts,比如说上图。

这里需要强调一点,如果是 macOS 用户千万别直接空格检查这些文件,因为电影的m2ts如果直接查看是一段杂音视频,大晚上或者安静的时候很容易吓一跳。建议看文件大小即可。如下:

请添加图片描述

可以看到就第一个最大,占了大部分空间。

如果是电视剧的话会有多个差不多大的文件,那么最好使用ffprobe来看看这个文件:

Input #0, mpegts, from '/Volumes/BDROM/BDMV/STREAM/00001.m2ts':
  Duration: 01:59:09.15, start: 1.996000, bitrate: 42645 kb/s
  Program 1 
  Stream #0:0[0x1011]: Video: h264 (High) (HDMV / 0x564D4448), yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 90k tbn
  Stream #0:1[0x1100]: Audio: pcm_bluray (HDMV / 0x564D4448), 48000 Hz, stereo, s32 (24 bit), 2304 kb/s
  Stream #0:2[0x1101]: Audio: dts (DTS-HD MA) ([134][0][0][0] / 0x0086), 48000 Hz, 5.1(side), s32p (24 bit)
  Stream #0:3[0x1102]: Audio: dts (DTS) ([130][0][0][0] / 0x0082), 48000 Hz, 5.1(side), fltp, 768 kb/s
  Stream #0:4[0x1103]: Audio: dts (DTS) ([130][0][0][0] / 0x0082), 48000 Hz, 5.1(side), fltp, 768 kb/s
  Stream #0:5[0x1104]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, 5.1(side), fltp, 448 kb/s
  Stream #0:6[0x1105]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, 5.1(side), fltp, 448 kb/s
  Stream #0:7[0x1106]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, 5.1(side), fltp, 448 kb/s
  Stream #0:8[0x1107]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, 5.1(side), fltp, 448 kb/s
  Stream #0:9[0x1108]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, 5.1(side), fltp, 448 kb/s
  Stream #0:10[0x1200]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)
  Stream #0:11[0x1201]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)
  Stream #0:12[0x1202]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)
  Stream #0:13[0x1203]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)
  Stream #0:14[0x1204]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)
  Stream #0:15[0x1205]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)
  Stream #0:16[0x1206]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)
  Stream #0:17[0x1207]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090)

可以看到这个电影的时长、平均码率等信息,最重要的是包含的各种视频流、音频流、字幕文件信息。本文只需要知道音频文件是什么编码,然后进行选择,不然会导致初始化流的时候出现问题,从上面可以看到是flac格式(蓝光电影一般都是这个格式)。如果你想打包一个特定语言和字幕的成品,那么就需要使用这些信息了,本文就不做赘述了。

知道了位置在哪,就可以进行转换了。下面的命令还会包含源文件所有的音轨和字幕,并且在当前目录(并不是 ISO 中)生成一个flac output.mkv文件:

## macOS
$ ffmpeg -i /Volumes/BDROM/BDMV/STREAM/00001.m2ts -map 0 -c copy -c:a flac output.mkv

其他平台用户根据之前的介绍修改文件路径,用 Windows 但是不使用 PowerShell 的用户还请自己手动将/变换成\。此外,输出文件的路径也可以根据需要进行修改。

上面这条 ffmpeg 命令的选项含义是:

  • -i /Volumes/BDROM/BDMV/STREAM/00001.m2ts表示输入文件为/Volumes/BDROM/BDMV/STREAM/00001.m2ts
  • -map 0选中输入文件的所有流,如果你想选择所有的音频流,那么使用-map 0:a,如果要进行特殊设置和操作,那么请查看官方文档的介绍:Selecting streams with the -map option。
  • -c copy会拷贝原文件所有的信息,比如码率,这样就可以保证生成文件和源文件码率等信息相同了,也就是保证清晰度,但是这种操作可能会导致视频出现抽搐的情况。某些视频在 VLC 下播放正常,但是自带的播放器就抽搐,这种是因为编码器问题,修改一下编码器再次进行转码即可,但是这样就慢了很多,不过好在出现的情况不多。
  • -c:a flac表示音频编码器为flac,不设置这个选项会导致初始化流的时候出现问题。
  • output.mkv表示输出文件名为output,格式是 MKV。

输出格式推荐 MKV,因为 MKV 其实是一个视频容器格式,能包含多个媒体文件,比如字幕、音轨,并且在电脑上也能找到不少播放器。虽然 MP4 格式也可以存放多轨字幕和音频,但是很困难。这也是为什么你下转换好的蓝光文件大多也是 MKV 文件,MKV 主打的就是存储蓝光或者 DVD 的电影。

如果你需要 MP4 文件,我也不建议你直接转成 MP4,如果空间允许,先转成 MKV 再转成 MP4 也比较方便,MKV 转 MP4 的速度也非常快,基本上是 100x 往上了。不论是那种转换流程,如果要转换成 MP4 文件,那么建议选择好需要的软字幕和音轨,或者更简单一些,把上面命令中的-map 0删除即可,就可以将第一个音轨和软字幕带到 MP4 文件里。

虽然蓝光文件的码率很高,1080P 都有 40000-60000 kb/s(一般流媒体 1080P 是 5000-8000),如果是 4K 的话会更高,但是转换速度还挺快的,现在的 CPU 应该都能做到 5-30x,甚至更高的速度。并且利用率和内存占用不高,挂在后台转码也行。

希望能帮到有需要的人~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/675315.html

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

相关文章

加速度计的原理与应用

什么是加速度计 加速度计是一种传感器,可以测量物体所受加速的大小和方向。 加速度计的工作原理 传统加速度计利用质量和弹簧的相互作用来感应加速度,当物体收到加速度时,弹簧会发生变形,通过衡量这种变形来测量加速度的大小。 …

postgresql | 数据库| 生成2000W条的简单测试表

前言: 数据库学习的过程中,很可能需要数据量比较大的表来进行模拟测试,那么,测试表的创建需要遵循的是贴近实际的生产环境,尽量的模仿实际的生产环境。 因此,学习数据库的时候,快速的创建一个…

chatgpt赋能python:Python求单词长度:基于字符串操作的简单实现

Python求单词长度:基于字符串操作的简单实现 Python作为一种广泛应用于各个领域的编程语言,其强大的字符串操作功能在文本处理中经常被使用。本篇文章将介绍基于Python的字符串操作实现单词长度的方法。 什么是单词长度 在文本处理中,单词…

【Redis】1、学习 Redis 的五大基本数据类型【String、Hash、List、Set、SortedSet】

目录 一、NoSQL 和 SQL 区别二、认识 Redis三、Redis 的数据结构介绍四、Redis 通用命令五、String 类型六、key 的格式七、Hash(散列)类型八、List 类型九、Set 类型十、SortedSet 类型(可排序) 一、NoSQL 和 SQL 区别 二、认识 …

macOS Sonoma编译OpenCV源码输出IOS平台库

1.macOS下载并编译OpenCV源码: 克隆源码: 主仓: git clone https://github.com/opencv/opencv.git 扩展仓: git clone https://github.com/opencv/opencv_contrib.git 编译xcode源码需要CMake与XCode命令行工具 确认已安装CMake 确认已安装XCode 安装xcode command l…

UNZIP

目录 搭建环境 做题开始 通过ln直接创建 通过mkdir 后进行ln 搭建环境 这次是在自己的靶机环境里面搭建 cd /var/www/html index.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</ti…

罗技k380键盘教程

在智能手机和平板电脑上享受台式电脑般舒适便捷的输入体验。罗技蓝牙™ 多设备键盘 K380 是一款小巧独特的键盘&#xff0c;让您在家中任何地方都能使用个人设备进行沟通和创作。 借助便捷的易于切换™ 按钮&#xff0c;可以通过蓝牙™ 无线技术同时连接最多三台设备&#xff…

【LeetCode】动态规划 刷题训练(一)

文章目录 面试题 08.01. 三步问题题目解析状态转移方程完整代码 746. 使用最小花费爬楼梯题目解析状态转移方程完整代码 91. 解码方法题目解析状态转移方程情况1&#xff1a;让i位置的数&#xff0c;单独去解码情况2&#xff1a;让i位置的数 和i-1位置的数 结合 一起去解码 完整…

安全合规进入场景细分时代

2022年6月1日&#xff0c;《中华人民共和国网络安全法》&#xff08;以下简称《网络安全法》&#xff09;正式实施迎来5周年。 作为国家实施网络空间管辖的第一部法律&#xff0c;《网络安全法》标志着我国网络安全工作有了基础性的法律框架&#xff0c;意味着建设网络强国的制…

chatgpt赋能python:Python清空:如何在Python中使用清空来删除变量和数据结构中的所有元素

Python清空&#xff1a;如何在Python中使用清空来删除变量和数据结构中的所有元素 在Python编程中&#xff0c;我们常常需要删除变量和数据结构中的元素。Python提供了多种方法来实现这一点&#xff0c;其中最常用的方法之一就是使用清空功能。在本文中&#xff0c;我们将介绍…

【期末总复习】机器学习(公式推导与代码实现)鲁伟

【第一章】机器学习预备知识 1、了解机器学习的发展简史 2、复述出训练集、验证集和测试集的作用 训练集&#xff08;Training set&#xff09; 作用是用来拟合模型&#xff0c;通过设置分类器的参数&#xff0c;训练分类模型。后续结合验证集作用时&#xff0c;会选出同一参…

chatgpt赋能python:Python教程:求反向位置的字母

Python教程&#xff1a;求反向位置的字母 在这篇文章中&#xff0c;我们将介绍如何使用Python编程语言来找到给定字符串中的反向位置的字母。这是一个有趣的编程问题&#xff0c;特别是对于那些喜欢解决有趣问题的人来说&#xff0c;同时本文也将从SEO的角度来讲解如何优化文本…

LNMP搭建

一、编译安装nginx1.1 关闭防火墙&#xff0c;将安装nginx所需软件包传到/opt目录下并解压1.2 安装依赖包1.3 创建运行用户与组1.4 编译安装Nginx1.5 检查配置文件是否配置正确&#xff0c;并启动nginx服务 二、安装 MySQL 服务2.1 安装Mysql环境依赖包2.2 创建运行用户2.3 编译…

前端Vue自定义简单好用商品分类列表组件 侧边栏商品分类组件

前端Vue自定义简单好用商品分类列表组件 侧边栏商品分类组件 &#xff0c; 下载完整代码请访问uni-app插件市场地址&#xff1a;https://ext.dcloud.net.cn/plugin?id13148 效果图如下&#xff1a; # cc-defineCateList #### 使用方法 使用方法 <!-- data:商品列表数组…

C专家编程 —— 链接的思考

文章目录 编译器的作用动态链接和静态链接动态链接动态链接的优点 函数库链接的几个小秘密 编译器的作用 通常编译器被氛围六七个小的程序&#xff1a; C预处理器&#xff0c;得到main.i文件前端做语法语义分析&#xff0c;然后后端生成汇编的指令代码main.s文件优化器可以放…

Java-API简析_java.lang.SecurityManager类(基于 Latest JDK)(浅析源码)

【版权声明】未经博主同意&#xff0c;谢绝转载&#xff01;&#xff08;请尊重原创&#xff0c;博主保留追究权&#xff09; https://blog.csdn.net/m0_69908381/article/details/131346082 出自【进步*于辰的博客】 其实我的【Java-API】专栏内的博文对大家来说意义是不大的。…

【Python 基础篇】Python学生管理系统

文章目录 引言一、系统设计与功能分析二、系统设计与实现三、系统应用示例四、总结 引言 学生管理系统是一个常见的应用程序&#xff0c;它可以帮助学校、教育机构或教师管理学生的信息。本文将介绍如何使用面向对象编程思想&#xff0c;利用Python开发一个学生管理系统。系统…

源码编译 DolphinScheduler 1.3.9 海豚调度,修改Hadoop、Hive组件版本兼容

大前提&#xff1a; maven3 jdk8 环境 maven 私服换成国内镜像&#xff0c;推荐阿里云 maven 镜像 maven-3.6.3\conf\settings.xml <mirrors><mirror><id>aliyunmaven</id><mirrorOf>*</mirrorOf><name>阿里云公共仓库</name&g…

Android 13(T) - binder阅读(1)- binder driver

1 总览 想要使用binder完成进程间通信&#xff08;IPC&#xff09;或者完成远程过程调用&#xff08;RPC&#xff09;&#xff0c;那么我们需要有如下三个要素&#xff1a; 源&#xff1a;即调用者&#xff08;Client&#xff09;目的&#xff1a;即服务提供者&#xff08;Se…

win10 64位系统下载、安装nodejs(图文教程)

windows电脑下载、安装nodejs是很容易的&#xff0c;参考下面的图文教程&#xff0c;很快就能搞定下载安装. 1&#xff0c;下载nodejs 下载地址&#xff1a;https://nodejs.org/en/download/ 2&#xff0c;安装nodejs 点击安装包&#xff0c;一路下一步 3&#xff0c;验证…