xenonmkv是一个视频容器转换工具,它接受mkv文件并将其输出为mp4文件。

XenonMKV的Python项目详细描述


关于氙千伏

xenonmkv是一个视频容器转换工具,它接受mkv文件并将其输出为mp4文件。它不重新编码视频,只在必要时对音频进行解码和编码。

您会发现此工具对于转换支持H.264视频和AAC音频但不了解mkv容器的设备的视频非常有用。其他用途包括将带有AC3或DTS音频的视频转换为AAC音频(2个频道或5.1个频道)。

最初,xenonmkv是为xbox 360游戏机设计的,但现在我发现这个工具对我的黑莓playbook更加有用。您也可能会发现它对roku设备或预转换视频很有用,以减少plex需要对它们重新编码的可能性。

披露

注意:在这个应用程序的早期开发过程中,我曾为黑莓工作过。这里表达的意见是我自己的,不一定代表我以前或现在的雇主的意见。所有代码都是在我自己的时间开发的,不需要使用公司资源。

系统要求

xenonmkv是在标准的ubuntu 12.04lts安装(x86_64)上构建和测试的,但是这里的大多数实用程序和需求都可以在最流行的*nix发行版上运行。我也给了这套工具在ubuntu 13.10上一个粗略的运行,它们似乎可以工作。一旦14.04以最终形式发布,我计划重新测试。

Windows 7(64位)和Mac OS X 10.8也受支持,但可能适用于不同版本的OS X和Windows。

argparse库至少需要python 2.7,理想情况下 2.x系列中的Python 2.7.3或更高版本。

ubuntu 12.04

您需要一些支持包。这些将自动安装 如果在您的系统中找不到它们,或者它们可以预先安装。

在桌面安装中,请确保在安装从属项之前关闭"更新管理器",或者 您将收到一条恶意消息,其形式为:

TT> E:无法获取lock/var/lib/dpkg/lock-open(11:资源暂时不可用) E:无法锁定管理目录(/var/lib/dpkg/),是否另一个进程正在使用它?

安装所有依赖项(一次)

< Buff行情>sudo apt get install mediainfo mkvtoolnix mplayer faac gpac

在当前的开发状态下,在ubuntu上不需要安装 requirements.txt中作为依赖工具的任何python包都与"apt"一起安装。 如果以后更改,可以通过运行以下命令安装需求:

< Buff行情>sudo apt get install python setuptools&;sudo easy_install-u pippip install-r requirements.txt

个别套餐详情

媒体信息

< Buff行情>sudo apt get install mediainfo

或者,添加正式的mediainfo p p a并安装包,开发人员建议这可能是个好主意:

< Buff行情>

sudo add apt repository ppa:shiki/mediainfo

sudo apt get update

sudo apt get install mediainfo

mkvtoolnix

< Buff行情>sudo apt get install mkvtoolnix

mplayer

< Buff行情>sudo apt get install mplayer

FAAC

< Buff行情>sudo apt get install faac

MP4盒

< Buff行情>sudo apt get install gpac

要编译您自己的gpac版本,请遵循以下说明。然后,运行以下命令以获得成功(不需要spidermonkey js库):

< Buff行情>/configure–启用调试–使用js=no制作

默认情况下,mp4box将根据需要安装在/usr/local/{bin、lib、man、share}中。

如果路径变量首先包含/usr/local/bin,则将执行自定义编译版本而不是系统版本。

要在编译时将mp4box放入特定路径,请使用–prefix选项和/configure

< Buff行情>/configure–启用调试–使用js=no–prefix=/opt/gpac

运行sudo make install以完成安装。

然后要运行,请指定ld_library_path(如果它不在您的ld配置中)。在ubuntu/usr/local/lib上已经存在了,所以只要运行:

< Buff行情>/usr/local/bin/mp4box

对于自定义前缀:

< Buff行情>ld_library路径="$ld_library路径;/opt/gpac/lib"/opt/gpac/bin/mp4box

ubuntu 10.04

目前还没有对其进行测试,但以下是使氙气千伏起作用所需的历史变化:

从源代码安装python 2.7,或者添加适当的ppa。如果以后需要将系统从10.04升级到12.04,请确保先清除此ppa。

< Buff行情>sudo add apt repository ppa:fkrull/deadsnakessudo apt get更新sudo apt get install python2.7
  • 通过添加ppa:shiki/mediainfoppa安装mediainfo,因为mediainfo包不在10.04存储库中。

  • 执行12.04说明中的"安装依赖项"步骤

  • 直接引用Python2.7运行应用程序:

    < Buff行情>

    /usr/bin/python2.7/path/to/xenonmkv.py[参数]

其他Linux发行版

从源或发行版的软件包管理器安装上述软件包。

用法

默认设置下的基本用法:

< Buff行情>xenonmkv.py/path/to/file.mkv

为了确保您的xbox 360主机将以可能的费用播放生成的文件 音频质量:

< Buff行情>xenonmkv.py/path/to/file.mkv–配置文件Xbox360

要查看所有命令行参数:

< Buff行情>xenonmkv.py–帮助

对于安静运行(批处理或在cronjob中):

< Buff行情>xenonmv.py/path/to/file.mkv-q

q选项确保您永远不会被提示输入,并且将非常有用 与sabnzbd+等软件集成。

如果您报告一个问题,请在调试/非常详细的模式下运行xenonmkv:

< Buff行情>xenonmv.py/path/to/file.mkv-vv

对于xenonmkv的最新版本,我包含了一个非常糟糕的脚本,它处理linux上mkv文件的批编码,因为我总是把传递给find的参数搞砸。用途:

< Buff行情>batch.py source_目录<;xenonmkv_参数>;

建议/注意事项

  • 如果mkv文件不是太大,那么将/tmp挂载为tmpfs的发行版(计划用于Fedora18、Ubuntu12.10、Debian Wheezy)如果使用-scratch dir/tmp,则会显示明显的peedup。现在为了将来的验证,scratch目录被设置为/var/tmp

  • 使用-vv查找显示调试信息并准确输出处理阶段中发生的情况。

  • 本机多文件支持(例如:转换mkvs)的整个目录并不在这个版本中,但是您可以同时执行这样的操作来排队列表:

    < Buff行情>

    cd~/mymkvdir

    对于"ls*.mkv"中的i;do/path/to/xenonmkv.py$i–目的地~/mymp4dir;完成

  • 英特尔酷睿i5-2500K处理器,3.3GHz,1TB西部数字黑色世达硬盘,性能:442MB源MKV文件,H.264视频和6通道AC3音频,在40.6秒内转换为与PlayBook兼容的MP4(相同视频,2通道AAC音频,质量Q=150)。它没有任何增强功能,比如tmpfs挂载。使用固态硬盘,您可能会获得更好的性能,显然处理器速度会对这里产生影响。

音频下混音/重新编码

默认情况下,xenonmkv不会对所提供内容的任何部分进行重新采样、下混或重新编码。但是,您的源文件可能包含需要重新编码的AC3、DTS或MP3音频。在这种情况下,在重新打包前,原始源音频将始终混合到双声道AAC文件中。

如果mkv文件中的音频曲目已经是aac,接下来要考虑的是播放设备。Xbox360不会在MP4容器中播放音频,除非它是2声道立体声,这是一个非常愚蠢的限制。其他设备,如playbook,将乐于解析多达5.1声道的音频。通过使用–channels–profile设置,您可以告诉XenomkV一个AAC源可以接受多少个声道的音频,然后它将积极地重新编码并向下混合到2声道立体声。

简言之,如果您计划在Xbox 360上播放MP4,一定要使用–profile Xbox360设置,以确保输入输出文件的频道不超过两个。如果你的设备更合理,默认设置应该是好的。当用户确认自己的设备功能时,将添加更多配置文件。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java If语句即使在满足条件后也不工作   java确定图中的非连续性   java为什么在google playstore上发布应用程序后,数据没有从firebase加载到应用程序中?   Java四舍五入BigDecimal值,在2个级别保留2位小数   java Spring Hibernate数据库查询不工作   java如何读取具有可变数组深度和结构的复杂JSON字符串?   java使cxfcodegenplugin生成的类能够持久化   java如何将对象从另一个类传递到paintComponent方法?   JavaSpringBoot2+OAuth2:为令牌配置身份验证代码的交换   JavaGrails:事件。PatchedDefaultFlushEventListener无法将数据库状态与会话组织同步。冬眠StaleObjectStateException   java(安卓 studio)无法更改webview中的“网页不可用”页面   java NetBeans Web应用程序   用多核处理器实现Java多线程   java getSerialVersionUID使用什么内容来确定UID?   java如何读取数据输入流两次或两次以上?   用于测试的java服务器   java如何通过jpa spring发现电子邮件是否已经存在,并向前端发送一些错误消息   Java接口与回调方法