2

現在、Python 用の Mutagen モジュールを使用して、iTunes 用のビデオ ファイルの MP4 タグを準備しています。それは問題なく動作しますが、本当に重要なタグが 1 つ欠けています。「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

Mutagen を使用したテレビ番組の MP4 タグ「stik」を 10 に設定する方法を誰か説明してもらえますか?

4

3 に答える 3

3

私はパーティーに少し遅れていることを知っていますが、私には贈り物があります:

mp4_tags['stik'] = str(unichr(10))

mp4_tags['stik'] = '\n'試したことはありませんが、改行文字が 2 進数の 10 で表されるのと同様に使用できると思います。

問題は、iTunes がフィールドを 2 進数として読み取ることです。多かれ少なかれ好きなものを保存できます。たとえば、設定を試みmp4_tags['tvsn'] = '2'、ファイルを iTunes にロードしたところ、Season 50 と表示されました。これは、ASCII テーブルを見ると、キャラクター 2 がどのように表現されているかを示しています。

ライブラリのバグのようです。

于 2015-05-09T15:24:20.253 に答える
0

整数にできない場合は、引用符で「10」を試しましたか?

それがうまくいかない場合、Pythonの整数オブジェクトは完全に狂っており、決してロールオーバーしないことに注意してください...それは、ミルの8ビット整数の実行ではありません。

ここで見られるように、ctypes を使用して 8 ビット整数にキャストできます Python で文字列を 8 ビット符号付き整数に変換します

from ctypes import cast, pointer, POINTER, c_char, c_int
def convert(c):
    return cast(pointer(c_char(c)), POINTER(c_int)).contents.value
于 2015-03-30T07:24:53.243 に答える