我目前正在使用Mutagen模块为Python准备iTunes视频文件的MP4标签。它工作正常,但我错过了一个非常重要的标签,它被称为" stik"并代表iTunes媒体类型。
这是我目前的代码:
mp4_video_tags = MP4(mp4_file)
mp4_video_tags['\xa9nam'] = 'Video Name'
mp4_video_tags['\xa9alb'] = 'DVD-Name'
mp4_video_tags['\xa9gen'] = 'Video-Training'
mp4_video_tags['\xa9day'] = '2015'
mp4_video_tags['\xa9ART'] = 'Company'
mp4_video_tags['aART'] = 'Company'
mp4_video_tags['\xa9wrt'] = 'Company'
mp4_video_tags['cprt'] = 'Copyright (c) Company'
mp4_video_tags['desc'] = 'description'
mp4_video_tags['tvsh'] = 'DVD-Name'
mp4_video_tags['trkn'] = [(1, 18)]
mp4_video_tags['disk'] = [(1, 1)]
mp4_video_tags['stik'] = 10
mp4_video_tags.save()
该代码工作得非常好,但它在" mp4_video_tags [' stik'] = 10"时崩溃,因为此标记的值不能是整数。但根据此列表:https://code.google.com/p/mp4v2/wiki/iTunesMetadata#Media_Type_%28stik%29
对于电视节目,它必须是值为10的整数。
我注意到Mutagen没有显示出" stik"标记列表/文档中的标记,默认情况下可能不受支持:https://mutagen.readthedocs.org/en/latest/api/mp4.html
有人能解释我如何设置MP4标签" stik"与Mutagen合作的电视节目10?
答案 0 :(得分:3)
我知道我参加派对有点晚了,但我有一份礼物:
<div class="container">
<div class="row">
<div class="col-md-3">
<div class="panel panel-danger">
<div class="panel-body">
<ul class="nav nav-pills nav-stacked">
<li role="presentation" class="active"><a href="<?php echo base_url(); ?>admin/insertMerk">Insert Merk</a></li>
</ul>
</div>
</div>
</div>
<div class="col-md-9">
<div class="panel panel-default">
<div class="panel-heading">
<strong>Merk</strong>
</div>
<div class="panel-body">
<div class="row" id="tabelBarang">
<div class="col-md-1 colBarang">
<strong>No</strong>
</div>
<div class="col-md-7 colBarang">
<strong>Merk</strong>
</div>
<div class="col-md-4 colBarang">
<strong>Action</strong>
</div>
</div>
<?php
$angka = 0;
foreach ($results as $row){
$id = $row->id;
$merk = $row->merk;
?>
<div class="row" id="tabelBarang">
<div class="col-md-1 colBarang">
<?php echo ++$angka; ?>
</div>
<div class="col-md-7 colBarang">
<?php echo $merk; ?>
</div>
<div class="col-md-2 colBarang">
<button type="button" class="btn btn-info btn-xs" aria-label="Left Align">
<a href="<?php echo base_url(); ?>admin/editMerk/<?php echo $id; ?>">Edit</a>
</button>
</div>
<div class="col-md-2 colBarang">
<button type="button" class="btn btn-danger btn-xs" aria-label="Left Align">
<a href="<?php echo base_url(); ?>admin/deleteMerk/<?php echo $id; ?>">Delete</a>
</button>
</div>
</div>
<?php
}
?>
<?php echo $links; ?>
</div>
</div>
</div>
</div>
</div>
我没有尝试过,但我认为您也可以使用mp4_tags['stik'] = str(unichr(10))
以及换行符由二进制数字10表示。
问题是iTunes将该字段作为二进制数字读取,您可以保存或多或少的任何内容。例如,我尝试设置mp4_tags['stik'] = '\n'
并将文件加载到iTunes中,它显示为第50季,如果您查看ASCII表,则表示字符2的表示方式。
似乎是图书馆中的一个错误。
答案 1 :(得分:0)
如果它不能是一个整数你试过&#39; 10&#39;用引号?
如果这不起作用,值得注意的是python的整数对象绝对是坚固的并且永远不会翻转......这不是你的磨机8位整数运行。
您可以使用ctypes转换为8位整数,如此处所示 Convert a string to an 8-bit signed integer in python
from ctypes import cast, pointer, POINTER, c_char, c_int
def convert(c):
return cast(pointer(c_char(c)), POINTER(c_int)).contents.value
答案 2 :(得分:0)
我一直在python3中玩过这个游戏,其中建议的答案似乎不起作用。但是,可以做到以下几点:
mp4_tags["stik"] = [10]
在使用exiftool
进行设置后,我进行了检查,它似乎读取了媒体类型元数据作为预期的类型。