![](/img/trans.png)
[英]Getting the Count of Audio and video stream in a .MP4 files and its properties
[英]Edit video metadata tags of MP4 files
我想編輯 MP4 文件的以下視頻標簽,如Title 、 Subtitle 、 Rating 、 Coment 、 Author 。 我進行了很多搜索並找到了解決方案Taglib sharp 。 但 taglib sharp 只編輯標題和評論。 我還探索了 Directshow 和 UltraD3lib,但我的問題仍然存在。 如果有人有示例或任何開源庫,請與我分享。
這是我用來更新我的視頻庫文件的幾個簡短方法 Movie 是一個 POCO 對象,具有名稱、IMDB 編號、文件名、年份.. 屬性 ADOHelper 是我用來簡化 ADO DB/SQL 調用的類 使用代碼下面我的視頻上有以下圖標
當我查看視頻的屬性時,我得到以下信息
private static void UpdateActors(Movie found, FileInfo movie)
{
var sql = $"SELECT n.primaryName FROM Principals p Inner join Names n on p.nconst = n.nconst where tconst = '{found.IMDB}'";
var table = ADOHelper.ReturnDataTable(Conn, sql, CommandType.Text);
var value = (from DataRow row in table.Rows select row[0].ToString()).ToList();
var f = TagLib.File.Create(movie.FullName);
f.Tag.Artists = value.ToArray();
f.Tag.AlbumArtists = value.ToArray();
f.Save();
}
private static string UpdateGenre(Movie found, FileInfo movie)
{
var returned = string.Empty;
try
{
var sql = $"SELECT Genre FROM TitleGenre where TitleId = '{found.IMDB}' order by sort";
var table = ADOHelper.ReturnDataTable(Conn, sql, CommandType.Text);
var f = TagLib.File.Create(movie.FullName);
f.Tag.Genres = (from DataRow row in table.Rows select row[0].ToString()).ToArray();
returned = table.Rows[0][0].ToString();
f.Save();
}
catch (Exception e)
{
Console.WriteLine(found.FilePath + " : " + e.Message);
}
return returned;
}
private static int UpdateYear(Movie found, FileInfo movie)
{
var returned = 0;
try
{
var f = TagLib.File.Create(movie.FullName);
var sql = $"SELECT startYear FROM Titles where tconst = '{found.IMDB}'";
var table = ADOHelper.ReturnDataTable(Conn, sql, CommandType.Text);
f.Tag.Year = uint.Parse(table.Rows[0][0].ToString());
returned = (int)f.Tag.Year;
f.Tag.Title = found.Name;
f.Save();
}
catch (Exception e)
{
Console.WriteLine(found.FilePath + " : " + e.Message);
}
return returned;
}
private static string UpdateName(Movie found, FileInfo movie, string description)
{
var returned = string.Empty;
try
{
var f = TagLib.File.Create(movie.FullName);
f.Tag.Title = description;
returned = description;
f.Save();
}
catch (Exception e)
{
Console.WriteLine(found.FilePath + " : " + e.Message);
}
return returned;
}
private static void UpdatePicture(Movie found, FileInfo movie)
{
try
{
var poster = $"{PosterPath}\\{found.IMDB}.jpg";
if (File.Exists(poster))
{
var f = TagLib.File.Create(movie.FullName);
IPicture picture = new Picture(poster);
f.Tag.Pictures = new[] { picture };
f.Save();
}
else
{
using (var writer = new StreamWriter("G:\\NeedPicture.txt", true))
writer.WriteLine($"{found.IMDB} : {found.Name} No Picture");
}
}
catch (Exception e)
{
Console.WriteLine(found.FilePath + " : " + e.Message);
}
}
希望這可以幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.