-
This commit is contained in:
@@ -303,11 +303,18 @@ namespace mpvnet
|
|||||||
|
|
||||||
public static void CycleAudio()
|
public static void CycleAudio()
|
||||||
{
|
{
|
||||||
|
if (!App.MediaInfo)
|
||||||
|
Core.UpdateTrackData();
|
||||||
|
|
||||||
var tracks = Core.MediaTracks.Where(track => track.Type == "a").ToArray();
|
var tracks = Core.MediaTracks.Where(track => track.Type == "a").ToArray();
|
||||||
|
|
||||||
|
if (App.MediaInfo)
|
||||||
|
{
|
||||||
var externalTracks = Core.GetExternalTracks().Where(track => track.Type == "a");
|
var externalTracks = Core.GetExternalTracks().Where(track => track.Type == "a");
|
||||||
|
|
||||||
if (externalTracks.Count() > 0)
|
if (externalTracks.Count() > 0)
|
||||||
tracks = tracks.Concat(externalTracks).ToArray();
|
tracks = tracks.Concat(externalTracks).ToArray();
|
||||||
|
}
|
||||||
|
|
||||||
int len = tracks.Length;
|
int len = tracks.Length;
|
||||||
|
|
||||||
@@ -425,11 +432,18 @@ namespace mpvnet
|
|||||||
|
|
||||||
public static void ShowAudioTracks() => App.InvokeOnMainThread(() =>
|
public static void ShowAudioTracks() => App.InvokeOnMainThread(() =>
|
||||||
{
|
{
|
||||||
|
if (!App.MediaInfo)
|
||||||
|
Core.UpdateTrackData();
|
||||||
|
|
||||||
var tracks = Core.MediaTracks.Where(track => track.Type == "a").ToArray();
|
var tracks = Core.MediaTracks.Where(track => track.Type == "a").ToArray();
|
||||||
|
|
||||||
|
if (App.MediaInfo)
|
||||||
|
{
|
||||||
var externalTracks = Core.GetExternalTracks().Where(track => track.Type == "a");
|
var externalTracks = Core.GetExternalTracks().Where(track => track.Type == "a");
|
||||||
|
|
||||||
if (externalTracks.Count() > 0)
|
if (externalTracks.Count() > 0)
|
||||||
tracks = tracks.Concat(externalTracks).ToArray();
|
tracks = tracks.Concat(externalTracks).ToArray();
|
||||||
|
}
|
||||||
|
|
||||||
if (tracks.Length < 1)
|
if (tracks.Length < 1)
|
||||||
{
|
{
|
||||||
@@ -463,11 +477,18 @@ namespace mpvnet
|
|||||||
|
|
||||||
public static void ShowSubtitleTracks() => App.InvokeOnMainThread(() =>
|
public static void ShowSubtitleTracks() => App.InvokeOnMainThread(() =>
|
||||||
{
|
{
|
||||||
|
if (!App.MediaInfo)
|
||||||
|
Core.UpdateTrackData();
|
||||||
|
|
||||||
var tracks = Core.MediaTracks.Where(track => track.Type == "s").ToArray();
|
var tracks = Core.MediaTracks.Where(track => track.Type == "s").ToArray();
|
||||||
|
|
||||||
|
if (App.MediaInfo)
|
||||||
|
{
|
||||||
var externalTracks = Core.GetExternalTracks().Where(track => track.Type == "s");
|
var externalTracks = Core.GetExternalTracks().Where(track => track.Type == "s");
|
||||||
|
|
||||||
if (externalTracks.Count() > 0)
|
if (externalTracks.Count() > 0)
|
||||||
tracks = tracks.Concat(externalTracks).ToArray();
|
tracks = tracks.Concat(externalTracks).ToArray();
|
||||||
|
}
|
||||||
|
|
||||||
if (tracks.Length < 1)
|
if (tracks.Length < 1)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -227,6 +227,9 @@ namespace mpvnet
|
|||||||
|
|
||||||
void UpdateMenu()
|
void UpdateMenu()
|
||||||
{
|
{
|
||||||
|
if (!App.MediaInfo)
|
||||||
|
Core.UpdateTrackData();
|
||||||
|
|
||||||
lock (Core.MediaTracks)
|
lock (Core.MediaTracks)
|
||||||
{
|
{
|
||||||
var trackMenuItem = FindMenuItem("Track");
|
var trackMenuItem = FindMenuItem("Track");
|
||||||
@@ -240,6 +243,8 @@ namespace mpvnet
|
|||||||
var vidTracks = Core.MediaTracks.Where(track => track.Type == "v");
|
var vidTracks = Core.MediaTracks.Where(track => track.Type == "v");
|
||||||
var ediTracks = Core.MediaTracks.Where(track => track.Type == "e");
|
var ediTracks = Core.MediaTracks.Where(track => track.Type == "e");
|
||||||
|
|
||||||
|
if (App.MediaInfo)
|
||||||
|
{
|
||||||
var externalTracks = Core.GetExternalTracks();
|
var externalTracks = Core.GetExternalTracks();
|
||||||
|
|
||||||
if (externalTracks.Count > 0)
|
if (externalTracks.Count > 0)
|
||||||
@@ -253,6 +258,7 @@ namespace mpvnet
|
|||||||
if (exSubTracks.Count() > 0)
|
if (exSubTracks.Count() > 0)
|
||||||
subTracks = subTracks.Concat(exSubTracks);
|
subTracks = subTracks.Concat(exSubTracks);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
foreach (MediaTrack track in vidTracks)
|
foreach (MediaTrack track in vidTracks)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -541,8 +541,8 @@ namespace mpvnet
|
|||||||
VideoSizeAutoResetEvent.Set();
|
VideoSizeAutoResetEvent.Set();
|
||||||
}
|
}
|
||||||
|
|
||||||
App.RunTask(new Action(() => ReadMetaData()));
|
if (App.MediaInfo)
|
||||||
//Debug.WriteLine("################# " + GetPropertyString("media-title"));
|
App.RunTask(new Action(() => UpdateTrackDataUsingMediaInfo()));
|
||||||
|
|
||||||
App.RunTask(new Action(() => {
|
App.RunTask(new Action(() => {
|
||||||
if (path.Contains("://"))
|
if (path.Contains("://"))
|
||||||
@@ -1412,7 +1412,7 @@ namespace mpvnet
|
|||||||
Add(track, GetPropertyString($"track-list/{i}/codec").ToUpperEx());
|
Add(track, GetPropertyString($"track-list/{i}/codec").ToUpperEx());
|
||||||
Add(track, GetPropertyInt($"track-list/{i}/audio-channels") + " channels");
|
Add(track, GetPropertyInt($"track-list/{i}/audio-channels") + " channels");
|
||||||
Add(track, "External");
|
Add(track, "External");
|
||||||
Add(track, $"{title}");
|
Add(track, title);
|
||||||
track.Text = "A: " + track.Text.Trim(' ', ',');
|
track.Text = "A: " + track.Text.Trim(' ', ',');
|
||||||
track.Type = "a";
|
track.Type = "a";
|
||||||
track.ID = GetPropertyInt($"track-list/{i}/id");
|
track.ID = GetPropertyInt($"track-list/{i}/id");
|
||||||
@@ -1424,7 +1424,7 @@ namespace mpvnet
|
|||||||
Add(track, GetLanguage(GetPropertyString($"track-list/{i}/lang")));
|
Add(track, GetLanguage(GetPropertyString($"track-list/{i}/lang")));
|
||||||
Add(track, GetPropertyString($"track-list/{i}/codec").ToUpperEx());
|
Add(track, GetPropertyString($"track-list/{i}/codec").ToUpperEx());
|
||||||
Add(track, "External");
|
Add(track, "External");
|
||||||
Add(track, $"{title}");
|
Add(track, title);
|
||||||
track.Text = "S: " + track.Text.Trim(' ', ',');
|
track.Text = "S: " + track.Text.Trim(' ', ',');
|
||||||
track.Type = "s";
|
track.Type = "s";
|
||||||
track.ID = GetPropertyInt($"track-list/{i}/id");
|
track.ID = GetPropertyInt($"track-list/{i}/id");
|
||||||
@@ -1436,18 +1436,7 @@ namespace mpvnet
|
|||||||
return tracks;
|
return tracks;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ReadMetaData()
|
public void UpdateTrackData()
|
||||||
{
|
|
||||||
if (App.MediaInfo)
|
|
||||||
ReadMetaDataUsingMediaInfo();
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ReadMetaDataUsingMediaInfo();
|
|
||||||
ReadMetaDataUsingMpv();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void ReadMetaDataUsingMpv()
|
|
||||||
{
|
{
|
||||||
string path = GetPropertyString("path");
|
string path = GetPropertyString("path");
|
||||||
|
|
||||||
@@ -1457,14 +1446,17 @@ namespace mpvnet
|
|||||||
|
|
||||||
lock (MediaTracks)
|
lock (MediaTracks)
|
||||||
{
|
{
|
||||||
//MediaTracks.Clear();
|
MediaTracks.Clear();
|
||||||
|
|
||||||
int trackListCount = GetPropertyInt("track-list/count");
|
int trackListCount = GetPropertyInt("track-list/count");
|
||||||
|
|
||||||
for (int i = 0; i < trackListCount; i++)
|
for (int i = 0; i < trackListCount; i++)
|
||||||
{
|
{
|
||||||
string type = GetPropertyString($"track-list/{i}/type");
|
string type = GetPropertyString($"track-list/{i}/type");
|
||||||
string test = GetPropertyString($"track-list");
|
string filename = GetPropertyString($"filename/no-ext");
|
||||||
|
string title = GetPropertyString($"track-list/{i}/title").Replace(filename, "");
|
||||||
|
|
||||||
|
title = Regex.Replace(title, @"^[\._\-]", "").Replace("_", "__");
|
||||||
|
|
||||||
if (type == "video")
|
if (type == "video")
|
||||||
{
|
{
|
||||||
@@ -1472,7 +1464,7 @@ namespace mpvnet
|
|||||||
Add(track, GetPropertyString($"track-list/{i}/codec").ToUpperEx());
|
Add(track, GetPropertyString($"track-list/{i}/codec").ToUpperEx());
|
||||||
Add(track, GetPropertyString($"track-list/{i}/demux-w") + "x" + GetPropertyString($"track-list/{i}/demux-h"));
|
Add(track, GetPropertyString($"track-list/{i}/demux-w") + "x" + GetPropertyString($"track-list/{i}/demux-h"));
|
||||||
Add(track, GetPropertyString($"track-list/{i}/demux-fps").Replace(".000000", "") + " FPS");
|
Add(track, GetPropertyString($"track-list/{i}/demux-fps").Replace(".000000", "") + " FPS");
|
||||||
Add(track, GetPropertyBool($"track-list/{i}/default") ? "Default" : "");
|
Add(track, GetPropertyBool($"track-list/{i}/default") ? "Default" : null);
|
||||||
track.Text = "V: " + track.Text.Trim(' ', ',');
|
track.Text = "V: " + track.Text.Trim(' ', ',');
|
||||||
track.Type = "v";
|
track.Type = "v";
|
||||||
track.ID = GetPropertyInt($"track-list/{i}/id");
|
track.ID = GetPropertyInt($"track-list/{i}/id");
|
||||||
@@ -1480,25 +1472,15 @@ namespace mpvnet
|
|||||||
}
|
}
|
||||||
else if (type == "audio")
|
else if (type == "audio")
|
||||||
{
|
{
|
||||||
//Add(track, mi.GetAudio(i, "Language/String"));
|
|
||||||
//Add(track, mi.GetAudio(i, "Format"));
|
|
||||||
//Add(track, mi.GetAudio(i, "Format_Profile"));
|
|
||||||
//Add(track, mi.GetAudio(i, "BitRate/String"));
|
|
||||||
//Add(track, mi.GetAudio(i, "Channel(s)/String"));
|
|
||||||
//Add(track, mi.GetAudio(i, "SamplingRate/String"));
|
|
||||||
|
|
||||||
//Add(track, mi.GetAudio(i, "Forced") == "Yes" ? "Forced" : "");
|
|
||||||
//Add(track, mi.GetAudio(i, "Default") == "Yes" ? "Default" : "");
|
|
||||||
|
|
||||||
//Add(track, mi.GetAudio(i, "Title"));
|
|
||||||
|
|
||||||
MediaTrack track = new MediaTrack();
|
MediaTrack track = new MediaTrack();
|
||||||
Add(track, GetLanguage(GetPropertyString($"track-list/{i}/lang")));
|
Add(track, GetLanguage(GetPropertyString($"track-list/{i}/lang")));
|
||||||
Add(track, GetPropertyString($"track-list/{i}/codec").ToUpperEx());
|
Add(track, GetPropertyString($"track-list/{i}/codec").ToUpperEx());
|
||||||
Add(track, GetPropertyInt($"track-list/{i}/audio-channels") + " channels");
|
Add(track, GetPropertyInt($"track-list/{i}/audio-channels") + " channels");
|
||||||
Add(track, GetPropertyInt($"track-list/{i}/demux-samplerate") + " Hz");
|
Add(track, GetPropertyInt($"track-list/{i}/demux-samplerate") + " Hz");
|
||||||
Add(track, GetPropertyBool($"track-list/{i}/forced") ? "Forced" : "");
|
Add(track, GetPropertyBool($"track-list/{i}/forced") ? "Forced" : null);
|
||||||
Add(track, GetPropertyBool($"track-list/{i}/default") ? "Default" : "");
|
Add(track, GetPropertyBool($"track-list/{i}/default") ? "Default" : null);
|
||||||
|
Add(track, GetPropertyBool($"track-list/{i}/external") ? "External" : null);
|
||||||
|
Add(track, title);
|
||||||
track.Text = "A: " + track.Text.Trim(' ', ',');
|
track.Text = "A: " + track.Text.Trim(' ', ',');
|
||||||
track.Type = "a";
|
track.Type = "a";
|
||||||
track.ID = GetPropertyInt($"track-list/{i}/id");
|
track.ID = GetPropertyInt($"track-list/{i}/id");
|
||||||
@@ -1506,108 +1488,54 @@ namespace mpvnet
|
|||||||
}
|
}
|
||||||
else if (type == "sub")
|
else if (type == "sub")
|
||||||
{
|
{
|
||||||
//MediaTrack track = new MediaTrack();
|
MediaTrack track = new MediaTrack();
|
||||||
//Add(track, GetLanguage(GetPropertyString($"track-list/{i}/lang")));
|
Add(track, GetLanguage(GetPropertyString($"track-list/{i}/lang")));
|
||||||
//track.Text = "S: " + track.Text.Trim(' ', ',');
|
Add(track, GetPropertyString($"track-list/{i}/codec").ToUpperEx());
|
||||||
//track.Type = "s";
|
Add(track, GetPropertyBool($"track-list/{i}/forced") ? "Forced" : null);
|
||||||
//track.ID = GetPropertyInt($"track-list/{i}/id");
|
Add(track, GetPropertyBool($"track-list/{i}/default") ? "Default" : null);
|
||||||
//MediaTracks.Add(track);
|
Add(track, GetPropertyBool($"track-list/{i}/external") ? "External" : null);
|
||||||
|
Add(track, title);
|
||||||
|
track.Text = "S: " + track.Text.Trim(' ', ',');
|
||||||
|
track.Type = "s";
|
||||||
|
track.ID = GetPropertyInt($"track-list/{i}/id");
|
||||||
|
MediaTracks.Add(track);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//using (MediaInfo mi = new MediaInfo(path))
|
int editionCount = GetPropertyInt("edition-list/count");
|
||||||
//{
|
|
||||||
// int videoCount = mi.GetCount(MediaInfoStreamKind.Video);
|
|
||||||
|
|
||||||
// for (int i = 0; i < videoCount; i++)
|
for (int i = 0; i < editionCount; i++)
|
||||||
// {
|
{
|
||||||
// MediaTrack track = new MediaTrack();
|
string title = GetPropertyString($"edition-list/{i}/title");
|
||||||
// Add(track, mi.GetVideo(i, "Format"));
|
if (string.IsNullOrEmpty(title))
|
||||||
// Add(track, mi.GetVideo(i, "Format_Profile"));
|
title = "Edition " + i;
|
||||||
// Add(track, mi.GetVideo(i, "Width") + "x" + mi.GetVideo(i, "Height"));
|
MediaTrack track = new MediaTrack();
|
||||||
// Add(track, mi.GetVideo(i, "FrameRate") + " FPS");
|
track.Text = "E: " + title;
|
||||||
// Add(track, mi.GetVideo(i, "Language/String"));
|
track.Type = "e";
|
||||||
// Add(track, mi.GetVideo(i, "Forced") == "Yes" ? "Forced" : "");
|
track.ID = i;
|
||||||
// Add(track, mi.GetVideo(i, "Default") == "Yes" ? "Default" : "");
|
MediaTracks.Add(track);
|
||||||
// Add(track, mi.GetVideo(i, "Title"));
|
}
|
||||||
// track.Text = "V: " + track.Text.Trim(' ', ',');
|
|
||||||
// track.Type = "v";
|
|
||||||
// track.ID = i + 1;
|
|
||||||
// MediaTracks.Add(track);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// int audioCount = mi.GetCount(MediaInfoStreamKind.Audio);
|
|
||||||
|
|
||||||
// for (int i = 0; i < audioCount; i++)
|
|
||||||
// {
|
|
||||||
// MediaTrack track = new MediaTrack();
|
|
||||||
// Add(track, mi.GetAudio(i, "Language/String"));
|
|
||||||
// Add(track, mi.GetAudio(i, "Format"));
|
|
||||||
// Add(track, mi.GetAudio(i, "Format_Profile"));
|
|
||||||
// Add(track, mi.GetAudio(i, "BitRate/String"));
|
|
||||||
// Add(track, mi.GetAudio(i, "Channel(s)/String"));
|
|
||||||
// Add(track, mi.GetAudio(i, "SamplingRate/String"));
|
|
||||||
// Add(track, mi.GetAudio(i, "Forced") == "Yes" ? "Forced" : "");
|
|
||||||
// Add(track, mi.GetAudio(i, "Default") == "Yes" ? "Default" : "");
|
|
||||||
// Add(track, mi.GetAudio(i, "Title"));
|
|
||||||
// track.Text = "A: " + track.Text.Trim(' ', ',');
|
|
||||||
// track.Type = "a";
|
|
||||||
// track.ID = i + 1;
|
|
||||||
// MediaTracks.Add(track);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// int subCount = mi.GetCount(MediaInfoStreamKind.Text);
|
|
||||||
|
|
||||||
// for (int i = 0; i < subCount; i++)
|
|
||||||
// {
|
|
||||||
// MediaTrack track = new MediaTrack();
|
|
||||||
// Add(track, mi.GetText(i, "Language/String"));
|
|
||||||
// Add(track, mi.GetText(i, "Format"));
|
|
||||||
// Add(track, mi.GetText(i, "Format_Profile"));
|
|
||||||
// Add(track, mi.GetText(i, "Forced") == "Yes" ? "Forced" : "");
|
|
||||||
// Add(track, mi.GetText(i, "Default") == "Yes" ? "Default" : "");
|
|
||||||
// Add(track, mi.GetText(i, "Title"));
|
|
||||||
// track.Text = "S: " + track.Text.Trim(' ', ',');
|
|
||||||
// track.Type = "s";
|
|
||||||
// track.ID = i + 1;
|
|
||||||
// MediaTracks.Add(track);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// int editionCount = GetPropertyInt("edition-list/count");
|
|
||||||
|
|
||||||
// for (int i = 0; i < editionCount; i++)
|
|
||||||
// {
|
|
||||||
// string title = GetPropertyString($"edition-list/{i}/title");
|
|
||||||
// if (string.IsNullOrEmpty(title))
|
|
||||||
// title = "Edition " + i;
|
|
||||||
// MediaTrack track = new MediaTrack();
|
|
||||||
// track.Text = "E: " + title;
|
|
||||||
// track.Type = "e";
|
|
||||||
// track.ID = i;
|
|
||||||
// MediaTracks.Add(track);
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//lock (Chapters)
|
lock (Chapters)
|
||||||
//{
|
{
|
||||||
// Chapters.Clear();
|
Chapters.Clear();
|
||||||
// int count = GetPropertyInt("chapter-list/count");
|
int count = GetPropertyInt("chapter-list/count");
|
||||||
|
|
||||||
// for (int x = 0; x < count; x++)
|
for (int x = 0; x < count; x++)
|
||||||
// {
|
{
|
||||||
// string text = GetPropertyString($"chapter-list/{x}/title");
|
string text = GetPropertyString($"chapter-list/{x}/title");
|
||||||
// double time = GetPropertyDouble($"chapter-list/{x}/time");
|
double time = GetPropertyDouble($"chapter-list/{x}/time");
|
||||||
|
|
||||||
// if (string.IsNullOrEmpty(text))
|
if (string.IsNullOrEmpty(text))
|
||||||
// text = "Chapter " + (x + 1);
|
text = "Chapter " + (x + 1);
|
||||||
|
|
||||||
// Chapters.Add(new KeyValuePair<string, double>(text, time));
|
Chapters.Add(new KeyValuePair<string, double>(text, time));
|
||||||
// }
|
}
|
||||||
//}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ReadMetaDataUsingMediaInfo()
|
public void UpdateTrackDataUsingMediaInfo()
|
||||||
{
|
{
|
||||||
string path = GetPropertyString("path");
|
string path = GetPropertyString("path");
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user