C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

動画ファイルのプロパティを設定する方法

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■89636 / inTopicNo.1)  動画ファイルのプロパティを設定する方法
  
□投稿者/ よっしー (1回)-(2018/12/11(Tue) 22:46:36)

分類:[.NET 全般] 

動画ファイルをエクスプローラー上で右クリックしプロパティを開くと
タイトルやコメントなどを見ることができます。

これらをVB.NETを使って編集・設定したいのですがどうすれば良いですか?

読み込む方法は
ExtendedProperty

GetDetailOf
でできますが、編集する方法がどうやっても見つかりません。

https://msdn.microsoft.com/ja-jp/library/microsoft.ink.extendedproperty.data(v=vs.85).aspx

このページにそれらしきことが書かれていますが
どうすれば良いでしょうか?



引用返信 編集キー/
■89639 / inTopicNo.2)  Re[1]: 動画ファイルのプロパティを設定する方法
□投稿者/ 魔界の仮面弁士 (1986回)-(2018/12/12(Wed) 09:51:02)
No89636 (よっしー さん) に返信
> ExtendedProperty
> や
> GetDetailOf
> でできますが、

Shell Object 経由だと読取だけですね。

No89622 で紹介したメタデータ ハンドラを使えば書き込めるかも。
http://eternalwindows.jp/shell/shellex/shellex11.html
https://ja.stackoverflow.com/questions/17098/


> 編集する方法がどうやっても見つかりません。

TagLib を使う方法を紹介しておきます。
https://github.com/mono/taglib-sharp

Using videoFile = TagLib.File.Create(OpenFileDialog1.FileName)
 videoFile.Tag.Title = "たいとる"
 videoFile.Tag.Comment = "こめんと"
 videoFile.Save()
End Using


> https://msdn.microsoft.com/ja-jp/library/microsoft.ink.extendedproperty.data(v=vs.85).aspx
> このページにそれらしきことが書かれていますが

この URL が示している Data プロパティは、Microsft.Ink.ExtendedProperty クラスのためのものであって、
ShellFolderItem オブジェクトの ExtendedProperty メソッドとは、何の関係もありません。
引用返信 編集キー/
■89644 / inTopicNo.3)  Re[2]: 動画ファイルのプロパティを設定する方法
□投稿者/ よっしー (4回)-(2018/12/12(Wed) 14:26:08)
ありがとうございます。

後ほど試してみます。

ちなみに、タイトルやコメントの文字数制限を知りたいのですが
最大何文字まで使えるのでしょうか?
検索しても意外とそういう情報が見つかりませんでした

引用返信 編集キー/
■89645 / inTopicNo.4)  Re[3]: 動画ファイルのプロパティを設定する方法
□投稿者/ 魔界の仮面弁士 (1987回)-(2018/12/12(Wed) 16:26:56)
No89644 (よっしー さん) に返信
> タイトルやコメントの文字数制限を知りたいのですが
> 最大何文字まで使えるのでしょうか?

フォーマットによって異なるんじゃないですかね。(自信無し)


> 検索しても意外とそういう情報が見つかりませんでした

こちらでもざっくり調べてみましたが、もともと動画形式には詳しくないですし、
TagLib を使ったことも無いので、良くわからなかったです。

とりあえず、以下は眉唾情報と言うことで。

----
MPEG4 コンテナの場合、メタデータ "moov" ボックスが 32bit 上限らしいので、
そうすると、全体で 4GB までかもしれません。

一方、メディアデータ "mdat" 自体に埋め込まれるものについては、たとえば MP3 音声部なら
ID3v1 ……… タイトル 30 バイト、コメント 30 バイト、文字コード定義なし
ID3v1.1 …… タイトル 30 バイト、コメント 28 バイト、文字コード定義なし
ID3v2.2 …… 各項目最大 16 MB、全タグ合計 256MB まで、UTF-16 サポート
ID3v2.3 …… 各項目最大 16 MB、全タグ合計 256MB まで、UTF-16 サポート
ID3v2.4 …… 各項目最大 16 MB、全タグ合計 256MB まで、Unicode サポート
などがあるそうです。


TagLib ライブラリを眺めていたところ、TagTypes という物があったので、
明示的に形式指定が必要な場合は、こんな感じになるのかな…。

実験に使えそうなファイルが手元に用意できないので未検証です。


Using f = TagLib.File.Create(filePath)
 Debug.WriteLine(f.TagTypes)
 f.Tag.Comment = TextBox1.Text

 '誤った TagTypes を GetTag メソッドに渡すと、GetTag が Nothing を返す模様

 'DirectCast(f.GetTag(TagLib.TagTypes.Ape, True), TagLib.Ape.Tag).Comment = TextBox1.Text

 'DirectCast(f.GetTag(TagLib.TagTypes.Apple, True), TagLib.Mpeg4.AppleTag).Comment = TextBox1.Text

 'DirectCast(f.GetTag(TagLib.TagTypes.XMP, True), TagLib.Xmp.XmpTag).Comment = TextBox1.Text

 'DirectCast(f.GetTag(TagLib.TagTypes.Asf, True), TagLib.Asf.Tag).Comment = TextBox1.Text

 'DirectCast(f.GetTag(TagLib.TagTypes.Id3v1, True), TagLib.Id3v1.Tag).Comment = TextBox1.Text

 'Dim t = DirectCast(f.GetTag(TagLib.TagTypes.Id3v2, True), TagLib.Id3v2.Tag)
 't.Comment = TextBox1.Text
 'Dim p = TagLib.Id3v2.PrivateFrame.Get(t, "OriginalKey", True)
 'p.PrivateData = System.Text.Encoding.Unicode.GetBytes(TextBox1.Text)

 f.Save()
End Using
引用返信 編集キー/
■89878 / inTopicNo.5)  Re[4]: 動画ファイルのプロパティを設定する方法
□投稿者/ よっしー (6回)-(2019/01/13(Sun) 22:26:28)
魔界の仮面弁士さん


なかなか時間がとれず、返信できなかったのですが
やっと時間がとれたのでTagLib#を試してみました。


対応している動画フォーマットは
mkv, ogv, avi, wmv, asf, mp4 (m4p, m4v), mpeg (mpg, mpe, mpv, mpg, m2v)

と書かれてあるのですが、
mkvファイルを試したところ
実行中にはエラーは出なかったのですが
書き換えることはできませんでした。
そもそもmkvファイルはwindows上でも手動で書き換えられないため
特殊なソフトが必要なそうです。

mp4ファイルはうまく書き換えることができました。

この一覧には載っていませんが
movファイルも試してみたのですが
実行中にエラーが出てしまいうまくいきませんでした。

実は、いまプロパティを設定したいのは
movとmkvファイルなのですが、
何とかこれらのプロパティを設定する方法はございませんでしょうか?






引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ