Initial commit: Add ShadowStream media application with file scanning and classification

This commit is contained in:
unknown 2025-05-23 20:17:46 +02:00
commit 323fc9e120
955 changed files with 25791 additions and 0 deletions

13
.idea/.idea.VPR_ShadowStream/.idea/.gitignore generated vendored Normal file
View File

@ -0,0 +1,13 @@
# Default ignored files
/shelf/
/workspace.xml
# Rider ignored files
/projectSettingsUpdater.xml
/modules.xml
/.idea.file finder test.iml
/contentModel.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="UserContentModel">
<attachedFolders />
<explicitIncludes />
<explicitExcludes />
</component>
</project>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

View File

@ -0,0 +1,168 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="AutoGeneratedRunConfigurationManager">
<projectFile>ModuleManager/ModuleManager.csproj</projectFile>
<projectFile>Module_Manager/Module_Manager.csproj</projectFile>
<projectFile>Mudule Manager/Mudule Manager.csproj</projectFile>
<projectFile>file finder test/file finder test.csproj</projectFile>
</component>
<component name="AutoImportSettings">
<option name="autoReloadType" value="SELECTIVE" />
</component>
<component name="ChangeListManager">
<list default="true" id="8b992919-b338-42d6-a9e0-9920b3435f35" name="Changes" comment="" />
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="DpaMonitoringSettings">
<option name="firstShow" value="false" />
</component>
<component name="HighlightingSettingsPerFile">
<setting file="file://$PROJECT_DIR$/ShadowStream/LogHelper/LogHelper.cs" root0="FORCE_HIGHLIGHTING" />
<setting file="file://$PROJECT_DIR$/ShadowStream/MainWindow.xaml" root0="FORCE_HIGHLIGHTING" />
<setting file="file://$PROJECT_DIR$/ShadowStream/MainWindow.xaml.cs" root0="FORCE_HIGHLIGHTING" />
</component>
<component name="ProblemsViewState">
<option name="selectedTabId" value="SWEA" />
</component>
<component name="ProjectColorInfo">{
&quot;associatedIndex&quot;: 5
}</component>
<component name="ProjectId" id="2wOylS2xokAGlzRMyidMR7063vW" />
<component name="ProjectViewState">
<option name="hideEmptyMiddlePackages" value="true" />
<option name="showLibraryContents" value="true" />
</component>
<component name="PropertiesComponent">{
&quot;keyToString&quot;: {
&quot;.NET Project.file finder test.executor&quot;: &quot;Run&quot;,
&quot;RunOnceActivity.ChatTagsLlmMigration&quot;: &quot;true&quot;,
&quot;RunOnceActivity.CodyAccountHistoryMigration&quot;: &quot;true&quot;,
&quot;RunOnceActivity.CodyAccountsIdsRefresh&quot;: &quot;true&quot;,
&quot;RunOnceActivity.CodyAssignOrphanedChatsToActiveAccount&quot;: &quot;true&quot;,
&quot;RunOnceActivity.CodyConvertUrlToCodebaseName&quot;: &quot;true&quot;,
&quot;RunOnceActivity.CodyHistoryLlmMigration&quot;: &quot;true&quot;,
&quot;RunOnceActivity.CodyMigrateChatHistory-v2&quot;: &quot;true&quot;,
&quot;RunOnceActivity.CodyProjectSettingsMigration&quot;: &quot;true&quot;,
&quot;RunOnceActivity.DeprecatedChatLlmMigration&quot;: &quot;true&quot;,
&quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
&quot;RunOnceActivity.ToggleCodyToolWindowAfterMigration&quot;: &quot;true&quot;,
&quot;node.js.detected.package.eslint&quot;: &quot;true&quot;,
&quot;node.js.detected.package.tslint&quot;: &quot;true&quot;,
&quot;node.js.selected.package.eslint&quot;: &quot;(autodetect)&quot;,
&quot;node.js.selected.package.tslint&quot;: &quot;(autodetect)&quot;,
&quot;nodejs_package_manager_path&quot;: &quot;npm&quot;,
&quot;settings.editor.selected.configurable&quot;: &quot;com.sourcegraph.cody.config.ui.CodyConfigurable&quot;,
&quot;vue.rearranger.settings.migration&quot;: &quot;true&quot;
}
}</component>
<component name="RunManager" selected=".NET Project.file finder test">
<configuration name="ModuleManager" type="DotNetProject" factoryName=".NET Project">
<option name="EXE_PATH" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="PASS_PARENT_ENVS" value="1" />
<option name="USE_EXTERNAL_CONSOLE" value="0" />
<option name="USE_MONO" value="0" />
<option name="RUNTIME_ARGUMENTS" value="" />
<option name="PROJECT_PATH" value="$PROJECT_DIR$/ShadowStream/ShadowStream.csproj" />
<option name="PROJECT_EXE_PATH_TRACKING" value="1" />
<option name="PROJECT_ARGUMENTS_TRACKING" value="1" />
<option name="PROJECT_WORKING_DIRECTORY_TRACKING" value="1" />
<option name="PROJECT_KIND" value="DotNetCore" />
<option name="PROJECT_TFM" value="" />
<method v="2">
<option name="Build" />
</method>
</configuration>
<configuration name="Module_Manager" type="DotNetProject" factoryName=".NET Project">
<option name="EXE_PATH" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="PASS_PARENT_ENVS" value="1" />
<option name="USE_EXTERNAL_CONSOLE" value="0" />
<option name="USE_MONO" value="0" />
<option name="RUNTIME_ARGUMENTS" value="" />
<option name="PROJECT_PATH" value="$PROJECT_DIR$/Module_Manager/Module_Manager.csproj" />
<option name="PROJECT_EXE_PATH_TRACKING" value="1" />
<option name="PROJECT_ARGUMENTS_TRACKING" value="1" />
<option name="PROJECT_WORKING_DIRECTORY_TRACKING" value="1" />
<option name="PROJECT_KIND" value="DotNetCore" />
<option name="PROJECT_TFM" value="" />
<method v="2">
<option name="Build" />
</method>
</configuration>
<configuration name="Mudule Manager" type="DotNetProject" factoryName=".NET Project">
<option name="EXE_PATH" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="PASS_PARENT_ENVS" value="1" />
<option name="USE_EXTERNAL_CONSOLE" value="0" />
<option name="USE_MONO" value="0" />
<option name="RUNTIME_ARGUMENTS" value="" />
<option name="PROJECT_PATH" value="$PROJECT_DIR$/Mudule Manager/Mudule Manager.csproj" />
<option name="PROJECT_EXE_PATH_TRACKING" value="1" />
<option name="PROJECT_ARGUMENTS_TRACKING" value="1" />
<option name="PROJECT_WORKING_DIRECTORY_TRACKING" value="1" />
<option name="PROJECT_KIND" value="DotNetCore" />
<option name="PROJECT_TFM" value="" />
<method v="2">
<option name="Build" />
</method>
</configuration>
<configuration name="file finder test" type="DotNetProject" factoryName=".NET Project">
<option name="EXE_PATH" value="" />
<option name="PROGRAM_PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="PASS_PARENT_ENVS" value="1" />
<option name="USE_EXTERNAL_CONSOLE" value="0" />
<option name="USE_MONO" value="0" />
<option name="RUNTIME_ARGUMENTS" value="" />
<option name="PROJECT_PATH" value="$PROJECT_DIR$/file finder test/file finder test.csproj" />
<option name="PROJECT_EXE_PATH_TRACKING" value="1" />
<option name="PROJECT_ARGUMENTS_TRACKING" value="1" />
<option name="PROJECT_WORKING_DIRECTORY_TRACKING" value="1" />
<option name="PROJECT_KIND" value="DotNetCore" />
<option name="PROJECT_TFM" value="" />
<method v="2">
<option name="Build" />
</method>
</configuration>
</component>
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
<component name="TaskManager">
<task active="true" id="Default" summary="Default task">
<changelist id="8b992919-b338-42d6-a9e0-9920b3435f35" name="Changes" comment="" />
<created>1745927066187</created>
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
<updated>1745927066187</updated>
<workItem from="1745927067287" duration="5073000" />
<workItem from="1745996630719" duration="6783000" />
<workItem from="1746045982862" duration="1518000" />
<workItem from="1746079248348" duration="10000" />
<workItem from="1746079294192" duration="62000" />
<workItem from="1746776239424" duration="1269000" />
<workItem from="1746793538833" duration="1802000" />
<workItem from="1747381902319" duration="699000" />
<workItem from="1747636814735" duration="1363000" />
<workItem from="1747726736242" duration="3824000" />
<workItem from="1747989719598" duration="13921000" />
</task>
<servers />
</component>
<component name="TypeScriptGeneratedFilesManager">
<option name="version" value="3" />
</component>
<component name="UnityProjectConfiguration" hasMinimizedUI="false" />
<component name="VcsManagerConfiguration">
<option name="CLEAR_INITIAL_COMMIT_MESSAGE" value="true" />
</component>
<component name="XSLT-Support.FileAssociations.UIState">
<expand />
<select />
</component>
</project>

9
ShadowStream/App.xaml Normal file
View File

@ -0,0 +1,9 @@
<Application x:Class="ModuleManager.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:ModuleManager"
StartupUri="MainWindow.xaml">
<Application.Resources>
</Application.Resources>
</Application>

12
ShadowStream/App.xaml.cs Normal file
View File

@ -0,0 +1,12 @@
using System.Configuration;
using System.Data;
using System.Windows;
namespace ModuleManager;
/// <summary>
/// Interaction logic for App.xaml
/// </summary>
public partial class App : Application
{
}

View File

@ -0,0 +1,10 @@
using System.Windows;
[assembly: ThemeInfo(
ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
//(used if a resource is not found in the page,
// or application resource dictionaries)
ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
//(used if a resource is not found in the page,
// app, or any theme specific resource dictionaries)
)]

View File

@ -0,0 +1,43 @@
using System;
using System.Collections.Generic;
//namespace Scheckenrennen_GUI.modules
//Quinn Grafe Schnecken rennen
namespace ShadowStream.LogHelper
{
public class LogHelper
{
private List<string> logEntries;
public LogHelper()
{
logEntries = new List<string>();
}
public void Log(string entry)
{
AddEntry($"[{DateTime.Now:HH:mm:ss}] [INFO ] {entry}");
}
public void Warn(string entry)
{
AddEntry($"[{DateTime.Now:HH:mm:ss}] [WARN ] {entry}");
}
public void Error(string entry)
{
AddEntry($"[{DateTime.Now:HH:mm:ss}] [ERROR] {entry}");
}
private void AddEntry(string entry)
{
logEntries.Add(entry);
}
public List<string> GetEntries()
{
return logEntries;
}
}
}

View File

@ -0,0 +1,13 @@
<!-- Quinn Grafe Schencken rennen-->
<Window x:Class="ModuleManager.LogWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:ModuleManager"
mc:Ignorable="d"
Title="LogWindow" Height="450" Width="800">
<Grid>
<TextBox Foreground="Gray" Background="Black" FontFamily="consolas" Name="LogBox" IsReadOnly="True"></TextBox>
</Grid>
</Window>

View File

@ -0,0 +1,24 @@
using System;
using System.Collections.Generic;
using System.Windows;
//Quinn Grafe Schnecken rennen.
namespace ModuleManager;
public partial class LogWindow : Window
{
public LogWindow(List<string> logText)
{
InitializeComponent();
foreach (var s in logText)
{
LogBox.Text += s + Environment.NewLine;
}
}
public void AddLogEntry(string logEntry)
{
LogBox.Text += logEntry + Environment.NewLine;
// Force scroll to the bottom
LogBox.ScrollToEnd();
}
}

12
ShadowStream/LogIn.xaml Normal file
View File

@ -0,0 +1,12 @@
<Window x:Class="ShadowStream.LogIn"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:ShadowStream"
mc:Ignorable="d"
Title="LogIn" Height="450" Width="800">
<Grid>
</Grid>
</Window>

View File

@ -0,0 +1,14 @@
using System.Windows;
using file_finder__test;
using file_finder__test.DataBaseModules;
namespace ShadowStream;
public partial class LogIn : Window
{
DataBase dataBase = new DataBase();
public LogIn()
{
InitializeComponent();
}
}

View File

@ -0,0 +1,32 @@
<Window x:Class="ModuleManager.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:ModuleManager"
xmlns:vlc="clr-namespace:LibVLCSharp.WPF;assembly=LibVLCSharp.WPF"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid Name="MaiGrid" ShowGridLines="True">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="200"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="30"></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition Height="50"></RowDefinition>
</Grid.RowDefinitions>
<!--top pannel-->
<DockPanel Grid.Column="1">
</DockPanel>
<!--Categorien-->
<DockPanel Name="Categorien" Grid.Row="1">
</DockPanel>
<Button Grid.Row="2" Content="Settings"></Button>
<vlc:VideoView Grid.Column="1" Grid.Row="1" Grid.RowSpan="2"></vlc:VideoView>
</Grid>
</Window>

View File

@ -0,0 +1,99 @@
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using file_finder__test;
using ShadowStream;
using ShadowStream.LogHelper;
using ShadowStream.Obejeckte;
using System.Threading;
namespace ModuleManager;
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
//Quinn and Reda and Yazan
public partial class MainWindow : Window
{
private static LogHelper loghelper = new LogHelper();
LogWindow log = new LogWindow(loghelper.GetEntries());
private Catagory Muvie = new Catagory("Muvie");
private Catagory Serie = new Catagory("Serie");
private Catagory Music = new Catagory("Music");
private Catagory Photo = new Catagory("Photos");
List<string> suportedVidioFiles = new List<string>();
List<string> suportedMusicFiles = new List<string>();
List<string> suportedPhotoFiles = new List<string>();
List<string> dirs = new List<string>();
FileScanner fileScanner;
public MainWindow()
{
InitializeComponent();
//Initialise but Hide
log.Hide();
this.Hide();
//Begin Login Process
var login = new LogIn();
login.Show();
//adding all extensions... example values added
suportedVidioFiles.Add("mp4");
suportedVidioFiles.Add("mkv");
suportedMusicFiles.Add("wav");
suportedMusicFiles.Add("mp3");
suportedPhotoFiles.Add("jpg");
Createscan();
dirs.Add("C:/");
//execute and wait for task completion
var tmp = fileScanner.ScanAllDrivesAsync();
//load json parallel to finding drives
//add code laiter
tmp.Wait();
foreach (var VARIABLE in tmp.Result)
{
dirs.Add(VARIABLE);
}
}
void LoadFromJson(string path, object obj)
{
}
void Createscan()
{
int count = 0;
string[] tmp = new string[suportedMusicFiles.Count + suportedVidioFiles.Count + suportedPhotoFiles.Count];
foreach (var suportedVidioFile in suportedVidioFiles)
{
tmp[count] = suportedVidioFile;
count++;
}
foreach (var suportedMusicFile in suportedMusicFiles)
{
tmp[count] = suportedMusicFile;
count++;
}
foreach (var suportedPhotoFile in suportedPhotoFiles)
{
tmp[count] = suportedPhotoFile;
count++;
}
fileScanner = new FileScanner(tmp);
}
}

View File

@ -0,0 +1,22 @@
namespace ShadowStream.Obejeckte;
//Quinn
public class Catagory
{
public readonly string name;
List<Item> items = new List<Item>();
public Catagory(string name)
{
this.name = name;
}
public void addItem(Item item)
{
items.Add(item);
}
public void removeAllItems()
{
items.Clear();
}
}

View File

@ -0,0 +1,52 @@
using System.Windows.Media.Imaging;
using System.Windows.Controls;
namespace ShadowStream.Obejeckte;
//Quinn
public class Item
{
Label name;
string path;
string type;
BitmapImage image;
Button playButton;
bool isFoto;
public Item(string path, string type,BitmapImage image,bool isFoto)
{
this.path = path;
this.type = type;
this.name = new Label(){Name="name",Content = name};
this.image = image;
this.playButton = new Button();
playButton.Content = "Play";
this.isFoto = isFoto;
}
public (Label ,string,Button,BitmapImage,DockPanel) CreateLable(int[] gridPosition, Grid grid)
{
DockPanel dockPanel = new DockPanel();
DockPanel.SetDock(name, Dock.Top);
dockPanel.Children.Add(name);
dockPanel.Children.Add(playButton);
if (isFoto){
playButton.Content = "Show";
}
return (name,path,playButton,image,dockPanel);
}
public string getLink()
{
return path;
}
public string getFormat()
{
return type;
}
public string getName()
{
return name.Content.ToString();
}
}

View File

@ -0,0 +1,24 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net8.0-windows</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<UseWPF>true</UseWPF>
<AssemblyName>ShadowStream</AssemblyName>
<RootNamespace>ShadowStream</RootNamespace>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\file finder test\file finder test.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="LibVLCSharp" Version="3.9.3" />
<PackageReference Include="LibVLCSharp.WPF" Version="3.9.3" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
<PackageReference Include="VideoLAN.LibVLC.Windows" Version="3.0.21" />
</ItemGroup>
</Project>

Binary file not shown.

View File

@ -0,0 +1,847 @@
{
"runtimeTarget": {
"name": ".NETCoreApp,Version=v8.0",
"signature": ""
},
"compilationOptions": {},
"targets": {
".NETCoreApp,Version=v8.0": {
"ShadowStream/1.0.0": {
"dependencies": {
"LibVLCSharp": "3.9.3",
"LibVLCSharp.WPF": "3.9.3",
"VideoLAN.LibVLC.Windows": "3.0.21"
},
"runtime": {
"ShadowStream.dll": {}
}
},
"LibVLCSharp/3.9.3": {
"dependencies": {
"System.Net.Http": "4.3.4",
"System.Private.Uri": "4.3.2",
"System.Text.RegularExpressions": "4.3.1"
},
"runtime": {
"lib/net8.0/LibVLCSharp.dll": {
"assemblyVersion": "3.9.3.0",
"fileVersion": "3.9.3.0"
}
}
},
"LibVLCSharp.WPF/3.9.3": {
"dependencies": {
"LibVLCSharp": "3.9.3"
},
"runtime": {
"lib/net6.0-windows7.0/LibVLCSharp.WPF.dll": {
"assemblyVersion": "3.9.3.0",
"fileVersion": "3.9.3.0"
}
}
},
"Microsoft.NETCore.Platforms/1.1.1": {},
"Microsoft.NETCore.Targets/1.1.3": {},
"runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {},
"runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {},
"runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {},
"runtime.native.System/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.1",
"Microsoft.NETCore.Targets": "1.1.3"
}
},
"runtime.native.System.Net.Http/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.1",
"Microsoft.NETCore.Targets": "1.1.3"
}
},
"runtime.native.System.Security.Cryptography.Apple/4.3.0": {
"dependencies": {
"runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple": "4.3.0"
}
},
"runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {
"dependencies": {
"runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
"runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
"runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
"runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
"runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
"runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
"runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
"runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
"runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2",
"runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2"
}
},
"runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {},
"runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {},
"runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple/4.3.0": {},
"runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {},
"runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {},
"runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {},
"runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {},
"runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {},
"System.Collections/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.1",
"Microsoft.NETCore.Targets": "1.1.3",
"System.Runtime": "4.3.1"
}
},
"System.Collections.Concurrent/4.3.0": {
"dependencies": {
"System.Collections": "4.3.0",
"System.Diagnostics.Debug": "4.3.0",
"System.Diagnostics.Tracing": "4.3.0",
"System.Globalization": "4.3.0",
"System.Reflection": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.1",
"System.Runtime.Extensions": "4.3.0",
"System.Threading": "4.3.0",
"System.Threading.Tasks": "4.3.0"
}
},
"System.Diagnostics.Debug/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.1",
"Microsoft.NETCore.Targets": "1.1.3",
"System.Runtime": "4.3.1"
}
},
"System.Diagnostics.DiagnosticSource/4.3.0": {
"dependencies": {
"System.Collections": "4.3.0",
"System.Diagnostics.Tracing": "4.3.0",
"System.Reflection": "4.3.0",
"System.Runtime": "4.3.1",
"System.Threading": "4.3.0"
}
},
"System.Diagnostics.Tracing/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.1",
"Microsoft.NETCore.Targets": "1.1.3",
"System.Runtime": "4.3.1"
}
},
"System.Globalization/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.1",
"Microsoft.NETCore.Targets": "1.1.3",
"System.Runtime": "4.3.1"
}
},
"System.Globalization.Calendars/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.1",
"Microsoft.NETCore.Targets": "1.1.3",
"System.Globalization": "4.3.0",
"System.Runtime": "4.3.1"
}
},
"System.Globalization.Extensions/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.1",
"System.Globalization": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.1",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.InteropServices": "4.3.0"
}
},
"System.IO/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.1",
"Microsoft.NETCore.Targets": "1.1.3",
"System.Runtime": "4.3.1",
"System.Text.Encoding": "4.3.0",
"System.Threading.Tasks": "4.3.0"
}
},
"System.IO.FileSystem/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.1",
"Microsoft.NETCore.Targets": "1.1.3",
"System.IO": "4.3.0",
"System.IO.FileSystem.Primitives": "4.3.0",
"System.Runtime": "4.3.1",
"System.Runtime.Handles": "4.3.0",
"System.Text.Encoding": "4.3.0",
"System.Threading.Tasks": "4.3.0"
}
},
"System.IO.FileSystem.Primitives/4.3.0": {
"dependencies": {
"System.Runtime": "4.3.1"
}
},
"System.Linq/4.3.0": {
"dependencies": {
"System.Collections": "4.3.0",
"System.Diagnostics.Debug": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.1",
"System.Runtime.Extensions": "4.3.0"
}
},
"System.Net.Http/4.3.4": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.1",
"System.Collections": "4.3.0",
"System.Diagnostics.Debug": "4.3.0",
"System.Diagnostics.DiagnosticSource": "4.3.0",
"System.Diagnostics.Tracing": "4.3.0",
"System.Globalization": "4.3.0",
"System.Globalization.Extensions": "4.3.0",
"System.IO": "4.3.0",
"System.IO.FileSystem": "4.3.0",
"System.Net.Primitives": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.1",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Security.Cryptography.Algorithms": "4.3.0",
"System.Security.Cryptography.Encoding": "4.3.0",
"System.Security.Cryptography.OpenSsl": "4.3.0",
"System.Security.Cryptography.Primitives": "4.3.0",
"System.Security.Cryptography.X509Certificates": "4.3.0",
"System.Text.Encoding": "4.3.0",
"System.Threading": "4.3.0",
"System.Threading.Tasks": "4.3.0",
"runtime.native.System": "4.3.0",
"runtime.native.System.Net.Http": "4.3.0",
"runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2"
}
},
"System.Net.Primitives/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.1",
"Microsoft.NETCore.Targets": "1.1.3",
"System.Runtime": "4.3.1",
"System.Runtime.Handles": "4.3.0"
}
},
"System.Private.Uri/4.3.2": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.1",
"Microsoft.NETCore.Targets": "1.1.3"
}
},
"System.Reflection/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.1",
"Microsoft.NETCore.Targets": "1.1.3",
"System.IO": "4.3.0",
"System.Reflection.Primitives": "4.3.0",
"System.Runtime": "4.3.1"
}
},
"System.Reflection.Primitives/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.1",
"Microsoft.NETCore.Targets": "1.1.3",
"System.Runtime": "4.3.1"
}
},
"System.Resources.ResourceManager/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.1",
"Microsoft.NETCore.Targets": "1.1.3",
"System.Globalization": "4.3.0",
"System.Reflection": "4.3.0",
"System.Runtime": "4.3.1"
}
},
"System.Runtime/4.3.1": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.1",
"Microsoft.NETCore.Targets": "1.1.3"
}
},
"System.Runtime.Extensions/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.1",
"Microsoft.NETCore.Targets": "1.1.3",
"System.Runtime": "4.3.1"
}
},
"System.Runtime.Handles/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.1",
"Microsoft.NETCore.Targets": "1.1.3",
"System.Runtime": "4.3.1"
}
},
"System.Runtime.InteropServices/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.1",
"Microsoft.NETCore.Targets": "1.1.3",
"System.Reflection": "4.3.0",
"System.Reflection.Primitives": "4.3.0",
"System.Runtime": "4.3.1",
"System.Runtime.Handles": "4.3.0"
}
},
"System.Runtime.Numerics/4.3.0": {
"dependencies": {
"System.Globalization": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.1",
"System.Runtime.Extensions": "4.3.0"
}
},
"System.Security.Cryptography.Algorithms/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.1",
"System.Collections": "4.3.0",
"System.IO": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.1",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Runtime.Numerics": "4.3.0",
"System.Security.Cryptography.Encoding": "4.3.0",
"System.Security.Cryptography.Primitives": "4.3.0",
"System.Text.Encoding": "4.3.0",
"runtime.native.System.Security.Cryptography.Apple": "4.3.0",
"runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2"
}
},
"System.Security.Cryptography.Cng/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.1",
"System.IO": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.1",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Security.Cryptography.Algorithms": "4.3.0",
"System.Security.Cryptography.Encoding": "4.3.0",
"System.Security.Cryptography.Primitives": "4.3.0",
"System.Text.Encoding": "4.3.0"
}
},
"System.Security.Cryptography.Csp/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.1",
"System.IO": "4.3.0",
"System.Reflection": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.1",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Security.Cryptography.Algorithms": "4.3.0",
"System.Security.Cryptography.Encoding": "4.3.0",
"System.Security.Cryptography.Primitives": "4.3.0",
"System.Text.Encoding": "4.3.0",
"System.Threading": "4.3.0"
}
},
"System.Security.Cryptography.Encoding/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.1",
"System.Collections": "4.3.0",
"System.Collections.Concurrent": "4.3.0",
"System.Linq": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.1",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Security.Cryptography.Primitives": "4.3.0",
"System.Text.Encoding": "4.3.0",
"runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2"
}
},
"System.Security.Cryptography.OpenSsl/4.3.0": {
"dependencies": {
"System.Collections": "4.3.0",
"System.IO": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.1",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Runtime.Numerics": "4.3.0",
"System.Security.Cryptography.Algorithms": "4.3.0",
"System.Security.Cryptography.Encoding": "4.3.0",
"System.Security.Cryptography.Primitives": "4.3.0",
"System.Text.Encoding": "4.3.0",
"runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2"
}
},
"System.Security.Cryptography.Primitives/4.3.0": {
"dependencies": {
"System.Diagnostics.Debug": "4.3.0",
"System.Globalization": "4.3.0",
"System.IO": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.1",
"System.Threading": "4.3.0",
"System.Threading.Tasks": "4.3.0"
}
},
"System.Security.Cryptography.X509Certificates/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.1",
"System.Collections": "4.3.0",
"System.Diagnostics.Debug": "4.3.0",
"System.Globalization": "4.3.0",
"System.Globalization.Calendars": "4.3.0",
"System.IO": "4.3.0",
"System.IO.FileSystem": "4.3.0",
"System.IO.FileSystem.Primitives": "4.3.0",
"System.Resources.ResourceManager": "4.3.0",
"System.Runtime": "4.3.1",
"System.Runtime.Extensions": "4.3.0",
"System.Runtime.Handles": "4.3.0",
"System.Runtime.InteropServices": "4.3.0",
"System.Runtime.Numerics": "4.3.0",
"System.Security.Cryptography.Algorithms": "4.3.0",
"System.Security.Cryptography.Cng": "4.3.0",
"System.Security.Cryptography.Csp": "4.3.0",
"System.Security.Cryptography.Encoding": "4.3.0",
"System.Security.Cryptography.OpenSsl": "4.3.0",
"System.Security.Cryptography.Primitives": "4.3.0",
"System.Text.Encoding": "4.3.0",
"System.Threading": "4.3.0",
"runtime.native.System": "4.3.0",
"runtime.native.System.Net.Http": "4.3.0",
"runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2"
}
},
"System.Text.Encoding/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.1",
"Microsoft.NETCore.Targets": "1.1.3",
"System.Runtime": "4.3.1"
}
},
"System.Text.RegularExpressions/4.3.1": {
"dependencies": {
"System.Runtime": "4.3.1"
}
},
"System.Threading/4.3.0": {
"dependencies": {
"System.Runtime": "4.3.1",
"System.Threading.Tasks": "4.3.0"
}
},
"System.Threading.Tasks/4.3.0": {
"dependencies": {
"Microsoft.NETCore.Platforms": "1.1.1",
"Microsoft.NETCore.Targets": "1.1.3",
"System.Runtime": "4.3.1"
}
},
"VideoLAN.LibVLC.Windows/3.0.21": {},
"file finder test/1.0.0": {
"runtime": {
"file finder test.dll": {
"assemblyVersion": "1.0.0",
"fileVersion": "1.0.0.0"
}
}
}
}
},
"libraries": {
"ShadowStream/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
},
"LibVLCSharp/3.9.3": {
"type": "package",
"serviceable": true,
"sha512": "sha512-af6EBu2bQksw3u6WQ6f18aJN7GenOMmGY8WAAVr2p2RCESg5Usau1/8yxWIJCjsasUY5wQjKAKdVpGpvGFtP+g==",
"path": "libvlcsharp/3.9.3",
"hashPath": "libvlcsharp.3.9.3.nupkg.sha512"
},
"LibVLCSharp.WPF/3.9.3": {
"type": "package",
"serviceable": true,
"sha512": "sha512-Kh7Zz2ItFzrI0vgWF7qT7rHl4+KWsxmqLy3K7DD9Pm7xDIbmheL7P+cHJhgvCPTT2qtEniCD13ctiDe5sDvh2Q==",
"path": "libvlcsharp.wpf/3.9.3",
"hashPath": "libvlcsharp.wpf.3.9.3.nupkg.sha512"
},
"Microsoft.NETCore.Platforms/1.1.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-TMBuzAHpTenGbGgk0SMTwyEkyijY/Eae4ZGsFNYJvAr/LDn1ku3Etp3FPxChmDp5HHF3kzJuoaa08N0xjqAJfQ==",
"path": "microsoft.netcore.platforms/1.1.1",
"hashPath": "microsoft.netcore.platforms.1.1.1.nupkg.sha512"
},
"Microsoft.NETCore.Targets/1.1.3": {
"type": "package",
"serviceable": true,
"sha512": "sha512-3Wrmi0kJDzClwAC+iBdUBpEKmEle8FQNsCs77fkiOIw/9oYA07bL1EZNX0kQ2OMN3xpwvl0vAtOCYY3ndDNlhQ==",
"path": "microsoft.netcore.targets/1.1.3",
"hashPath": "microsoft.netcore.targets.1.1.3.nupkg.sha512"
},
"runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-7VSGO0URRKoMEAq0Sc9cRz8mb6zbyx/BZDEWhgPdzzpmFhkam3fJ1DAGWFXBI4nGlma+uPKpfuMQP5LXRnOH5g==",
"path": "runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl/4.3.2",
"hashPath": "runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg.sha512"
},
"runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-0oAaTAm6e2oVH+/Zttt0cuhGaePQYKII1dY8iaqP7CvOpVKgLybKRFvQjXR2LtxXOXTVPNv14j0ot8uV+HrUmw==",
"path": "runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl/4.3.2",
"hashPath": "runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg.sha512"
},
"runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-G24ibsCNi5Kbz0oXWynBoRgtGvsw5ZSVEWjv13/KiCAM8C6wz9zzcCniMeQFIkJ2tasjo2kXlvlBZhplL51kGg==",
"path": "runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl/4.3.2",
"hashPath": "runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg.sha512"
},
"runtime.native.System/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-c/qWt2LieNZIj1jGnVNsE2Kl23Ya2aSTBuXMD6V7k9KWr6l16Tqdwq+hJScEpWER9753NWC8h96PaVNY5Ld7Jw==",
"path": "runtime.native.system/4.3.0",
"hashPath": "runtime.native.system.4.3.0.nupkg.sha512"
},
"runtime.native.System.Net.Http/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-ZVuZJqnnegJhd2k/PtAbbIcZ3aZeITq3sj06oKfMBSfphW3HDmk/t4ObvbOk/JA/swGR0LNqMksAh/f7gpTROg==",
"path": "runtime.native.system.net.http/4.3.0",
"hashPath": "runtime.native.system.net.http.4.3.0.nupkg.sha512"
},
"runtime.native.System.Security.Cryptography.Apple/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-DloMk88juo0OuOWr56QG7MNchmafTLYWvABy36izkrLI5VledI0rq28KGs1i9wbpeT9NPQrx/wTf8U2vazqQ3Q==",
"path": "runtime.native.system.security.cryptography.apple/4.3.0",
"hashPath": "runtime.native.system.security.cryptography.apple.4.3.0.nupkg.sha512"
},
"runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-QR1OwtwehHxSeQvZKXe+iSd+d3XZNkEcuWMFYa2i0aG1l+lR739HPicKMlTbJst3spmeekDVBUS7SeS26s4U/g==",
"path": "runtime.native.system.security.cryptography.openssl/4.3.2",
"hashPath": "runtime.native.system.security.cryptography.openssl.4.3.2.nupkg.sha512"
},
"runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-I+GNKGg2xCHueRd1m9PzeEW7WLbNNLznmTuEi8/vZX71HudUbx1UTwlGkiwMri7JLl8hGaIAWnA/GONhu+LOyQ==",
"path": "runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl/4.3.2",
"hashPath": "runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg.sha512"
},
"runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-1Z3TAq1ytS1IBRtPXJvEUZdVsfWfeNEhBkbiOCGEl9wwAfsjP2lz3ZFDx5tq8p60/EqbS0HItG5piHuB71RjoA==",
"path": "runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl/4.3.2",
"hashPath": "runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg.sha512"
},
"runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-kVXCuMTrTlxq4XOOMAysuNwsXWpYeboGddNGpIgNSZmv1b6r/s/DPk0fYMB7Q5Qo4bY68o48jt4T4y5BVecbCQ==",
"path": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple/4.3.0",
"hashPath": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple.4.3.0.nupkg.sha512"
},
"runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-6mU/cVmmHtQiDXhnzUImxIcDL48GbTk+TsptXyJA+MIOG9LRjPoAQC/qBFB7X+UNyK86bmvGwC8t+M66wsYC8w==",
"path": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl/4.3.2",
"hashPath": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg.sha512"
},
"runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-vjwG0GGcTW/PPg6KVud8F9GLWYuAV1rrw1BKAqY0oh4jcUqg15oYF1+qkGR2x2ZHM4DQnWKQ7cJgYbfncz/lYg==",
"path": "runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl/4.3.2",
"hashPath": "runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg.sha512"
},
"runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-7KMFpTkHC/zoExs+PwP8jDCWcrK9H6L7soowT80CUx3e+nxP/AFnq0AQAW5W76z2WYbLAYCRyPfwYFG6zkvQRw==",
"path": "runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl/4.3.2",
"hashPath": "runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg.sha512"
},
"runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-xrlmRCnKZJLHxyyLIqkZjNXqgxnKdZxfItrPkjI+6pkRo5lHX8YvSZlWrSI5AVwLMi4HbNWP7064hcAWeZKp5w==",
"path": "runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl/4.3.2",
"hashPath": "runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg.sha512"
},
"runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-leXiwfiIkW7Gmn7cgnNcdtNAU70SjmKW3jxGj1iKHOvdn0zRWsgv/l2OJUO5zdGdiv2VRFnAsxxhDgMzofPdWg==",
"path": "runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl/4.3.2",
"hashPath": "runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl.4.3.2.nupkg.sha512"
},
"System.Collections/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-3Dcj85/TBdVpL5Zr+gEEBUuFe2icOnLalmEh9hfck1PTYbbyWuZgh4fmm2ysCLTrqLQw6t3TgTyJ+VLp+Qb+Lw==",
"path": "system.collections/4.3.0",
"hashPath": "system.collections.4.3.0.nupkg.sha512"
},
"System.Collections.Concurrent/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-ztl69Xp0Y/UXCL+3v3tEU+lIy+bvjKNUmopn1wep/a291pVPK7dxBd6T7WnlQqRog+d1a/hSsgRsmFnIBKTPLQ==",
"path": "system.collections.concurrent/4.3.0",
"hashPath": "system.collections.concurrent.4.3.0.nupkg.sha512"
},
"System.Diagnostics.Debug/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-ZUhUOdqmaG5Jk3Xdb8xi5kIyQYAA4PnTNlHx1mu9ZY3qv4ELIdKbnL/akbGaKi2RnNUWaZsAs31rvzFdewTj2g==",
"path": "system.diagnostics.debug/4.3.0",
"hashPath": "system.diagnostics.debug.4.3.0.nupkg.sha512"
},
"System.Diagnostics.DiagnosticSource/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-tD6kosZnTAGdrEa0tZSuFyunMbt/5KYDnHdndJYGqZoNy00XVXyACd5d6KnE1YgYv3ne2CjtAfNXo/fwEhnKUA==",
"path": "system.diagnostics.diagnosticsource/4.3.0",
"hashPath": "system.diagnostics.diagnosticsource.4.3.0.nupkg.sha512"
},
"System.Diagnostics.Tracing/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-rswfv0f/Cqkh78rA5S8eN8Neocz234+emGCtTF3lxPY96F+mmmUen6tbn0glN6PMvlKQb9bPAY5e9u7fgPTkKw==",
"path": "system.diagnostics.tracing/4.3.0",
"hashPath": "system.diagnostics.tracing.4.3.0.nupkg.sha512"
},
"System.Globalization/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-kYdVd2f2PAdFGblzFswE4hkNANJBKRmsfa2X5LG2AcWE1c7/4t0pYae1L8vfZ5xvE2nK/R9JprtToA61OSHWIg==",
"path": "system.globalization/4.3.0",
"hashPath": "system.globalization.4.3.0.nupkg.sha512"
},
"System.Globalization.Calendars/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-GUlBtdOWT4LTV3I+9/PJW+56AnnChTaOqqTLFtdmype/L500M2LIyXgmtd9X2P2VOkmJd5c67H5SaC2QcL1bFA==",
"path": "system.globalization.calendars/4.3.0",
"hashPath": "system.globalization.calendars.4.3.0.nupkg.sha512"
},
"System.Globalization.Extensions/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-FhKmdR6MPG+pxow6wGtNAWdZh7noIOpdD5TwQ3CprzgIE1bBBoim0vbR1+AWsWjQmU7zXHgQo4TWSP6lCeiWcQ==",
"path": "system.globalization.extensions/4.3.0",
"hashPath": "system.globalization.extensions.4.3.0.nupkg.sha512"
},
"System.IO/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-3qjaHvxQPDpSOYICjUoTsmoq5u6QJAFRUITgeT/4gqkF1bajbSmb1kwSxEA8AHlofqgcKJcM8udgieRNhaJ5Cg==",
"path": "system.io/4.3.0",
"hashPath": "system.io.4.3.0.nupkg.sha512"
},
"System.IO.FileSystem/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-3wEMARTnuio+ulnvi+hkRNROYwa1kylvYahhcLk4HSoVdl+xxTFVeVlYOfLwrDPImGls0mDqbMhrza8qnWPTdA==",
"path": "system.io.filesystem/4.3.0",
"hashPath": "system.io.filesystem.4.3.0.nupkg.sha512"
},
"System.IO.FileSystem.Primitives/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-6QOb2XFLch7bEc4lIcJH49nJN2HV+OC3fHDgsLVsBVBk3Y4hFAnOBGzJ2lUu7CyDDFo9IBWkSsnbkT6IBwwiMw==",
"path": "system.io.filesystem.primitives/4.3.0",
"hashPath": "system.io.filesystem.primitives.4.3.0.nupkg.sha512"
},
"System.Linq/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-5DbqIUpsDp0dFftytzuMmc0oeMdQwjcP/EWxsksIz/w1TcFRkZ3yKKz0PqiYFMmEwPSWw+qNVqD7PJ889JzHbw==",
"path": "system.linq/4.3.0",
"hashPath": "system.linq.4.3.0.nupkg.sha512"
},
"System.Net.Http/4.3.4": {
"type": "package",
"serviceable": true,
"sha512": "sha512-aOa2d51SEbmM+H+Csw7yJOuNZoHkrP2XnAurye5HWYgGVVU54YZDvsLUYRv6h18X3sPnjNCANmN7ZhIPiqMcjA==",
"path": "system.net.http/4.3.4",
"hashPath": "system.net.http.4.3.4.nupkg.sha512"
},
"System.Net.Primitives/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-qOu+hDwFwoZPbzPvwut2qATe3ygjeQBDQj91xlsaqGFQUI5i4ZnZb8yyQuLGpDGivEPIt8EJkd1BVzVoP31FXA==",
"path": "system.net.primitives/4.3.0",
"hashPath": "system.net.primitives.4.3.0.nupkg.sha512"
},
"System.Private.Uri/4.3.2": {
"type": "package",
"serviceable": true,
"sha512": "sha512-o1+7RJnu3Ik3PazR7Z7tJhjPdE000Eq2KGLLWhqJJKXj04wrS8lwb1OFtDF9jzXXADhUuZNJZlPc98uwwqmpFA==",
"path": "system.private.uri/4.3.2",
"hashPath": "system.private.uri.4.3.2.nupkg.sha512"
},
"System.Reflection/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-KMiAFoW7MfJGa9nDFNcfu+FpEdiHpWgTcS2HdMpDvt9saK3y/G4GwprPyzqjFH9NTaGPQeWNHU+iDlDILj96aQ==",
"path": "system.reflection/4.3.0",
"hashPath": "system.reflection.4.3.0.nupkg.sha512"
},
"System.Reflection.Primitives/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-5RXItQz5As4xN2/YUDxdpsEkMhvw3e6aNveFXUn4Hl/udNTCNhnKp8lT9fnc3MhvGKh1baak5CovpuQUXHAlIA==",
"path": "system.reflection.primitives/4.3.0",
"hashPath": "system.reflection.primitives.4.3.0.nupkg.sha512"
},
"System.Resources.ResourceManager/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-/zrcPkkWdZmI4F92gL/TPumP98AVDu/Wxr3CSJGQQ+XN6wbRZcyfSKVoPo17ilb3iOr0cCRqJInGwNMolqhS8A==",
"path": "system.resources.resourcemanager/4.3.0",
"hashPath": "system.resources.resourcemanager.4.3.0.nupkg.sha512"
},
"System.Runtime/4.3.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-abhfv1dTK6NXOmu4bgHIONxHyEqFjW8HwXPmpY9gmll+ix9UNo4XDcmzJn6oLooftxNssVHdJC1pGT9jkSynQg==",
"path": "system.runtime/4.3.1",
"hashPath": "system.runtime.4.3.1.nupkg.sha512"
},
"System.Runtime.Extensions/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-guW0uK0fn5fcJJ1tJVXYd7/1h5F+pea1r7FLSOz/f8vPEqbR2ZAknuRDvTQ8PzAilDveOxNjSfr0CHfIQfFk8g==",
"path": "system.runtime.extensions/4.3.0",
"hashPath": "system.runtime.extensions.4.3.0.nupkg.sha512"
},
"System.Runtime.Handles/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-OKiSUN7DmTWeYb3l51A7EYaeNMnvxwE249YtZz7yooT4gOZhmTjIn48KgSsw2k2lYdLgTKNJw/ZIfSElwDRVgg==",
"path": "system.runtime.handles/4.3.0",
"hashPath": "system.runtime.handles.4.3.0.nupkg.sha512"
},
"System.Runtime.InteropServices/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-uv1ynXqiMK8mp1GM3jDqPCFN66eJ5w5XNomaK2XD+TuCroNTLFGeZ+WCmBMcBDyTFKou3P6cR6J/QsaqDp7fGQ==",
"path": "system.runtime.interopservices/4.3.0",
"hashPath": "system.runtime.interopservices.4.3.0.nupkg.sha512"
},
"System.Runtime.Numerics/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-yMH+MfdzHjy17l2KESnPiF2dwq7T+xLnSJar7slyimAkUh/gTrS9/UQOtv7xarskJ2/XDSNvfLGOBQPjL7PaHQ==",
"path": "system.runtime.numerics/4.3.0",
"hashPath": "system.runtime.numerics.4.3.0.nupkg.sha512"
},
"System.Security.Cryptography.Algorithms/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-W1kd2Y8mYSCgc3ULTAZ0hOP2dSdG5YauTb1089T0/kRcN2MpSAW1izOFROrJgxSlMn3ArsgHXagigyi+ibhevg==",
"path": "system.security.cryptography.algorithms/4.3.0",
"hashPath": "system.security.cryptography.algorithms.4.3.0.nupkg.sha512"
},
"System.Security.Cryptography.Cng/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-03idZOqFlsKRL4W+LuCpJ6dBYDUWReug6lZjBa3uJWnk5sPCUXckocevTaUA8iT/MFSrY/2HXkOt753xQ/cf8g==",
"path": "system.security.cryptography.cng/4.3.0",
"hashPath": "system.security.cryptography.cng.4.3.0.nupkg.sha512"
},
"System.Security.Cryptography.Csp/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-X4s/FCkEUnRGnwR3aSfVIkldBmtURMhmexALNTwpjklzxWU7yjMk7GHLKOZTNkgnWnE0q7+BCf9N2LVRWxewaA==",
"path": "system.security.cryptography.csp/4.3.0",
"hashPath": "system.security.cryptography.csp.4.3.0.nupkg.sha512"
},
"System.Security.Cryptography.Encoding/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-1DEWjZZly9ae9C79vFwqaO5kaOlI5q+3/55ohmq/7dpDyDfc8lYe7YVxJUZ5MF/NtbkRjwFRo14yM4OEo9EmDw==",
"path": "system.security.cryptography.encoding/4.3.0",
"hashPath": "system.security.cryptography.encoding.4.3.0.nupkg.sha512"
},
"System.Security.Cryptography.OpenSsl/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-h4CEgOgv5PKVF/HwaHzJRiVboL2THYCou97zpmhjghx5frc7fIvlkY1jL+lnIQyChrJDMNEXS6r7byGif8Cy4w==",
"path": "system.security.cryptography.openssl/4.3.0",
"hashPath": "system.security.cryptography.openssl.4.3.0.nupkg.sha512"
},
"System.Security.Cryptography.Primitives/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-7bDIyVFNL/xKeFHjhobUAQqSpJq9YTOpbEs6mR233Et01STBMXNAc/V+BM6dwYGc95gVh/Zf+iVXWzj3mE8DWg==",
"path": "system.security.cryptography.primitives/4.3.0",
"hashPath": "system.security.cryptography.primitives.4.3.0.nupkg.sha512"
},
"System.Security.Cryptography.X509Certificates/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-t2Tmu6Y2NtJ2um0RtcuhP7ZdNNxXEgUm2JeoA/0NvlMjAhKCnM1NX07TDl3244mVp3QU6LPEhT3HTtH1uF7IYw==",
"path": "system.security.cryptography.x509certificates/4.3.0",
"hashPath": "system.security.cryptography.x509certificates.4.3.0.nupkg.sha512"
},
"System.Text.Encoding/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==",
"path": "system.text.encoding/4.3.0",
"hashPath": "system.text.encoding.4.3.0.nupkg.sha512"
},
"System.Text.RegularExpressions/4.3.1": {
"type": "package",
"serviceable": true,
"sha512": "sha512-N0kNRrWe4+nXOWlpLT4LAY5brb8caNFlUuIRpraCVMDLYutKkol1aV079rQjLuSxKMJT2SpBQsYX9xbcTMmzwg==",
"path": "system.text.regularexpressions/4.3.1",
"hashPath": "system.text.regularexpressions.4.3.1.nupkg.sha512"
},
"System.Threading/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-VkUS0kOBcUf3Wwm0TSbrevDDZ6BlM+b/HRiapRFWjM5O0NS0LviG0glKmFK+hhPDd1XFeSdU1GmlLhb2CoVpIw==",
"path": "system.threading/4.3.0",
"hashPath": "system.threading.4.3.0.nupkg.sha512"
},
"System.Threading.Tasks/4.3.0": {
"type": "package",
"serviceable": true,
"sha512": "sha512-LbSxKEdOUhVe8BezB/9uOGGppt+nZf6e1VFyw6v3DN6lqitm0OSn2uXMOdtP0M3W4iMcqcivm2J6UgqiwwnXiA==",
"path": "system.threading.tasks/4.3.0",
"hashPath": "system.threading.tasks.4.3.0.nupkg.sha512"
},
"VideoLAN.LibVLC.Windows/3.0.21": {
"type": "package",
"serviceable": true,
"sha512": "sha512-1b1yjZPIzS2+s6YZv9Z5Co/q2srIvo03ZToPvZblWreeyeFGkLDwX7WZat8AxCB9uMQV6VUnms67SgQqko7Z0w==",
"path": "videolan.libvlc.windows/3.0.21",
"hashPath": "videolan.libvlc.windows.3.0.21.nupkg.sha512"
},
"file finder test/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
}
}
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,18 @@
{
"runtimeOptions": {
"tfm": "net8.0",
"frameworks": [
{
"name": "Microsoft.NETCore.App",
"version": "8.0.0"
},
{
"name": "Microsoft.WindowsDesktop.App",
"version": "8.0.0"
}
],
"configProperties": {
"System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": true
}
}
}

View File

@ -0,0 +1,23 @@
{
"runtimeTarget": {
"name": ".NETCoreApp,Version=v8.0",
"signature": ""
},
"compilationOptions": {},
"targets": {
".NETCoreApp,Version=v8.0": {
"file finder test/1.0.0": {
"runtime": {
"file finder test.dll": {}
}
}
}
},
"libraries": {
"file finder test/1.0.0": {
"type": "project",
"serviceable": false,
"sha512": ""
}
}
}

View File

@ -0,0 +1,12 @@
{
"runtimeOptions": {
"tfm": "net8.0",
"framework": {
"name": "Microsoft.NETCore.App",
"version": "8.0.0"
},
"configProperties": {
"System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false
}
}
}

View File

@ -0,0 +1,260 @@
root {
display: block;
}
body{
}
#mainContainer{
text-align: center;
width: 800px;
}
#controlContainer{
width: 800px;
}
#libraryContainer{
width: 800px;
margin-top: 2px;
}
#libraryTree{
height: 300px;
overflow: auto;
white-space: nowrap;
text-align: left;
}
#viewContainer{
width: 800px;
}
#mediaViewer{
min-height: 500px;
background-color:#222;
}
#player{
top:0px;
height: 500px;
width: 500px;
background-color:#222;
}
#seekSlider{
width: 98%;
margin-left:5px;
}
#volumeSlider{
width: 100px;
display: inline-block;
}
#currentVolume{
display: inline-block;
}
#mediaTitle{
position: absolute;
top: 0px;
left: 10px;
width: 600px;
text-align: center;
padding: 5px;
overflow: auto;
}
#currentTime{
margin-top:-40px;
float: left;
text-align: left;
}
#totalTime{
margin-top:-40px;
float: right;
text-align: right;
}
#controlTable{
position:relative;
height: 150px;
}
#controlButtons{
position: absolute;
top: 80px;
left: 10px;
padding: 0;
margin: 0;
text-align: left;
}
.buttonszone{
position:absolute;
width: 20px;
margin-left:-20px;
vertical-align:top;
padding:0px;
font-size:0px;
line-height:0px;
}
#buttonszone1 {
top: 200px;
}
#buttonszone2 {
top: 20px;
}
.buttonszone li{
float:left;
clear:left;
font-size:0px;
}
.buttonszone li span{
float:left
}
.buttonszone_active {
margin-top: 0px;
width: 120px;
margin-left:-122px;
font-size:10px;
line-height:16px;
}
.buttonszone_active li {
width:120px;
}
#volumesliderzone{
position: absolute;
top: 105px;
left: 410px;
width: 210px;
}
#volumeSlider{
width: 208px;
}
#libraryTree ul li a {
border:none;
}
#artszone{
position: absolute;
top: 0px;
right: 10px;
width: 150px;
height: 150px;
vertical-align: top;
}
#seekContainer{
position:absolute;
left: 5px;
top: 55px;
width: 79%;
vertical-align: bottom;
}
.button48{
width: 48px;
height: 48px;
margin: 5px 0px 5px 2px;
background: none;
border: none;
display: inline-block;
list-style: none;
float:left;
cursor: pointer;
background-image: url("../images/buttons.png");
background-repeat: no-repeat;
}
.button48:hover{
filter: alpha(opacity:0.5);
-ms-filter: "alpha(opacity=50)";
-khtml-opacity: 0.50;
-moz-opacity: 0.5;
filter: alpha(opacity=50);
opacity: 0.5;
}
.button{
cursor: pointer;
display: inline-block;
}
#buttonOpen{
background-position: 0px 0px;
}
#buttonStop{
background-position: -576px 0px;
}
.playing {
background-position: -336px 0px;
}
.paused {
background-position: -384px 0px;
}
#buttonPrev{
background-position: -144px 0px;
}
#buttonNext{
background-position: -288px 0px;
}
#buttonFull{
background-position: -192px 0px;
}
#buttonSout{
background-position: -624px 0px;
}
#buttonEQ{
background-position: -48px 0px;
}
#window_browse ol{
list-style-type: none;
}
#window_browse ol li{
list-style-type: none;
float: left;
padding: 5px;
}
.system_icon{
width:80px;
text-align:center;
vertical-align:top;
display: inline-block;
cursor: pointer;
padding: 2px;
border: 1px solid #823D0A;
margin: 2px;
height: 92px;
background-color: #E1E1E1;
overflow: hidden;
}
#window_create_stream table tr td{
font-size: 11px;
}
#window_equalizer div div{
text-align: center;
font-size: 11px;
padding: 0px;
}
#window_equalizer {
height:80px !important ;
}
.eqBand{
margin-bottom: 10px;
margin-top: 10px;
height: 400px;
font-size: 1.5em;
}
.footer{
margin-top: 30px;
text-align: center;
font-size: 11px;
}
div.centered{
margin-left: auto;
margin-right: auto;
}
.hidden{
visibility: hidden;
display: none;
}

View File

@ -0,0 +1,188 @@
root {
display: block;
}
#content{
}
body{
font: 11pt Helvetica, Arial, sans-serif;
background-color:#EEE;
margin: 0px;
}
#libraryTree{
height: 300px;
overflow:scroll;
white-space: nowrap;
text-align: left;
}
#mediaViewer{
min-height: 500px;
}
#meta {
position:relative;
width:100%;
}
#seekSlider{
width: 100%;
}
#volumeSlider{
width: 100%;
display: inline-block;
}
#currentVolume{
display: inline-block;
}
#mediaTitle{
text-align:center;
width:100%;
margin-top:5px;
}
#currentTime{
float: left;
text-align: left;
}
#totalTime{
float: right;
text-align: right;
}
#play_controls, #controls{
margin-top:30px;
width:95%;
margin-left:auto;
margin-right:auto;
}
#controlTable{
position:relative;
height: 150px;
}
#buttonszone li{
float: left;
}
#art{
top:0px;
width:150px;
height:150px;
margin:0 auto;
box-sizing:border-box;
-webkit-box-sizing:border-box;
}
.ui-slider-range{
background-color:#FFB200;
background:#FFB200 url(images/ui-bg_gloss-wave_35_f6a828_500x100.png) 50% 50% repeat-x;
}
#buttons{
--button-scale: 1.2;
margin:0 auto;
position: relative;
width: calc(288px * var(--button-scale));
}
.button48{
width: calc(48px * var(--button-scale));
height: calc(48px * var(--button-scale));
margin: 5px 0px 5px 0px;
background: none;
border: none;
display: inline-block;
cursor: pointer;
background-image: url("../images/buttons.png");
background-size: calc(672px * var(--button-scale));
background-repeat: no-repeat;
}
.button{
cursor: pointer;
display: inline-block;
}
#buttonOpen{
background-position: 0px 0px;
}
#buttonStop{
background-position: calc(-576px * var(--button-scale)) 0px;
}
#buttonRewd{
background-position: calc(-528px * var(--button-scale)) 0px;
}
#buttonFwrd{
background-position: calc(-96px * var(--button-scale)) 0px;
}
.playing {
background-position: calc(-336px * var(--button-scale)) 0px;
}
.paused {
background-position: calc(-384px * var(--button-scale)) 0px;
}
#buttonPrev{
background-position: calc(-144px * var(--button-scale)) 0px;
}
#buttonNext{
background-position: calc(-288px * var(--button-scale)) 0px;
}
#buttonFull{
background-position: calc(-192px * var(--button-scale)) 0px;
}
#buttonSout{
background-position: calc(-624px * var(--button-scale)) 0px;
}
#buttonEQ{
background-position: calc(-48px * var(--button-scale)) 0px;
}
#window_browse ol{
list-style-type: none;
}
#window_browse ol li{
list-style-type: none;
float: left;
padding: 5px;
}
.system_icon{
width:80px;
text-align:center;
vertical-align:top;
display: inline-block;
cursor: pointer;
padding: 2px;
border: 1px solid #823D0A;
margin: 2px;
height: 92px;
background-color: #E1E1E1;
overflow: hidden;
}
#window_create_stream table tr td{
font-size: 11px;
}
#window_equalizer div div{
text-align: center;
font-size: 11px;
padding: 0px;
}
.eqBand{
margin-bottom: 10px;
margin-top: 10px;
height: 400px;
font-size: 1.5em;
}
.footer{
margin-top: 30px;
text-align: center;
font-size: 11px;
}
div.centered{
margin-left: auto;
margin-right: auto;
}
.hidden{
visibility: hidden;
display: none;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

@ -0,0 +1,581 @@
/*
* jQuery UI CSS Framework 1.8.13
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Theming/API
*/
/* Layout helpers
----------------------------------*/
.ui-helper-hidden { display: none; }
.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
.ui-helper-clearfix { display: inline-block; }
/* required comment for clearfix to work in Opera \*/
* html .ui-helper-clearfix { height:1%; }
.ui-helper-clearfix { display:block; }
/* end clearfix */
.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
/* Interaction Cues
----------------------------------*/
.ui-state-disabled { cursor: default !important; }
/* Icons
----------------------------------*/
/* states and images */
.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
/* Misc visuals
----------------------------------*/
/* Overlays */
.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
/*
* jQuery UI CSS Framework 1.8.13
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Theming/API
*
*
*/
/* Component containers
----------------------------------*/
.ui-widget { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1.1em; }
.ui-widget .ui-widget { font-size: 1em; }
.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1em; }
.ui-widget-content { border: 1px solid #dddddd; background: #eeeeee url(images/ui-bg_highlight-soft_100_eeeeee_1x100.png) 50% top repeat-x; color: #333333; }
.ui-widget-content a { color: #333333; }
.ui-widget-header { border: 1px solid #e78f08; background: #f6a828 url(images/ui-bg_gloss-wave_35_f6a828_500x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; }
.ui-widget-header a { color: #ffffff; }
/* Interaction states
----------------------------------*/
.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #cccccc; background: #f6f6f6 url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #1c94c4; }
.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #1c94c4; text-decoration: none; }
.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #fbcb09; background: #fdf5ce url(images/ui-bg_glass_100_fdf5ce_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #c77405; }
.ui-state-hover a, .ui-state-hover a:hover { color: #c77405; text-decoration: none; }
.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #fbd850; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #eb8f00; }
.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #eb8f00; text-decoration: none; }
.ui-widget :active { outline: none; }
/* Interaction Cues
----------------------------------*/
.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fed22f; background: #ffe45c url(images/ui-bg_highlight-soft_75_ffe45c_1x100.png) 50% top repeat-x; color: #363636; }
.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #b81900 url(images/ui-bg_diagonals-thick_18_b81900_40x40.png) 50% 50% repeat; color: #ffffff; }
.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #ffffff; }
.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #ffffff; }
.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
.ui-selecting { background: #FECA40; }
.ui-selected { background: #F39814; color: white; }
/* Icons
----------------------------------*/
/* states and images */
.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }
.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
.ui-widget-header .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); }
.ui-state-default .ui-icon { background-image: url(images/ui-icons_ef8c08_256x240.png); }
.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); }
.ui-state-active .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); }
.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_228ef1_256x240.png); }
.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffd27a_256x240.png); }
/* positioning */
.ui-icon-carat-1-n { background-position: 0 0; }
.ui-icon-carat-1-ne { background-position: -16px 0; }
.ui-icon-carat-1-e { background-position: -32px 0; }
.ui-icon-carat-1-se { background-position: -48px 0; }
.ui-icon-carat-1-s { background-position: -64px 0; }
.ui-icon-carat-1-sw { background-position: -80px 0; }
.ui-icon-carat-1-w { background-position: -96px 0; }
.ui-icon-carat-1-nw { background-position: -112px 0; }
.ui-icon-carat-2-n-s { background-position: -128px 0; }
.ui-icon-carat-2-e-w { background-position: -144px 0; }
.ui-icon-triangle-1-n { background-position: 0 -16px; }
.ui-icon-triangle-1-ne { background-position: -16px -16px; }
.ui-icon-triangle-1-e { background-position: -32px -16px; }
.ui-icon-triangle-1-se { background-position: -48px -16px; }
.ui-icon-triangle-1-s { background-position: -64px -16px; }
.ui-icon-triangle-1-sw { background-position: -80px -16px; }
.ui-icon-triangle-1-w { background-position: -96px -16px; }
.ui-icon-triangle-1-nw { background-position: -112px -16px; }
.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
.ui-icon-arrow-1-n { background-position: 0 -32px; }
.ui-icon-arrow-1-ne { background-position: -16px -32px; }
.ui-icon-arrow-1-e { background-position: -32px -32px; }
.ui-icon-arrow-1-se { background-position: -48px -32px; }
.ui-icon-arrow-1-s { background-position: -64px -32px; }
.ui-icon-arrow-1-sw { background-position: -80px -32px; }
.ui-icon-arrow-1-w { background-position: -96px -32px; }
.ui-icon-arrow-1-nw { background-position: -112px -32px; }
.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
.ui-icon-arrow-4 { background-position: 0 -80px; }
.ui-icon-arrow-4-diag { background-position: -16px -80px; }
.ui-icon-extlink { background-position: -32px -80px; }
.ui-icon-newwin { background-position: -48px -80px; }
.ui-icon-refresh { background-position: -64px -80px; }
.ui-icon-shuffle { background-position: -80px -80px; }
.ui-icon-transfer-e-w { background-position: -96px -80px; }
.ui-icon-transferthick-e-w { background-position: -112px -80px; }
.ui-icon-folder-collapsed { background-position: 0 -96px; }
.ui-icon-folder-open { background-position: -16px -96px; }
.ui-icon-document { background-position: -32px -96px; }
.ui-icon-document-b { background-position: -48px -96px; }
.ui-icon-note { background-position: -64px -96px; }
.ui-icon-mail-closed { background-position: -80px -96px; }
.ui-icon-mail-open { background-position: -96px -96px; }
.ui-icon-suitcase { background-position: -112px -96px; }
.ui-icon-comment { background-position: -128px -96px; }
.ui-icon-person { background-position: -144px -96px; }
.ui-icon-print { background-position: -160px -96px; }
.ui-icon-trash { background-position: -176px -96px; }
.ui-icon-locked { background-position: -192px -96px; }
.ui-icon-unlocked { background-position: -208px -96px; }
.ui-icon-bookmark { background-position: -224px -96px; }
.ui-icon-tag { background-position: -240px -96px; }
.ui-icon-home { background-position: 0 -112px; }
.ui-icon-flag { background-position: -16px -112px; }
.ui-icon-calendar { background-position: -32px -112px; }
.ui-icon-cart { background-position: -48px -112px; }
.ui-icon-pencil { background-position: -64px -112px; }
.ui-icon-clock { background-position: -80px -112px; }
.ui-icon-disk { background-position: -96px -112px; }
.ui-icon-calculator { background-position: -112px -112px; }
.ui-icon-zoomin { background-position: -128px -112px; }
.ui-icon-zoomout { background-position: -144px -112px; }
.ui-icon-search { background-position: -160px -112px; }
.ui-icon-wrench { background-position: -176px -112px; }
.ui-icon-gear { background-position: -192px -112px; }
.ui-icon-heart { background-position: -208px -112px; }
.ui-icon-star { background-position: -224px -112px; }
.ui-icon-link { background-position: -240px -112px; }
.ui-icon-cancel { background-position: 0 -128px; }
.ui-icon-plus { background-position: -16px -128px; }
.ui-icon-plusthick { background-position: -32px -128px; }
.ui-icon-minus { background-position: -48px -128px; }
.ui-icon-minusthick { background-position: -64px -128px; }
.ui-icon-close { background-position: -80px -128px; }
.ui-icon-closethick { background-position: -96px -128px; }
.ui-icon-key { background-position: -112px -128px; }
.ui-icon-lightbulb { background-position: -128px -128px; }
.ui-icon-scissors { background-position: -144px -128px; }
.ui-icon-clipboard { background-position: -160px -128px; }
.ui-icon-copy { background-position: -176px -128px; }
.ui-icon-contact { background-position: -192px -128px; }
.ui-icon-image { background-position: -208px -128px; }
.ui-icon-video { background-position: -224px -128px; }
.ui-icon-script { background-position: -240px -128px; }
.ui-icon-alert { background-position: 0 -144px; }
.ui-icon-info { background-position: -16px -144px; }
.ui-icon-notice { background-position: -32px -144px; }
.ui-icon-help { background-position: -48px -144px; }
.ui-icon-check { background-position: -64px -144px; }
.ui-icon-bullet { background-position: -80px -144px; }
.ui-icon-radio-off { background-position: -96px -144px; }
.ui-icon-radio-on { background-position: -112px -144px; }
.ui-icon-pin-w { background-position: -128px -144px; }
.ui-icon-pin-s { background-position: -144px -144px; }
.ui-icon-play { background-position: 0 -160px; }
.ui-icon-pause { background-position: -16px -160px; }
.ui-icon-seek-next { background-position: -32px -160px; }
.ui-icon-seek-prev { background-position: -48px -160px; }
.ui-icon-seek-end { background-position: -64px -160px; }
.ui-icon-seek-start { background-position: -80px -160px; }
/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
.ui-icon-seek-first { background-position: -80px -160px; }
.ui-icon-stop { background-position: -96px -160px; }
.ui-icon-eject { background-position: -112px -160px; }
.ui-icon-volume-off { background-position: -128px -160px; }
.ui-icon-volume-on { background-position: -144px -160px; }
.ui-icon-power { background-position: 0 -176px; }
.ui-icon-signal-diag { background-position: -16px -176px; }
.ui-icon-signal { background-position: -32px -176px; }
.ui-icon-battery-0 { background-position: -48px -176px; }
.ui-icon-battery-1 { background-position: -64px -176px; }
.ui-icon-battery-2 { background-position: -80px -176px; }
.ui-icon-battery-3 { background-position: -96px -176px; }
.ui-icon-circle-plus { background-position: 0 -192px; }
.ui-icon-circle-minus { background-position: -16px -192px; }
.ui-icon-circle-close { background-position: -32px -192px; }
.ui-icon-circle-triangle-e { background-position: -48px -192px; }
.ui-icon-circle-triangle-s { background-position: -64px -192px; }
.ui-icon-circle-triangle-w { background-position: -80px -192px; }
.ui-icon-circle-triangle-n { background-position: -96px -192px; }
.ui-icon-circle-arrow-e { background-position: -112px -192px; }
.ui-icon-circle-arrow-s { background-position: -128px -192px; }
.ui-icon-circle-arrow-w { background-position: -144px -192px; }
.ui-icon-circle-arrow-n { background-position: -160px -192px; }
.ui-icon-circle-zoomin { background-position: -176px -192px; }
.ui-icon-circle-zoomout { background-position: -192px -192px; }
.ui-icon-circle-check { background-position: -208px -192px; }
.ui-icon-circlesmall-plus { background-position: 0 -208px; }
.ui-icon-circlesmall-minus { background-position: -16px -208px; }
.ui-icon-circlesmall-close { background-position: -32px -208px; }
.ui-icon-squaresmall-plus { background-position: -48px -208px; }
.ui-icon-squaresmall-minus { background-position: -64px -208px; }
.ui-icon-squaresmall-close { background-position: -80px -208px; }
.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
/* Misc visuals
----------------------------------*/
/* Corner radius */
.ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; }
.ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; }
.ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
.ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
.ui-corner-top { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; }
.ui-corner-bottom { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
.ui-corner-right { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
.ui-corner-left { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
.ui-corner-all { -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; }
/* Overlays */
.ui-widget-overlay { background: #666666 url(images/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat; opacity: .50;filter:Alpha(Opacity=50); }
.ui-widget-shadow { margin: -5px 0 0 -5px; padding: 5px; background: #000000 url(images/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x; opacity: .20;filter:Alpha(Opacity=20); -moz-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; }/*
* jQuery UI Resizable 1.8.13
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Resizable#theming
*/
.ui-resizable { position: relative;}
.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;
/* http://bugs.jqueryui.com/ticket/7233
- Resizable: resizable handles fail to work in IE if transparent and content overlaps
*/
background-image:url(data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=);
}
.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*
* jQuery UI Selectable 1.8.13
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Selectable#theming
*/
.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
/*
* jQuery UI Accordion 1.8.13
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Accordion#theming
*/
/* IE/Win - Fix animation bug - #4615 */
.ui-accordion { width: 100%; }
.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
.ui-accordion .ui-accordion-li-fix { display: inline; }
.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; }
.ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }
.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
.ui-accordion .ui-accordion-content-active { display: block; }
/*
* jQuery UI Autocomplete 1.8.13
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Autocomplete#theming
*/
.ui-autocomplete { position: absolute; cursor: default; }
/* workarounds */
* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
/*
* jQuery UI Menu 1.8.13
*
* Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Menu#theming
*/
.ui-menu {
list-style:none;
padding: 2px;
margin: 0;
display:block;
float: left;
}
.ui-menu .ui-menu {
margin-top: -3px;
}
.ui-menu .ui-menu-item {
margin:0;
padding: 0;
zoom: 1;
float: left;
clear: left;
width: 100%;
}
.ui-menu .ui-menu-item a {
text-decoration:none;
display:block;
padding:.2em .4em;
line-height:1.5;
zoom:1;
}
.ui-menu .ui-menu-item a.ui-state-hover,
.ui-menu .ui-menu-item a.ui-state-active {
font-weight: normal;
margin: -1px;
}
/*
* jQuery UI Button 1.8.13
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Button#theming
*/
.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */
.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
.ui-button-icons-only { width: 3.4em; }
button.ui-button-icons-only { width: 3.7em; }
/*button text element */
.ui-button .ui-button-text { display: block; line-height: 1.4; }
.ui-button-text-only .ui-button-text { padding: .4em 1em; }
.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
/* no icon support for input elements, provide padding by default */
input.ui-button { padding: .4em 1em; }
/*button icon element(s) */
.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
/*button sets*/
.ui-buttonset { margin-right: 7px; }
.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
/* workarounds */
button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
/*
* jQuery UI Dialog 1.8.13
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Dialog#theming
*/
.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }
.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; }
.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; }
.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
.ui-draggable .ui-dialog-titlebar { cursor: move; }
/*
* jQuery UI Slider 1.8.13
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Slider#theming
*/
.ui-slider { position: relative; text-align: left; }
.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
.ui-slider-horizontal { height: .8em; }
.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
.ui-slider-horizontal .ui-slider-range-min { left: 0; }
.ui-slider-horizontal .ui-slider-range-max { right: 0; }
.ui-slider-vertical { width: .8em; height: 100px; }
.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
.ui-slider-vertical .ui-slider-range-max { top: 0; }/*
* jQuery UI Tabs 1.8.13
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Tabs#theming
*/
.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
.ui-tabs .ui-tabs-hide { display: none !important; }
/*
* jQuery UI Datepicker 1.8.13
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Datepicker#theming
*/
.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
.ui-datepicker .ui-datepicker-prev { left:2px; }
.ui-datepicker .ui-datepicker-next { right:2px; }
.ui-datepicker .ui-datepicker-prev-hover { left:1px; }
.ui-datepicker .ui-datepicker-next-hover { right:1px; }
.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; }
.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
.ui-datepicker select.ui-datepicker-month,
.ui-datepicker select.ui-datepicker-year { width: 49%;}
.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
.ui-datepicker td { border: 0; padding: 1px; }
.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
/* with multiple calendars */
.ui-datepicker.ui-datepicker-multi { width:auto; }
.ui-datepicker-multi .ui-datepicker-group { float:left; }
.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
.ui-datepicker-row-break { clear:both; width:100%; }
/* RTL support */
.ui-datepicker-rtl { direction: rtl; }
.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
.ui-datepicker-rtl .ui-datepicker-group { float:right; }
.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
.ui-datepicker-cover {
display: none; /*sorry for IE5*/
display/**/: block; /*sorry for IE5*/
position: absolute; /*must have*/
z-index: -1; /*must have*/
filter: mask(); /*must have*/
top: -4px; /*must have*/
left: -4px; /*must have*/
width: 200px; /*must have*/
height: 200px; /*must have*/
}/*
* jQuery UI Progressbar 1.8.13
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Progressbar#theming
*/
.ui-progressbar { height:2em; text-align: left; }
.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }

View File

@ -0,0 +1,19 @@
-- make xgettext fetch strings from html code
function gettext(text) print(vlc.gettext._(text)) end
local _G = _G
local dialogs = setmetatable({}, {
__index = function(self, name)
-- Cache the dialogs
return rawget(self, name) or
rawget(rawset(self, name, process(http_dir.."/dialogs/"..name)), name)
end})
_G.dialogs = function(...)
for i=1, select("#",...) do
dialogs[(select(i,...))]()
end
end
_G.vlm = vlc.vlm()

View File

@ -0,0 +1,32 @@
<script type="text/javascript">
//<![CDATA[
$(function(){
$('#window_batch').dialog({
autoOpen: false,
width: 600,
modal: true,
buttons:{
"<?vlc gettext("Send") ?>":function(){
var cmds = $('#batchCommand').val().split("\n");
for(var i=0;i<cmds.length;i++){
cmds[i] = cmds[i].replace(/^#.*$/,'\n');
}
cmds = cmds.join(";").replace(/\n/g,';').replace(/;+/g,';').replace(/^;/,'');
sendVLMCmd(cmds);
$(this).dialog('close');
},
"<?vlc gettext("Cancel") ?>":function(){
$(this).dialog('close');
}
}
});
})
//]]>
</script>
<div id="window_batch" title="<?vlc gettext("VLM Batch Commands") ?>">
<textarea id="batchCommand" cols="50" rows="16">
<?vlc gettext("#paste your VLM commands here") ?>
<?vlc gettext("#separate commands with a new line or a semi-colon") ?>
</textarea>
</div>

View File

@ -0,0 +1,44 @@
<script type="text/javascript">
//<![CDATA[
var browse_target = 'default';
$(function(){
$('#window_browse').dialog({
autoOpen: false,
width: 600,
height: 650,
modal: true,
resizable: false,
buttons: {
"<?vlc gettext("Open") ?>":function(){
$('li.ui-selected','#browse_elements').each(function(){
$(this).dblclick();
});
},
"<?vlc gettext("Enqueue") ?>": function() {
$('li.ui-selected','#browse_elements').each(function(){
var path = this.getAttribute('opendir') ? this.getAttribute('opendir') : this.getAttribute('openfile');
switch(browse_target){
default:
sendCommand('command=in_enqueue&input='+encodeURI(path));
setTimeout(function(){updatePlayList(true);},1000);
break;
}
});
$(this).dialog("close");
},
"<?vlc gettext("Cancel") ?>" : function(){
$(this).dialog("close")
}
}
});
});
//]]>
</script>
<div id="window_browse" title="<?vlc gettext("Media Browser") ?>">
<div style="height:500px;overflow: auto;">
<ol id='browse_elements' selectable="selectable">
<li><?vlc gettext("Play List") ?></li>
</ol>
</div>
</div>

View File

@ -0,0 +1,394 @@
<script type="text/javascript">
//<![CDATA[
$(function(){
$('#stream_out_method').change(function(){
$('#output_options').empty();
switch($(this).val()){
case 'file':
var options = $('#file_options').clone();
break;
case 'http':
var options = $('#net_options').clone();
break;
case 'mmsh':
case 'rtp':
case 'udp':
var options = $('#net_options').clone();
$('#stream_out_file_',options).val('');
break;
}
$('[id]',options).each(function(){
$(this).attr('id',$(this).attr('id').substr(0,$(this).attr('id').length-1));
$(this).attr('name',$(this).attr('name').substr(0,$(this).attr('name').length-1));
});
$(options).css({
'visibility':'visible',
'display':'block'
})
$(options).appendTo('#output_options');
});
$('#stream_out_mux').change(function(){
if($(this).val()=='ffmpeg'){
$('#stream_out_mux_opts').val('{mux=flv}');
}else{
$('#stream_out_mux_opts').val('');
}
});
$('#window_create_stream').dialog({
autoOpen: false,
width:800,
modal: true,
buttons:{
"<?vlc gettext("Create") ?>":function(){
var e = false;
$('input',$(this)).removeClass('ui-state-error');
$('#stream_error_container').css({
'visibility':'hidden',
'display':'none'
});
if(!$('#stream_name').val()){
$('#stream_name').addClass('ui-state-error');
e = true;
}
if(!$('#stream_input').val()){
$('#stream_input').addClass('ui-state-error');
e = true;
}
if($('#stream_out_method').val()!='file' && !$('#stream_out_port').val()){
$('#stream_out_port').addClass('ui-state-error');
e = true;
}
if($('#stream_out_method').val()!='file' && !$('#stream_out_dest').val()){
$('#stream_out_dest').addClass('ui-state-error');
e = true;
}
if($('#stream_out_method').val()=='file' && !$('#stream_out_filename').val()){
$('#stream_out_filename').addClass('ui-state-error');
e = true;
}
if(e){
$('#stream_error_message').empty();
$('#stream_error_message').append('One or more fields require attention.');
$('#stream_error_container').css({
'visibility':'visible',
'display':'block'
})
}else{
sendVLMCmd(buildStreamCode());
$(this).dialog('close');
}
},
"<?vlc gettext("Cancel") ?>":function(){
$(this).dialog('close');
}
}
});
$('#button_input').click(function(){
browse_target = '#stream_input';
browse();
$('#window_browse').dialog('open');
});
$('#button_in_screen').click(function(){
$('#stream_input').val('screen://');
});
});
function buildStreamCode(){
var name = $('#stream_name').val().replace(' ','_');
var infile = $('#stream_input').val();
var vcodec = $('#stream_vcodec').val();
var vb = $('#stream_vb').val();
var fps = $('#stream_fps').val();
var scale = $('#stream_scale').val();
var dlace = $('#stream_deinterlace').is(':checked');
var acodec = $('#stream_acodec').val();
var ab = $('#stream_ab').val();
var srate = $('#stream_samplerate').val();
var channels = $('#stream_channels').val();
var scodec = $('#stream_scodec').val() && !$('#stream_soverlay').checked ? ','+$('#stream_scodec').val() : '';
var soverlay = $('#stream_soverlay').is(':checked') ? ',soverlay' : '';
var outmethod = $('#stream_out_method').val();
var mux = $('#stream_out_mux').val();
var muxoptions = $('#stream_out_mux_opts').val() ? '{'+$('#stream_out_mux_opts').val()+'}' : '';
if(outmethod=='file'){
var filename = $('#stream_out_filename').val();
}else{
var outport = $('#stream_out_port').val();
var outdest = $('#stream_out_dest').val();
var outfile = $('#stream_out_file').val();
}
var dest = outmethod=='file' ? filename : (outfile ? outdest+':'+outport+'/'+outfile : outdest+':'+outport);
var inCode = 'new '+name+' broadcast enabled input "'+infile+'" ';
var transCode = 'output #transcode{vcodec='+vcodec+',vb='+vb+',fps='+fps+',scale='+scale+',acodec='+acodec+',ab='+ab+',samplerate='+srate+',channels='+channels+scodec+soverlay+'}';
var outCode = ':std{access='+outmethod+',mux='+mux+muxoptions+',dst='+dest+'}';
return inCode+transCode+outCode;
}
//]]>
</script>
<div id="window_create_stream" title="<?vlc gettext("Create Stream") ?>">
<table width="100%">
<tr>
<td style="text-align:right" valign="top">
<h5><?vlc gettext("Stream name") ?></h5>
</td>
<td colspan="5" valign="top">
<input type="text" name="stream_name" id="stream_name" value=""/>
</td>
</tr>
<tr>
<th colspan="2" valign="top">
<h5><?vlc gettext("Video") ?></h5>
</th>
<th colspan="2" valign="top">
<h5><?vlc gettext("Audio") ?></h5>
</th>
<th colspan="2" valign="top">
<h5><?vlc gettext("Subtitles") ?></h5>
</th>
<th colspan="2" valign="top">
<h5><?vlc gettext("Output") ?></h5>
</th>
</tr>
<tr>
<td style="text-align:right" valign="top"><?vlc gettext("Video codec") ?></td>
<td valign="top">
<select name="stream_vcodec" id="stream_vcodec">
<option value="FLV1">FLV1</option>
<option value="mp1v">mp1v</option>
<option value="mp2v">mp2v</option>
<option value="mp4v">mp4v</option>
<option value="DIV1">DIV1</option>
<option value="DIV2">DIV2</option>
<option value="DIV3">DIV3</option>
<option value="h263">H263</option>
<option value="h264">H264</option>
<option value="WMV1">WMV1</option>
<option value="WMV2">WMV2</option>
<option value="MJPG">MJPG</option>
<option value="theo">theo</option>
</select>
</td>
<td style="text-align:right" valign="top"><?vlc gettext("Audio codec") ?></td>
<td valign="top">
<select name="stream_acodec" id="stream_acodec">
<option value="mp3">mp3</option>
<option value="mpga">mpga</option>
<option value="mp2a">mp2a</option>
<option value="mp4a">mp4a</option>
<option value="a52">a52</option>
<option value="vorb">vorb</option>
<option value="flac">flac</option>
<option value="spx">spx</option>
<option value="s16l">s16l</option>
<option value="fl32">fl32</option>
</select>
</td>
<td style="text-align:right" valign="top"><?vlc gettext("Subtitle codec") ?></td>
<td valign="top">
<select name="stream_scodec" id="stream_scodec">
<option value=""><?vlc gettext("None") ?></option>
<option value="dvbs">dvbs</option>
</select>
</td>
<td style="text-align:right" valign="top"><?vlc gettext("Output method") ?></td>
<td valign="top">
<select name="stream_out_method" id="stream_out_method">
<option value="http">HTTP</option>
<option value="file"><?vlc gettext("File") ?></option>
<option value="mmsh">MMSH</option>
<option value="rtp">RTP</option>
<option value="udp">UDP</option>
</select>
</td>
</tr>
<tr>
<td style="text-align:right" valign="top"><?vlc gettext("Video bitrate") ?></td>
<td valign="top">
<select name="stream_vb" id="stream_vb">
<option value="4096">4096</option>
<option value="3072">3072</option>
<option value="2048">2048</option>
<option value="1024">1024</option>
<option value="768">768</option>
<option value="512">512</option>
<option value="384">384</option>
<option value="256">256</option>
<option value="192">192</option>
<option value="128">128</option>
<option value="96">96</option>
<option value="64">64</option>
<option value="32">32</option>
<option value="16">16</option>
</select>
</td>
<td style="text-align:right" valign="top"><?vlc gettext("Audio bitrate") ?></td>
<td valign="top">
<select name="stream_ab" id="stream_ab">
<option value="512">512</option>
<option value="384">384</option>
<option value="256">256</option>
<option value="192">192</option>
<option value="128">128</option>
<option value="96">96</option>
<option value="64">64</option>
<option value="32">32</option>
<option value="16">16</option>
</select>
</td>
<td style="text-align:right" valign="top"><?vlc gettext("Overlay") ?></td>
<td valign="top">
<input type="checkbox" name="stream_soverlay" id="stream_soverlay" value="1" />
</td>
<td style="text-align:right" valign="top"><?vlc gettext("Multiplexer") ?></td>
<td valign="top">
<select name="stream_out_mux" id="stream_out_mux">
<option value="ts">MPEG TS</option>
<option value="ps">MPEG PS</option>
<option value="mpeg1">MPEG 1</option>
<option value="ogg">OGG</option>
<option value="asf">ASF</option>
<option value="mp4">MP4</option>
<option value="mov">MOV</option>
<option value="wav">WAV</option>
<option value="raw">Raw</option>
<option value="ffmpeg" selected="selected">FFMPEG</option>
</select>
</td>
</tr>
<tr>
<td style="text-align:right" valign="top"><?vlc gettext("Video FPS") ?></td>
<td valign="top">
<select name="stream_fps" id="stream_fps">
<option value="300">300</option>
<option value="120">120</option>
<option value="100">100</option>
<option value="72">72</option>
<option value="60">60</option>
<option value="50">50</option>
<option value="48">48</option>
<option value="30">30</option>
<option value="25" selected="selected">25</option>
<option value="24">24</option>
</select>
</td>
<td style="text-align:right" valign="top"><?vlc gettext("Audio sample rate") ?></td>
<td valign="top">
<select name="stream_samplerate" id="stream_samplerate">
<option value="192000">192 KHz</option>
<option value="96000">96 KHz</option>
<option value="50000">50 KHz</option>
<option value="48000">48 KHz</option>
<option value="44100" selected="selected">44 KHz</option>
<option value="32000">32 KHz</option>
<option value="22050">22 KHz</option>
<option value="16000">16 KHz</option>
<option value="11025">11 KHz</option>
<option value="8000">8 KHz</option>
</select>
</td>
<td colspan="2" valign="top">&nbsp;</td>
<td style="text-align:right" valign="top"><?vlc gettext("MUX options") ?></td>
<td valign="top">
<input type="text" name="stream_out_mux_opts" id="stream_out_mux_opts" value="{mux=flv}" />
</td>
</tr>
<tr>
<td style="text-align:right" valign="top"><?vlc gettext("Video scale") ?></td>
<td valign="top">
<select name="stream_scale" id="stream_scale">
<option value="0.25">25%</option>
<option value="0.5">50%</option>
<option value="0.75">75%</option>
<option selected="selected" value="1">100%</option>
<option value="1.25">125%</option>
<option value="1.5">150%</option>
<option value="1.75">175%</option>
<option value="2">200%</option>
</select>
</td>
<td style="text-align:right" valign="top"><?vlc gettext("Audio channels") ?></td>
<td valign="top">
<select name="stream_channels" id="stream_channels" >
<option value="1">1</option>
<option value="2" selected="selected">2</option>
<option value="4">4</option>
<option value="6">6</option>
</select>
</td>
<td colspan="2" valign="top">&nbsp;</td>
<td colspan="2" rowspan="2" valign="top">
<div id="output_options">
<table>
<tr>
<td style="text-align:right" valign="top"><?vlc gettext("Output port") ?></td>
<td valign="top"><input type="text" name="stream_out_port" id="stream_out_port" value="8081" /></td>
</tr>
<tr>
<td style="text-align:right" valign="top"><?vlc gettext("Output destination") ?></td>
<td><input type="text" name="stream_out_dest" id="stream_out_dest" value="0.0.0.0" /></td>
</tr>
<tr>
<td style="text-align:right" valign="top"><?vlc gettext("Output file") ?></td>
<td valign="top"><input type="text" name="stream_out_file" id="stream_out_file" value="stream.flv" /></td>
</tr>
</table>
</div>
</td>
</tr>
<tr>
<td valign="top" style="text-align:right"><?vlc gettext("Deinterlace") ?></td>
<td valign="top">
<input type="checkbox" name="stream_deinterlace" id="stream_deinterlace" value="1" />
</td>
<td colspan="2" valign="top">&nbsp;</td>
<td colspan="2" valign="top">&nbsp;</td>
</tr>
<tr>
<td style="text-align:right" colspan="2" valign="top">
<?vlc gettext("Input media") ?>
</td>
<td colspan="6" valign="top">
<input type="text" name="stream_input" id="stream_input" value="" size="50" />
<div id="button_input" class="button icon ui-widget ui-state-default" title="<?vlc gettext("Media file") ?>" opendialog="window_browse"><span class="ui-icon ui-icon-eject"></span></div>
<div id="button_in_screen" class="button icon ui-widget ui-state-default" title="<?vlc gettext("Capture screen") ?>" ><span class="ui-icon ui-icon-contact"></span></div>
</td>
</tr>
</table>
<div class="ui-widget" id="stream_error_container" style="display:none;visibility: hidden;">
<div class="ui-state-error ui-corner-all" style="padding: 0 .7em;">
<p><span class="ui-icon ui-icon-alert" style="float: left; margin-right: .3em;"></span>
<strong><?vlc gettext("Error:") ?></strong> <span id="stream_error_message"><?vlc gettext("Sample ui-state-error style.") ?></span></p>
</div>
</div>
</div>
<div id="net_options" style="display:none;visibility: hidden;">
<table>
<tr>
<td style="text-align:right" valign="top"><?vlc gettext("Output port") ?></td>
<td valign="top"><input type="text" name="stream_out_port_" id="stream_out_port_" value="8081" /></td>
</tr>
<tr>
<td style="text-align:right" valign="top"><?vlc gettext("Output destination") ?></td>
<td valign="top"><input type="text" name="stream_out_dest_" id="stream_out_dest_" value="0.0.0.0" /></td>
</tr>
<tr>
<td style="text-align:right" valign="top"><?vlc gettext("Output file") ?></td>
<td valign="top"><input type="text" name="stream_out_file_" id="stream_out_file_" value="stream.flv" /></td>
</tr>
</table>
</div>
<div id="file_options" style="display:none;visibility: hidden;">
<table>
<tr>
<td style="text-align:right" valign="top"><?vlc gettext("File name") ?></td>
<td valign="top"><input type="text" name="stream_out_filename_" id="stream_out_filename_"/></td>
</tr>
</table>
</div>

View File

@ -0,0 +1,54 @@
<script type="text/javascript">
//<![CDATA[
var bands = new Array('60Hz','170Hz','310Hz','600Hz','1kHz','3kHz','6kHz','12kHz','14kHz','16kHz');
$(function(){
$('#window_equalizer').dialog({
autoOpen: false,
height: 650,
width: 500,
resizable: false,
buttons:{
"<?vlc gettext("Reset") ?>":function(){
$('.eqBand').each(function(){
$(this).slider('value',0);
sendEQCmd({
command:'equalizer',
val: 0,
band: $(this).attr('id').substr(2)
})
});
},
"<?vlc gettext("Close") ?>":function(){
$(this).dialog("close");
}
}
});
$('#preamp').slider({
min: -20,
max: 20,
step: 0.1,
range: "min",
animate: true,
stop: function(event,ui){
$('#preamp_txt').empty().append(ui.value+'dB');
sendEQCmd({
command:'preamp',
val: ui.value
})
},
slide: function(event,ui){
$('#preamp_txt').empty().append(ui.value+'dB');
}
});
});
//]]>
</script>
<div id="window_equalizer" title="<?vlc gettext("Graphical Equalizer") ?>">
<div style="margin: 5px 5px 5px 5px;">
<div><?vlc gettext("Preamp:") ?> <span id="preamp_txt">0dB</span></div>
</div>
<div style="margin: 5px 5px 10px 5px;">
<div id="preamp" style="font-size: 18px;"></div>
</div>
</div>

View File

@ -0,0 +1,19 @@
<script type="text/javascript">
$(function(){
$('#window_error').dialog({
autoOpen: false,
width:400,
modal: true,
buttons:{
"<?vlc gettext("Close") ?>":function(){
$('#error_container').empty();
$(this).dialog('close');
}
}
});
})
</script>
<div id="window_error" title="<?vlc gettext("Error!") ?>">
<div class="ui-state-error"><div class="ui-icon ui-icon-alert"></div></div>
<div id="error_container" class="ui-state-error"></div>
</div>

View File

@ -0,0 +1,146 @@
<script type="text/javascript">
//<![CDATA[
$(function(){
$('#window_mosaic').dialog({
autoOpen: false,
width: 800,
maxWidth: 1000,
minWidth: 800,
minHeight: 500,
modal: true,
buttons: {
"<?vlc gettext("Create") ?>": function() {
$(this).dialog("close");
},
"<?vlc gettext("Cancel") ?>" : function(){
$(this).dialog("close")
}
}
});
$('#mosaic_bg').resizable({
maxWidth: 780,
ghost: true
});
$('#mosaic_tiles').draggable({
maxWidth: 780,
handle: 'h3',
containment: [13,98,99999999,99999999],
drag:function(event,ui){
var xoff = ui.offset.left - $('#mosaic_bg').offset().left;
var yoff = ui.offset.top - $('#mosaic_bg').offset().top-17;
$('#mosaic_xoff').val(xoff);
$('#mosaic_yoff').val(yoff);
}
});
$('input','#mosaic_options').change(setMosaic);
setMosaic();
});
function setMosaic(){
var rows = Number($('#mosaic_rows').val());
var cols = Number($('#mosaic_cols').val());
var n = 0;
$('#mosaic_tiles').empty()
$('#mosaic_tiles').append('<tr><td colspan="99"><h3 style="margin:0px;cursor:move; font-weight:normal" class="ui-widget-header"><?vlc gettext("Mosaic Tiles") ?></h3></td></tr>');
for(var i=0;i<rows;i++){
$('#mosaic_tiles').append('<tr>');
for(var j=0;j<cols;j++){
$('tr:last','#mosaic_tiles').append('<td class="mosaic">');
$('td:last','#mosaic_tiles').append('<div id="mosaic_open__'+n+'" class="button icon ui-widget ui-state-default" title="Open Media" style="margin-top:49%"><span class="ui-icon ui-icon-eject"></span></div>');
n++;
}
}
$('.mosaic').resizable({
alsoResize: '.mosaic',
resize:function(event,ui){
$('#mosaic_width').val(ui.size.width);
$('#mosaic_height').val(ui.size.height);
$('[id^=mosaic_open]').css({
'margin-top': Number($('#mosaic_height').val()/2)
});
}
});
$('.mosaic').css({
'background': '#33FF33',
'width': Number($('#mosaic_width').val()),
'height':Number($('#mosaic_height').val()),
'text-align': 'center',
'float' : 'left',
'border' : '1px solid #990000',
'margin-left': Number($('#mosaic_rbord').val()),
'margin-right': Number($('#mosaic_rbord').val()),
'margin-top': Number($('#mosaic_cbord').val()),
'margin-bottom': Number($('#mosaic_cbord').val())
});
$('[id^=mosaic_open_]').each(function(){
$(this).css({
'margin-top': Number($('#mosaic_height').val()/2)
});
$(this).click(function(){
browse_target = '#'+$(this).attr('id');
get_dir();
$('#window_browse').dialog('open');
});
});
$('.button').hover(
function() { $(this).addClass('ui-state-hover'); },
function() { $(this).removeClass('ui-state-hover'); }
);
}
//]]>
</script>
<div id="window_mosaic" title="<?vlc gettext("Create Mosaic") ?>">
<table id="mosaic_options">
<tr>
<td style="text-align:right"><?vlc gettext("Rows") ?></td>
<td>
<input type="text" name="mosaic_rows" id="mosaic_rows" size="3" value="2"/>
</td>
<td style="text-align:right"><?vlc gettext("X offset") ?></td>
<td>
<input type="text" name="mosaic_xoff" id="mosaic_xoff" size="3" value="0" disabled="disabled"/>
</td>
<td style="text-align:right"><?vlc gettext("Row border") ?></td>
<td>
<input type="text" name="mosaic_rbord" id="mosaic_rbord" size="3" value="5"/>
</td>
<td style="text-align:right"><?vlc gettext("Width") ?></td>
<td>
<input type="text" name="mosaic_width" id="mosaic_width" size="3" value="100" disabled="disabled"/>
</td>
</tr>
<tr>
<td style="text-align:right"><?vlc gettext("Columns") ?></td>
<td>
<input type="text" name="mosaic_cols" id="mosaic_cols" size="3" value="2"/>
</td>
<td style="text-align:right"><?vlc gettext("Y offset") ?></td>
<td>
<input type="text" name="mosaic_yoff" id="mosaic_yoff" size="3" value="0" disabled="disabled"/>
</td>
<td style="text-align:right"><?vlc gettext("Column border") ?></td>
<td>
<input type="text" name="mosaic_cbord" id="mosaic_cbord" size="3" value="5"/>
</td>
<td style="text-align:right"><?vlc gettext("Height") ?></td>
<td>
<input type="text" name="mosaic_height" id="mosaic_height" size="3" value="100" disabled="disabled"/>
</td>
</tr>
</table>
<div id="mosaic_bg" class="ui-widget-content" style="background: #3333FF;width:400px; height:300px;text-align: center; vertical-align: middle;">
<h3 style="margin:0px;font-weight:normal" class="ui-widget-header"><?vlc gettext("Background") ?></h3>
<table id="mosaic_tiles" class="ui-widget-content" cellpadding="0" cellspacing="0">
<tr><td colspan="99"><h3 style="margin:0px;cursor:move; font-weight:normal" class="ui-widget-header"><?vlc gettext("Mosaic Tiles") ?></h3></td></tr>
<tr>
<td class="mosaic"></td>
<td class="mosaic"></td>
</tr>
<tr>
<td class="mosaic"></td>
<td class="mosaic"></td>
</tr>
</table>
</div>
</div>

View File

@ -0,0 +1,79 @@
<script type="text/javascript">
//<![CDATA[
$(function(){
$('#window_offset').dialog({
autoOpen: false,
minWidth: 400,
buttons:{
"Close":function(){
$(this).dialog("close");
}
}
});
$( "#rateSlider" ).slider({
range: "min",
value: 1,
min: 0.25,
max: 10,
step: 0.25,
stop: function( event, ui ) {
sendCommand({
'command':'rate',
'val':(ui.value)
})
},
slide: function(event,ui){
$('#currentRate').empty();
$('#currentRate').append(ui.value+'x');
}
});
$( "#audioSlider" ).slider({
range: "min",
value: 0,
min: -10,
max: 10,
step: 0.25,
stop: function( event, ui ) {
sendCommand({
'command':'audiodelay',
'val':(ui.value)
})
},
slide: function(event,ui){
$('#currentAudioDelay').empty();
$('#currentAudioDelay').append(ui.value+'s');
}
});
$( "#subtitleSlider" ).slider({
range: "min",
value: 0,
min: -10,
max: 10,
step: 0.25,
stop: function( event, ui ) {
sendCommand({
'command':'subdelay',
'val':(ui.value)
})
},
slide: function(event,ui){
$('#currentSubtitleDelay').empty();
$('#currentSubtitleDelay').append(ui.value+'s');
}
});
});
//]]>
</script>
<div id="window_offset" title="<?vlc gettext("Track Synchronisation") ?>">
<div><?vlc gettext("Playback Rate") ?></div>
<div id="rateSlider" title="<?vlc gettext("Playback Rate") ?>"></div>
<div id="currentRate" class="dynamic">1x</div>
<br/>
<div><?vlc gettext("Audio Delay") ?></div>
<div id="audioSlider" title="<?vlc gettext("Audio Delay") ?>"></div>
<div id="currentAudioDelay" class="dynamic">0s</div>
<br/>
<div><?vlc gettext("Subtitle Delay") ?></div>
<div id="subtitleSlider" title="<?vlc gettext("Subtitle Delay") ?>"></div>
<div id="currentSubtitleDelay" class="dynamic">0s</div>
</div>

View File

@ -0,0 +1,40 @@
<script type="text/javascript">
$(function(){
$('#window_stream_config').dialog({
autoOpen: false,
width:400,
modal: true,
buttons:{
"<?vlc gettext("Okay") ?>":function(){
$('#player').empty();
$('#player').attr('href',$('#stream_protocol').val()+'://'+$('#stream_host').val()+':'+$('#stream_port').val()+'/'+$('#stream_file').val());
flowplayer("player", "https://releases.flowplayer.org/swf/flowplayer-3.2.7.swf");
$(this).dialog('close');
},
"<?vlc gettext("Cancel") ?>":function(){
$(this).dialog('close');
}
}
});
})
</script>
<div id="window_stream_config" title="<?vlc gettext("Stream Input Configuration") ?>">
<table>
<tr>
<td><?vlc gettext("Protocol") ?></td>
<td><input type="text" name="stream_protocol" id="stream_protocol" value="http" /></td>
</tr>
<tr>
<td><?vlc gettext("Host") ?></td>
<td><input type="text" name="stream_host" id="stream_host" value="" /></td>
</tr>
<tr>
<td><?vlc gettext("Port") ?></td>
<td><input type="text" name="stream_port" id="stream_port" value="8081" /></td>
</tr>
<tr>
<td><?vlc gettext("File") ?></td>
<td><input type="text" name="stream_file" id="stream_file" value="stream.flv" /></td>
</tr>
</table>
</div>

View File

@ -0,0 +1,99 @@
<script type="text/javascript">
//<![CDATA[
var stream_server = window.location.hostname;
function configureStreamWindow(stream_protocol,stream_server,stream_port,stream_file){
$('#stream_protocol').val(stream_protocol);
$('#stream_host').val(stream_server);
$('#stream_port').val(stream_port);
$('#stream_file').val(stream_file);
}
$(function(){
$('#window_streams').dialog({
autoOpen: false,
minWidth: 600,
minHeight: 430,
buttons:{
"<?vlc gettext("Close") ?>":function(){
$(this).dialog("close");
}
}
});
$('#window_stream_config').dialog({
autoOpen: false,
width:400,
modal: true,
buttons:{
"<?vlc gettext("Okay") ?>":function(){
$(this).dialog('close');
}
}
});
$('#button_create_stream').click(function(){
$('#window_create_stream').dialog('open');
return false;
});
$('#button_clear_streams').click(function(){
sendVLMCmd('del all');
return false;
});
$('#button_config_streams').click(function(){
$('#window_stream_config').dialog('open');
return false;
});
$('#button_create_mosaic').click(function(){
$('#window_mosaic').dialog('open');
return false;
});
$('#button_refresh_streams').click(function(){
updateStreams();
return false;
})
$('#stream_host').val(stream_server);
});
//]]>
</script>
<div id="stream_status_" style="visibility:hidden;display:none;">
<h3><a href="#" id="stream_title_"></a></h3>
<div>
<div id="button_stream_stop_" class="button icon ui-widget ui-state-default" title="<?vlc gettext("Stop") ?>"><span class="ui-icon ui-icon-stop"></span></div>
<div id="button_stream_play_" class="button icon ui-widget ui-state-default" title="<?vlc gettext("Play") ?>"><span class="ui-icon ui-icon-play"></span></div>
<div id="button_stream_loop_" class="button icon ui-widget ui-state-default" title="<?vlc gettext("Loop") ?>"><span class="ui-icon ui-icon-refresh"></span></div>
<div id="button_stream_delete_" class="button icon ui-widget ui-state-default" title="<?vlc gettext("Remove Stream") ?>"><span class="ui-icon ui-icon-trash"></span></div>
<div>Title: <span id="stream_file_"></span></div>
<div style="width: 260px; margin: 5px 0px 10px 0px;">
<div id="stream_pos_"></div>
<?vlc gettext("Time:") ?> <span id="stream_current_time_">00:00:00</span> / <span id="stream_total_time_">00:00:00</span>
</div>
</div>
</div>
<div id="window_streams" title="<?vlc gettext("Manage Streams") ?>">
<div id="button_create_stream" class="button icon ui-widget ui-state-default" title="<?vlc gettext("Create New Stream") ?>" opendialog="window_create_stream"><span class="ui-icon ui-icon-plus"></span></div>
<div id="button_create_mosaic" class="button icon ui-widget ui-state-default" title="<?vlc gettext("Create Mosaic") ?>" opendialog="window_create_mosaiac"><span class="ui-icon ui-icon-calculator"></span></div>
<div id="button_clear_streams" class="button icon ui-widget ui-state-default" title="<?vlc gettext("Delete All Streams") ?>"><span class="ui-icon ui-icon-trash"></span></div>
<div id="button_config_streams" class="button icon ui-widget ui-state-default" title="<?vlc gettext("Configure Stream Defaults") ?>"><span class="ui-icon ui-icon-wrench"></span></div>
<div id="button_refresh_streams" class="button ui-widget ui-state-default ui-corner-all" title="<?vlc gettext("Refresh Streams") ?>"><span class="ui-icon ui-icon-arrowrefresh-1-n"></span></div>
<div id="stream_info">
</div>
</div>
<div id="window_stream_config" title="<?vlc gettext("Stream Input Configuration") ?>">
<table>
<tr>
<td><?vlc gettext("Protocol") ?></td>
<td><input type="text" name="stream_protocol" id="stream_protocol" value="http" /></td>
</tr>
<tr>
<td><?vlc gettext("Host") ?></td>
<td><input type="text" name="stream_host" id="stream_host" value="" /></td>
</tr>
<tr>
<td><?vlc gettext("Port") ?></td>
<td><input type="text" name="stream_port" id="stream_port" value="8081" /></td>
</tr>
<tr>
<td><?vlc gettext("File") ?></td>
<td><input type="text" name="stream_file" id="stream_file" value="stream.flv" /></td>
</tr>
</table>
</div>

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 942 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 606 B

View File

@ -0,0 +1,313 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
< index.html: VLC media player web interface - VLM
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
< Copyright (C) 2005-2014 VLC authors and VideoLAN
<
< Authors: Brandon Brooks <bwbrooks -at- archmageinc -dot- com>
<
< This program is free software; you can redistribute it and/or modify
< it under the terms of the GNU General Public License as published by
< the Free Software Foundation; either version 2 of the License, or
< (at your option) any later version.
<
< This program is distributed in the hope that it will be useful,
< but WITHOUT ANY WARRANTY; without even the implied warranty of
< MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
< GNU General Public License for more details.
<
< You should have received a copy of the GNU General Public License
< along with this program; if not, write to the Free Software
< Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<html>
<head>
<title><?vlc gettext("VLC media player - Web Interface") ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="referrer" content="no-referrer" />
<link href="favicon.ico" type="image/x-icon" rel="shortcut icon" />
<script type="text/javascript" src="js/common.js"></script>
<script type="text/javascript">
//<![CDATA[
if(isMobile()){
window.location='mobile.html';
}
//]]>
</script>
<link type="text/css" href="css/ui-lightness/jquery-ui-1.8.13.custom.css" rel="stylesheet" />
<link type="text/css" href="css/main.css" rel="stylesheet" />
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.13/jquery-ui.min.js"></script>
<script type="text/javascript" src="js/jquery.jstree.js"></script>
<script type="text/javascript" src="js/ui.js"></script>
<script type="text/javascript" src="js/controllers.js"></script>
<script type="text/javascript">
//<![CDATA[
var pollStatus = true;
$(function(){
$('.button').hover(function(){$(this).addClass('ui-state-hover')},function(){$(this).removeClass('ui-state-hover')});
$('#buttonPlayList').click(function(){
$('#libraryContainer').animate({
height: 'toggle'
});
$('#buttonszone1').animate({
width: 'toggle'
});
return false;
});
$('#buttonViewer').click(function(){
$('#viewContainer').animate({
height: 'toggle'
})
return false;
});
$('#buttonEqualizer').click(function(){
updateEQ();
$('#window_equalizer').dialog('open');
return false;
})
$('#buttonOffsets').click(function(){
$('#window_offset').dialog('open');
return false;
});
$('#buttonBatch').click(function(){
$('#window_batch').dialog('open');
return false;
});
$('#buttonOpen').click(function(){
browse_target = 'default';
browse();
$('#window_browse').dialog('open');
return false;
});
$('#buttonPrev').mousedown(function(){
intv = 1;
ccmd = 'prev';
setIntv();
return false;
});
$('#buttonPrev').mouseup(function(){
if(intv<=5){
sendCommand({'command':'pl_previous'});
}
intv = 0;
return false;
});
$('#buttonNext').mousedown(function(){
intv = 1;
ccmd = 'next';
setIntv();
return false;
});
$('#buttonNext').mouseup(function(){
if(intv<=5){
sendCommand({'command':'pl_next'});
}
intv = 0;
return false;
});
$('#buttonPlEmpty').click(function(){
sendCommand({'command':'pl_empty'})
updatePlayList(true);
return false;
});
$('#buttonLoop').click(function(){
sendCommand({'command':'pl_loop'});
return false;
});
$('#buttonRepeat').click(function(){
sendCommand({'command':'pl_repeat'});
return false;
});
$('#buttonShuffle').click(function(){
sendCommand({'command':'pl_random'});
return false;
})
$('#buttonRefresh').click(function(){
updatePlayList(true);
return false;
});
$('#buttonPlPlay').click(function(){
sendCommand({
'command': 'pl_play',
'id':$('.jstree-clicked','#libraryTree').first().parents().first().attr('id').substr(5)
})
return false;
});
$('#buttonPlAdd').click(function(){
$('.jstree-clicked','#libraryTree').each(function(){
if($(this).parents().first().attr('uri')){
sendCommand({
'command':'in_enqueue',
'input' : $(this).parents().first().attr('uri')
});
};
});
$('#libraryTree').jstree('deselect_all');
setTimeout(function(){updatePlayList(true);},1000);
return false;
});
$('#buttonStreams, #buttonStreams2').click(function(){
updateStreams();
$('#window_streams').dialog('open');
});
$('#buttonSout').click(function(){
if(current_que=='main'){
$('#windowStreamConfirm').dialog('open');
}else{
$('#player').empty();
current_que = 'main';
sendVLMCmd('del Current');
updateStatus();
}
return false;
});
$('#qrCodeConfirm').dialog({
autoOpen: false,
width:600,
modal: true,
buttons:{
"<?vlc gettext("Yes") ?>":function(){
$(this).dialog('close');
var urlimg = $('#mobileintflink').prop('href');
var codeimg = $('<img width="350" height="350" alt="qrcode"/>');
codeimg.attr('src', 'https://chart.apis.google.com/chart?cht=qr&chs=350x350&chld=L&choe=UTF-8&chl=' + encodeURIComponent(urlimg));
codeimg.dialog({width: 350, height: 350, title: "<?vlc gettext("QR Code") ?>"});
},
"<?vlc gettext("No") ?>":function(){
$(this).dialog('close');
window.location = $('#mobileintflink').attr('href');
}
}
});
$('#windowStreamConfirm').dialog({
autoOpen: false,
width:600,
modal: true,
buttons:{
"<?vlc gettext("Yes") ?>":function(){
var file = $('[current="current"]','#libraryTree').length>0 ? $('[current="current"]','#libraryTree').first().attr('uri') : ($('.jstree-clicked','#libraryTree').length>0 ? $('.jstree-clicked','#libraryTree').first().parents().first().attr('uri') : ($('#plid_'+current_playlist_id).attr('uri') ? $('#plid_'+current_playlist_id).attr('uri') : false));
if(file){
if($('#viewContainer').css('display')=='none'){
$('#buttonViewer').click();
}
var defaultStream = 'new Current broadcast enabled input "'+file+'" output #transcode{vcodec=FLV1,vb=4096,fps=25,scale=1,acodec=mp3,ab=512,samplerate=44100,channels=2}:std{access='+$('#stream_protocol').val()+',mux=avformat{{mux=flv}},dst=0.0.0.0:'+$('#stream_port').val()+'/'+$('#stream_file').val()+'}';
sendVLMCmd('del Current;'+defaultStream+';control Current play');
$('#player').attr('href',$('#stream_protocol').val()+'://'+$('#stream_host').val()+':'+$('#stream_port').val()+'/'+$('#stream_file').val());
current_que = 'stream';
updateStreams();
}
$(this).dialog('close');
},
"<?vlc gettext("No") ?>":function(){
$(this).dialog('close');
}
}
});
$('#viewContainer').animate({height: 'toggle'});
});
/* delay script loading so we won't block if we have no net access */
$.getScript('https://releases.flowplayer.org/js/flowplayer-3.2.6.min.js', function(data, textStatus){
$('#player').empty();
flowplayer("player", "https://releases.flowplayer.org/swf/flowplayer-3.2.7.swf");
/* .getScript only handles success() */
});
//]]>
</script>
</head>
<body id="regular_layout">
<div class="centered">
<div id="mainContainer" class="centered">
<div id="controlContainer" class="ui-widget">
<div id="controlTable" class="ui-widget-content">
<ul id="controlButtons">
<li id="buttonPrev" class="button48 ui-corner-all" title="<?vlc gettext("Previous") ?>"></li>
<li id="buttonPlay" class="button48 ui-corner-all paused" title="<?vlc gettext("Play") ?>"></li>
<li id="buttonNext" class="button48 ui-corner-all" title="<?vlc gettext("Next") ?>"></li>
<li id="buttonOpen" class="button48 ui-corner-all" title="<?vlc gettext("Open Media") ?>"></li>
<li id="buttonStop" class="button48 ui-corner-all" title="<?vlc gettext("Stop") ?>"></li>
<li id="buttonFull" class="button48 ui-corner-all" title="<?vlc gettext("Full Screen") ?>"></li>
<li id="buttonSout" class="button48 ui-corner-all" title="<?vlc gettext("Easy Stream") ?>"></li>
</ul>
<ul id="buttonszone2" class="buttonszone">
<li id="buttonPlayList" class="button ui-widget ui-state-default ui-corner-all" title="<?vlc gettext("Hide / Show Library") ?>"><span class="ui-icon ui-icon-note"></span><?vlc gettext("Hide / Show Library") ?></li>
<li id="buttonViewer" class="button ui-widget ui-state-default ui-corner-all" title="<?vlc gettext("Hide / Show Viewer") ?>"><span class="ui-icon ui-icon-video"></span><?vlc gettext("Hide / Show Viewer") ?></li>
<li id="buttonStreams" class="button ui-widget ui-state-default ui-corner-all" title="<?vlc gettext("Manage Streams") ?>"><span class="ui-icon ui-icon-script"></span><?vlc gettext("Manage Streams") ?></li>
<li id="buttonOffsets" class="button ui-widget ui-state-default ui-corner-all" title="<?vlc gettext("Track Synchronisation") ?>"><span class="ui-icon ui-icon-transfer-e-w"></span><?vlc gettext("Track Synchronisation") ?></li>
<li id="buttonEqualizer" class="button ui-widget ui-state-default ui-corner-all" title="<?vlc gettext("Equalizer") ?>"><span class="ui-icon ui-icon-signal"></span><?vlc gettext("Equalizer") ?></li>
<li id="buttonBatch" class="button ui-widget ui-state-default ui-corner-all" title="<?vlc gettext("VLM Batch Commands") ?>"><span class="ui-icon ui-icon-suitcase"></span><?vlc gettext("VLM Batch Commands") ?></li>
</ul>
<div id="volumesliderzone">
<div id="volumeSlider" title="Volume"><img src="images/speaker-32.png" class="ui-slider-handle" alt="volume"/></div>
<div id="currentVolume" class="dynamic">50%</div>
</div>
<div id="artszone">
<img id="albumArt" src="/art" width="141px" height="130px" alt="Album Art"/>
</div>
<div id="mediaTitle" class="dynamic"></div>
<div id="seekContainer">
<div id="seekSlider" title="<?vlc gettext("Seek Time") ?>"></div>
<div id="currentTime" class="dynamic">00:00:00</div>
<div id="totalTime" class="dynamic">00:00:00</div>
</div>
</div>
</div>
<div id="libraryContainer" class="ui-widget">
<ul id="buttonszone1" align="left" class="buttonszone ui-widget-content" style="overflow:hidden; white-space: nowrap;">
<li id="buttonShuffle" class="button ui-widget ui-state-default ui-corner-all" title="<?vlc gettext("Shuffle") ?>"><span class="ui-icon ui-icon-shuffle"></span><?vlc gettext("Shuffle") ?></li>
<li id="buttonLoop" class="button ui-widget ui-state-default ui-corner-all" title="<?vlc gettext("Loop") ?>"><span class="ui-icon ui-icon-refresh"></span><?vlc gettext("Loop") ?></li>
<li id="buttonRepeat" class="button ui-widget ui-state-default ui-corner-all" title="<?vlc gettext("Repeat") ?>"><span class="ui-icon ui-icon-arrowreturnthick-1-w"></span><?vlc gettext("Repeat") ?></li>
<li id="buttonPlEmpty" class="button ui-widget ui-state-default ui-corner-all" title="<?vlc gettext("Empty Playlist") ?>"><span class="ui-icon ui-icon-trash"></span><?vlc gettext("Empty Playlist") ?></li>
<li id="buttonPlAdd" class="button ui-widget ui-state-default ui-corner-all" title="<?vlc gettext("Queue Selected") ?>"><span class="ui-icon ui-icon-plus"></span><?vlc gettext("Queue Selected") ?></li>
<li id="buttonPlPlay" class="button ui-widget ui-state-default ui-corner-all" title="<?vlc gettext("Play Selected") ?>"><span class="ui-icon ui-icon-play"></span><?vlc gettext("Play Selected") ?></li>
<li id="buttonRefresh" class="button ui-widget ui-state-default ui-corner-all" title="<?vlc gettext("Refresh List") ?>"><span class="ui-icon ui-icon-arrowrefresh-1-n"></span><?vlc gettext("Refresh List") ?></li>
</ul>
<div id="libraryTree" class="ui-widget-content"></div>
</div>
<div id="viewContainer" class="ui-widget">
<div id="mediaViewer" class="ui-widget-content">
<div href="http://localhost:8081/stream.flv" style="display:block; width:100%" id="player">
<p><?vlc gettext("Loading flowplayer...") ?><br/><?vlc gettext("If nothing appears, check your internet connection.") ?></p>
</div>
</div>
</div>
<div class="footer">
VLC <?vlc print(vlc.misc.version() .. ' - Lua Web Interface - <a id="mobileintflink" href="mobile.html">Mobile Interface</a> - ' .. vlc.misc.copyright()) ?>
</div>
</div>
</div>
<div id="qrCodeConfirm" title="<?vlc gettext("Generate QR Code") ?>">
<p>
<?vlc gettext("VLC can display a QR code linking to the mobile version of the web interface; the web address of the web interface of your VLC media player instance will be transmitted over the internet to the Google Image Charts web service to generate this QR code.") ?>
</p>
<p>
<?vlc gettext("Do you want to go ahead with this?") ?>
</p>
</div>
<div id="windowStreamConfirm" title="<?vlc gettext("Confirm Stream Settings") ?>">
<p>
<?vlc gettext("By creating a stream, the <i>Main Controls</i> will operate the stream instead of the main interface.") ?>
<?vlc gettext("The stream will be created using default settings, for more advanced configuration, or to modify the default settings, select the button to the right: <i>Manage Streams</i>") ?>
<span id="buttonStreams2" class="button ui-widget ui-state-default ui-corner-all" title="<?vlc gettext("Manage Streams") ?>"><span class="ui-icon ui-icon-script"></span></span>
</p>
<p>
<?vlc gettext("Once the stream is created, the <i>Media Viewer</i> window will display the stream.") ?>
<?vlc gettext("Volume will be controlled by the player, and not the <i>Main Controls</i>.") ?>
</p>
<p>
<?vlc gettext("The current playing item will be streamed. If there is no currently playing item, the first selected item from the <i>Library</i> will be the subject of the stream.") ?>
</p>
<p>
<?vlc gettext("To stop the stream and resume normal controls, click the <i>Open Stream</i> button again.") ?>
</p>
<p>
<?vlc gettext("Are you sure you wish to create the stream?") ?>
</p>
</div>
<?vlc
current_page = "index"
dialogs("browse_window.html","stream_window.html","create_stream.html","offset_window.html","mosaic_window.html","equalizer_window.html","batch_window.html","error_window.html");
?>
</body>
</html>

View File

@ -0,0 +1,93 @@
var intv = 0;
var ccmd = "";
var video_types = [
"asf", "avi", "bik", "bin", "divx", "drc", "dv", "f4v", "flv", "gxf", "iso",
"m1v", "m2v", "m2t", "m2ts", "m4v", "mkv", "mov",
"mp2", "mp4", "mpeg", "mpeg1",
"mpeg2", "mpeg4", "mpg", "mts", "mtv", "mxf", "mxg", "nuv",
"ogg", "ogm", "ogv", "ogx", "ps",
"rec", "rm", "rmvb", "rpl", "thp", "ts", "txd", "vob", "wmv", "xesc" ];
var audio_types = [
"3ga", "a52", "aac", "ac3", "ape", "awb", "dts", "flac", "it",
"m4a", "m4p", "mka", "mlp", "mod", "mp1", "mp2", "mp3",
"oga", "ogg", "oma", "s3m", "spx", "thd", "tta",
"wav", "wma", "wv", "xm"
];
var playlist_types = [
"asx", "b4s", "cue", "ifo", "m3u", "m3u8", "pls", "ram", "rar",
"sdp", "vlc", "xspf", "zip", "conf"
];
var stream_server = window.location.hostname;
function format_time(s) {
var hours = Math.floor(s / 3600);
var minutes = Math.floor((s / 60) % 60);
var seconds = Math.floor(s % 60);
hours = hours < 10 ? "0" + hours : hours;
minutes = minutes < 10 ? "0" + minutes : minutes;
seconds = seconds < 10 ? "0" + seconds : seconds;
return hours + ":" + minutes + ":" + seconds;
}
function toFloat(text) {
return parseFloat(text.replace(',', '.'));
}
function setIntv() {
if (intv > 0) {
intv++;
setTimeout(setIntv, 500);
} else {
intv = 0;
}
if (intv > 5) {
var nt = 0;
switch (ccmd) {
case 'prev':
nt = Math.max(0, $('#seekSlider').slider('value') - 10);
break;
case 'next':
nt = Math.max(0, $('#seekSlider').slider('value') + 10);
break;
}
switch (current_que) {
case 'main':
sendCommand({
'command': 'seek',
'val': Math.round((nt / 100) * $('#seekSlider').attr('totalLength')),
plreload: false
});
break;
case 'stream':
sendVLMCmd('control Current seek ' + nt);
break;
}
}
}
function isMobile() {
var a = navigator.userAgent || navigator.vendor || window.opera;
if (/android|avantgo|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|e\-|e\/|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(di|rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|xda(\-|2|g)|yas\-|your|zeto|zte\-/i.test(a.substr(0, 4))) {
return true;
}
return false;
}
function createElementLi(name, type, dir, ext) {
var icon = "Other-48.png";
if( type == "dir" && name == '..' )
icon = "Back-48.png";
else if( type == 'dir' )
icon = "Folder-48.png";
else if( $.inArray(ext, video_types) != -1 )
icon = "Video-48.png";
else if( $.inArray(ext, audio_types) != -1 )
icon = "Audio-48.png";
else if( $.inArray(ext, playlist_types) != -1 )
// TODO: Playlist-48.png
icon = "Other-48.png";
var open = type == "dir" ? "opendir='" + dir + "'" : (type == "file" ? "openfile='" + dir + "'" : "opendev='" + dir + "'");
var str = "<li class='system_icon ui-widget-content' " + open + " ><img src='images/" + icon + "' width='48px' height='48px' title='" + name + "' alt='" + name + "' style='border: none;background:none;'/><div style='font-size:10px;border:none;background:none;'>" + name + "</div></li>";
return str;
}

View File

@ -0,0 +1,532 @@
var currentArt = null;
var current_que = 'main';
var current_playlist_id = -1;
var previous_playlist_id = -1;
var seek_sec = 0;
function updateArt(url) {
$('#albumArt').fadeOut(500, function () {
$(this).addClass('hidden').removeAttr('height').removeAttr('width').attr('src', url);
});
}
function updateStatus() {
$.ajax({
url: 'requests/status.xml',
success: function (data, status, jqXHR) {
if (current_que == 'main') {
$('.dynamic').empty();
$('#mediaTitle').append($('[name="filename"]', data).text());
$('#totalTime').append(format_time($('length', data).text()));
$('#currentTime').append(format_time($('time', data).text()));
if (!$('#seekSlider').data('clicked')) {
$('#seekSlider').slider({
value: toFloat($('position', data).text()) * 100
});
}
$('#currentVolume').append(Math.round($('volume', data).text() / 2.56) + '%');
/* Don't interfere with the user's action */
if (!$('#volumeSlider').data('clicked')) {
$('#volumeSlider').slider({
value: ($('volume', data).text() / 5.12)
});
}
$('#rateSlider').slider({
value: ($('rate', data).text())
});
$('#currentRate').append(Math.round($('rate', data).text() * 100) / 100 + 'x');
$('#audioSlider').slider({
value: ($('audiodelay', data).text())
});
$('#currentAudioDelay').append(Math.round($('audiodelay', data).text() * 100) / 100 + 's');
$('#subtitleSlider').slider({
value: ($('subtitledelay', data).text())
});
$('#currentSubtitleDelay').append(Math.round($('subtitledelay', data).text() * 100) / 100 + 's');
$('#seekSlider').attr('totalLength', $('length', data).text());
$('#buttonPlay').attr('state', $('state', data).text()).attr('mrl', $('[name="filename"]', data).text());
if ($('state', data).text() == 'playing') {
$('#buttonPlay').removeClass('paused').addClass('playing');
} else {
$('#buttonPlay').removeClass('playing').addClass('paused');
}
if ($('random', data).text() == 'true') {
$('#buttonShuffle').removeClass('ui-state-default').addClass('ui-state-active');
} else {
$('#buttonShuffle').addClass('ui-state-default').removeClass('ui-state-active');
}
if ($('loop', data).text() == 'true') {
$('#buttonLoop').removeClass('ui-state-default').addClass('ui-state-active');
} else {
$('#buttonLoop').addClass('ui-state-default').removeClass('ui-state-active');
}
if ($('repeat', data).text() == 'true') {
$('#buttonRepeat').removeClass('ui-state-default').addClass('ui-state-active');
} else {
$('#buttonRepeat').addClass('ui-state-default').removeClass('ui-state-active');
}
if ($('[name="artwork_url"]', data).text() != currentArt && $('[name="artwork_url"]', data).text() != "") {
var tmp = new Date();
currentArt = $('[name="artwork_url"]', data).text();
updateArt('/art?' + tmp.getTime());
} else if ($('[name="artwork_url"]', data).text() == "" && currentArt != 'images/vlc-48.png') {
currentArt = 'images/vlc-48.png';
updateArt(currentArt);
}
current_playlist_id = parseInt($('currentplid', data).text());
if (previous_playlist_id != current_playlist_id) {
updatePlayList();
previous_playlist_id = current_playlist_id;
}
seek_sec = parseInt($('seek_sec', data).text());
if (pollStatus) {
setTimeout(updateStatus, 1000);
}
}
$('band', data).each(function () {
var id = $(this).attr('id');
var value = $(this).text() ? $(this).text() : 0;
var freq = ["60 Hz","170 Hz", "310 Hz", "600 Hz", "1 kHz","3 kHz", "6 kHz", "12 kHz" , "14 kHz" , "16 kHz" ];
if (!$('#eq_container' + id).length) {
$('#window_equalizer').append('<div style="float:left;width:44px;" align="center" id="eq_container' + id + '"><div id="eq' + id + '_txt">' + value + 'dB</div><div class="eqBand" id="eq' + id + '" style="font-size: 18px;"></div><div>' + freq[id] + '</div></div>');
$('#eq' + id).slider({
min: -20,
max: 20,
step: 0.1,
range: "min",
value: value,
animate: true,
orientation: "vertical",
stop: function (event, ui) {
$('#' + $(this).attr('id') + '_txt').empty().append(ui.value + 'dB');
sendCommand({
command: 'equalizer',
val: ui.value,
band: $(this).attr('id').substr(2)
})
},
slide: function (event, ui) {
$('#' + $(this).attr('id') + '_txt').empty().append(ui.value + 'dB');
}
});
} else {
$('#eq' + id).slider({
value: value
});
$('#eq' + id + '_txt').empty().append(Math.round(value * 100) / 100 + 'dB');
}
});
$('#preamp').slider('value', $('preamp', data).text());
$('#preamp_txt').empty().append(Math.round($('preamp', data).text() * 100) / 100 + 'dB');
},
error: function (jqXHR, status, error) {
setTimeout(updateStatus, 500);
}
});
}
function updatePlayList(force_refresh) {
if (force_refresh) {
//refresh playlist..
$('#libraryTree').jstree('refresh', -1);
} else {
//iterate through playlist..
var match = false;
$('.jstree-leaf').each(function(){
var id = $(this).attr('id');
if (id != null && id.substr(0,5) == 'plid_') {
if ( id.substr(5) == current_playlist_id ) {
$(this).addClass('ui-state-highlight');
$(this).attr('current', 'current');
this.scrollIntoView(true);
match = true;
} else {
$(this).removeClass('ui-state-highlight');
$(this).removeAttr('current');
}
if ($(this).children('a').size() > 0) {
$($(this).children('a')[0]).removeClass('ui-state-active');
}
}
});
//local title wasn't found - refresh playlist..
if (!match) updatePlayList(true);
}
}
function sendCommand(params, append) {
if (current_que == 'stream') {
$.ajax({
url: 'requests/status.xml',
data: params,
success: function (data, status, jqXHR) {
if (append != undefined) {
eval(append);
}
updateStatus();
}
});
} else {
if (params.plreload === false) {
$.ajax({
url: 'requests/status.xml',
data: params,
success: function (data, status, jqXHR) {
if (append != undefined) {
eval(append);
}
}
});
} else {
$.ajax({
url: 'requests/status.xml',
data: params,
success: function (data, status, jqXHR) {
if (append != undefined) {
eval(append);
}
}
});
}
}
}
function browse(dir) {
dir = dir == undefined ? 'file://~' : dir;
$.ajax({
url: 'requests/browse.xml',
data: 'uri=' + encodeURIComponent(dir),
success: function (data, status, jqXHR) {
var tgt = browse_target.indexOf('__') == -1 ? browse_target : browse_target.substr(0, browse_target.indexOf('__'));
$('#browse_elements').empty();
$('element', data).each(function () {
var ext = $(this).attr('name').substr($(this).attr('name').lastIndexOf('.') + 1).toLowerCase();
if ($(this).attr('type') == 'dir' || $.inArray(ext, video_types) != -1 || $.inArray(ext, audio_types) != -1 || $.inArray(ext, playlist_types) != -1) {
$('#browse_elements').append(createElementLi($(this).attr('name'), $(this).attr('type'), $(this).attr('uri'), ext));
}
});
$('[opendir]').dblclick(function () {
browse($(this).attr('opendir'));
});
$('[openfile]').dblclick(function () {
switch (tgt) {
case '#stream_input':
$(browse_target).val($(this).attr('openfile'));
break;
case '#mosaic_open':
$('li', browse_target).remove();
$(browse_target).append(this);
$(this).css({
'margin-left': -40,
'margin-top': -46,
'float': 'left'
});
break;
case '#mobile':
break;
default:
sendCommand('command=in_play&input=' + encodeURIComponent($(this).attr('openfile')));
updatePlayList(true);
break;
}
$('#window_browse').dialog('close');
});
$('[opendir]').click(function () {
switch (tgt) {
case '#mobile':
browse($(this).attr('opendir'));
break;
default:
break;
}
});
$('[openfile]').click(function () {
switch (tgt) {
case '#mobile':
sendCommand('command=in_play&input=' + encodeURIComponent($(this).attr('openfile')), "window.location='mobile.html'");
break;
default:
break;
}
});
switch (tgt) {
case '#mobile':
break;
default:
$('[selectable]').selectable();
break;
}
},
error: function (jqXHR, status, error) {
setTimeout('browse("' + dir + '")', 1041);
}
});
}
function updateStreams() {
$.ajax({
url: 'requests/vlm.xml',
success: function (data, status, jqXHR) {
$('#stream_info').accordion("destroy");
$('#stream_info').empty();
$('broadcast', data).each(function () {
var stream_div = $('#stream_status_').clone();
var name = $(this).attr('name');
var loop = $(this).attr('loop') == 'yes';
var playing = $('instance', $(this)).attr('state') == 'playing';
var file = $('input', $(this)).text();
var output = $('output', $(this)).text();
var time = isNaN(Math.round($('instance', $(this)).attr('time') / 1000000)) ? 0 : Math.round($('instance', $(this)).attr('time') / 1000000);
var length = isNaN(Math.round($('instance', $(this)).attr('length') / 1000000)) ? 0 : Math.round($('instance', $(this)).attr('length') / 1000000);
$('[id]', stream_div).each(function () {
$(this).attr('id', $(this).attr('id') + name);
});
$(stream_div).attr('id', $(stream_div).attr('id') + name);
$('#stream_title_' + name, stream_div).append(name);
$('#stream_file_' + name, stream_div).append(file);
$('#stream_pos_' + name, stream_div).slider({
value: 0,
range: "min",
min: 0,
slide: function (event, ui) {
$("#stream_current_time_" + name, stream_div).empty();
$("#stream_current_time_" + name, stream_div).append(format_time(ui.value));
$("#stream_total_time_" + name, stream_div).empty();
$("#stream_total_time_" + name, stream_div).append(format_time($('#stream_pos_' + name, stream_div).slider('option', 'max')));
sendVLMCmd('control ' + name + ' seek ' + Math.round(ui.value / $('#stream_pos_' + name, stream_div).slider('option', 'max') * 100));
},
change: function (event, ui) {
$("#stream_current_time_" + name, stream_div).empty();
$("#stream_current_time_" + name, stream_div).append(format_time(ui.value));
$("#stream_total_time_" + name, stream_div).empty();
$("#stream_total_time_" + name, stream_div).append(format_time($('#stream_pos_' + name, stream_div).slider('option', 'max')));
}
});
$('#button_stream_stop_' + name, stream_div).click(function () {
sendVLMCmd('control ' + name + ' stop');
return false;
});
$('#button_stream_play_' + name, stream_div).click(function () {
if ($('span', this).hasClass('ui-icon-pause')) {
sendVLMCmd('control ' + name + ' pause');
} else {
sendVLMCmd('control ' + name + ' play');
}
});
$('#button_stream_loop_' + name, stream_div).click(function () {
if (loop) {
sendVLMCmd('setup ' + name + ' unloop');
} else {
sendVLMCmd('setup ' + name + ' loop');
}
});
$('#button_stream_delete_' + name, stream_div).click(function () {
sendVLMCmd('del ' + name);
});
$('#stream_pos_' + name, stream_div).slider({
max: length,
value: time
});
if (playing) {
$('span', $('#button_stream_play_' + name, stream_div)).removeClass('ui-icon-play');
$('span', $('#button_stream_play_' + name, stream_div)).addClass('ui-icon-pause');
}
if (loop) {
$('#button_stream_loop_' + name, stream_div).addClass('ui-state-active');
}
$(stream_div).css({
'visibility': '',
'display': ''
});
$('#stream_info').append(stream_div);
});
$('.button').hover(
function () {
$(this).addClass('ui-state-hover');
}, function () {
$(this).removeClass('ui-state-hover');
});
$('#stream_info').accordion({
header: "h3",
collapsible: true,
autoHeight: true
});
if (current_que == 'stream') {
$('.dynamic').empty();
$('#mediaTitle').append($('[name="Current"] input', data).text());
$('#totalTime').append(format_time(isNaN($('[name="Current"] instance', data).attr('length')) ? 0 : $('[name="Current"] instance', data).attr('length') / 1000000));
$('#currentTime').append(format_time(isNaN($('[name="Current"] instance', data).attr('time')) ? 0 : $('[name="Current"] instance', data).attr('time') / 1000000));
$('#seekSlider').slider({
value: (($('[name="Current"] instance', data).attr('time') / 1000000) / ($('[name="Current"] instance', data).attr('length') / 1000000) * 100)
});
$('#seekSlider').attr('totalLength', $('[name="Current"] instance', data).attr('length') / 1000000);
$('#buttonPlay').attr('state', $('[name="Current"] instance', data).length > 0 ? $('[name="Current"] instance', data).attr('state') : 'stopped');
if ($('[name="Current"] instance', data).attr('state') == 'playing') {
$('#buttonPlay').removeClass('paused');
$('#buttonPlay').addClass('playing');
} else {
$('#buttonPlay').removeClass('playing');
$('#buttonPlay').addClass('paused');
}
setTimeout(updateStreams, 1000);
}
}
});
}
function updateEQ() {
$.ajax({
url: 'requests/status.xml',
success: function (data, status, jqXHR) {
$('band', data).each(function () {
var freq = ["60 Hz","170 Hz", "310 Hz", "600 Hz", "1 kHz","3 kHz", "6 kHz", "12 kHz" , "14 kHz" , "16 kHz" ];
var id = $(this).attr('id');
var value = $(this).text() ? $(this).text() : 0;
if (!$('#eq_container' + id).length) {
$('#window_equalizer').append('<div style="float:left;width:44px;" align="center" id="eq_container' + id + '"><div id="eq' + id + '_txt">' + value + 'dB</div><div class="eqBand" id="eq' + id + '" style="font-size: 18px;"></div><div>' + freq[id] + '</div></div>');
$('#eq' + id).slider({
min: -20,
max: 20,
step: 0.1,
range: "min",
value: value,
animate: true,
orientation: "vertical",
stop: function (event, ui) {
$('#' + $(this).attr('id') + '_txt').empty().append(ui.value + 'dB');
sendEQCmd({
command: 'equalizer',
val: ui.value,
band: $(this).attr('id').substr(2)
})
},
slide: function (event, ui) {
$('#' + $(this).attr('id') + '_txt').empty().append(ui.value + 'dB');
}
});
} else {
$('#eq' + id).slider({
value: value
});
$('#eq' + id + '_txt').empty().append(Math.round(value * 100) / 100 + 'dB');
}
});
$('#preamp').slider('value', $('preamp', data).text());
$('#preamp_txt').empty().append(Math.round($('preamp', data).text() * 100) / 100 + 'dB');
}
})
}
function sendVLMCmd(command, append) {
var commands = command.split(';');
if (commands.length > 1) {
sendBatchVLMCmd(command, append);
} else {
if (current_que == 'main') {
$.ajax({
url: 'requests/vlm_cmd.xml',
data: 'command=' + encodeURIComponent(command),
success: function (data, status, jqXHR) {
if ($('error', data).text()) {
$('#error_container').append('<div>' + $('error', data).text() + '</div>');
$('#window_error').dialog('open');
}
if (append != undefined) {
eval(append);
}
updateStreams();
}
});
} else {
$.ajax({
url: 'requests/vlm_cmd.xml',
data: 'command=' + encodeURIComponent(command),
success: function (data, status, jqXHR) {
if ($('error', data).text()) {
$('#error_container').append('<div>' + $('error', data).text() + '</div>');
$('#window_error').dialog('open');
}
updateStreams();
}
});
}
}
}
function sendBatchVLMCmd(command, append) {
var commands = command.split(';');
$.ajax({
url: 'requests/vlm_cmd.xml',
data: 'command=' + encodeURIComponent(commands.shift()),
success: function (data, status, jqXHR) {
if ($('error', data).text()) {
$('#error_container').append('<div>' + $('error', data).text() + '</div>');
$('#window_error').dialog('open');
}
sendVLMCmd(commands.join(';'), append);
}
});
}
function sendEQCmd(params) {
$.ajax({
url: 'requests/status.xml',
data: params,
success: function (data, status, jqXHR) {
updateEQ();
}
});
}
$(function () {
$('#albumArt').load(function () {
var width = $(this).width();
var height = $(this).height();
var max = Math.max(width, height);
if (max > 150) {
var ratio = 150 / max;
width = Math.floor(width * ratio);
height = Math.floor(height * ratio);
}
$(this).attr('width', width).attr('height', height).css('margin-left', Math.floor((150 - width) / 2)).css('margin-top', Math.floor((150 - height) / 2)).removeClass('hidden').fadeIn();
});
$('#libraryTree').jstree({
"xml_data": {
"ajax": {
"url": "requests/playlist_jstree.xml"
},
"xsl": "nest"
},
"themeroller": {
"item_leaf": "ui-icon-video"
},
"core": {
"initially_open": ["plid_1", "plid_2", "plid_3"]
},
"plugins": ["xml_data", "ui", "themeroller"]
}).bind("loaded.jstree", function (event, data) {
$('[current]', '[id^="plid_"]').each(function () {
$(this).addClass('ui-state-highlight');
current_playlist_id = $(this).attr('id').substr(5);
});
}).bind("refresh.jstree", function (event, data) {
$('[current]', '[id^="plid_"]').each(function () {
$(this).addClass('ui-state-highlight');
current_playlist_id = $(this).attr('id').substr(5);
});
}).delegate("#plid_0 li.jstree-leaf a", "click", function (event, data) {
event.preventDefault();
current_playlist_id = $(this).parent().attr('id').substr(5);
sendCommand('command=pl_play&id=' + current_playlist_id);
});
updateStatus();
updateStreams();
updateEQ();
});

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,115 @@
$(function () {
$("#seekSlider").slider({
range: "min",
value: 0,
min: 0,
max: 100,
start: function (event, ui) {
$("#seekSlider").data( 'clicked', true );
},
stop: function (event, ui) {
$("#currentTime").empty().append(format_time(Math.round((ui.value / 100) * $('#seekSlider').attr('totalLength'))));
switch (current_que) {
case 'main':
sendCommand({
'command': 'seek',
'val': (ui.value) + '%'
});
break;
case 'stream':
sendVLMCmd('control Current seek ' + ui.value);
break;
}
$("#seekSlider").data( 'clicked', false );
}
});
$("#volumeSlider").slider({
range: "min",
value: 50,
min: 0,
max: 100,
start: function (event, ui) {
$("#volumeSlider").data( 'clicked', true );
},
stop: function (event, ui) {
$("#currentVolume").empty().append(ui.value * 2 + "%");
sendCommand({
'command': 'volume',
'val': Math.round(ui.value * 5.12)
})
$("#volumeSlider").data( 'clicked', false );
}
});
/* To ensure that updateStatus() doesn't interfere while the user
* slides the controls. */
$("#seekSlider").data( 'clicked', false );
$("#volumeSlider").data( 'clicked', false );
$('#buttonStop').click(function () {
switch (current_que) {
case 'main':
sendCommand({
'command': 'pl_stop'
})
break;
case 'stream':
sendVLMCmd('control Current stop');
break;
}
return false;
});
$('#buttonPlay').click(function () {
if ($(this).attr('state') == 'stopped') {
switch (current_que) {
case 'main':
var id = $('.jstree-clicked', '#libraryTree').length > 0 ? $('.jstree-clicked', '#libraryTree').first().parents().first().attr('id').substr(5) : current_playlist_id;
sendCommand({
'command': 'pl_play',
'id': id
});
break;
case 'stream':
sendVLMCmd('control Current play');
flowplayer("player", "https://releases.flowplayer.org/swf/flowplayer-3.2.7.swf");
break;
}
} else {
switch (current_que) {
case 'main':
sendCommand({
'command': 'pl_pause'
});
break;
case 'stream':
sendVLMCmd('control Current pause');
break;
}
}
return false;
});
$('#buttonFull').click(function () {
sendCommand({
'command': 'fullscreen'
});
return false;
});
$('#stream_host').val(stream_server);
$('#mobileintflink').click(function () {
if ( ( window.location.hostname == 'localhost' )
|| ( window.location.hostname == '127.0.0.1' )
|| ( window.location.hostname == '[::1]' ) )
{
return true;
}
$('#qrCodeConfirm').dialog('open');
return false;
});
$('.buttonszone').each(function(i){
$(this).mouseover(function(){
$(this).addClass('buttonszone_active');
}).mouseleave(function () {
$(this).removeClass('buttonszone_active');
});
});
})

View File

@ -0,0 +1,112 @@
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
< mobile.html: VLC media player web interface - VLM
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
< Copyright (C) 2005-2014 VLC authors and VideoLAN
<
< Authors: Brandon Brooks <bwbrooks -at- archmageinc -dot- com>
<
< This program is free software; you can redistribute it and/or modify
< it under the terms of the GNU General Public License as published by
< the Free Software Foundation; either version 2 of the License, or
< (at your option) any later version.
<
< This program is distributed in the hope that it will be useful,
< but WITHOUT ANY WARRANTY; without even the implied warranty of
< MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
< GNU General Public License for more details.
<
< You should have received a copy of the GNU General Public License
< along with this program; if not, write to the Free Software
< Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<html>
<head>
<title>VLC media player - Web Interface</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="referrer" content="no-referrer" />
<meta name="viewport" content="initial-scale=1.0" />
<meta name="viewport" content="width=device-width" />
<meta name="apple-mobile-web-app-status-bar-style" content="default" />
<link href="favicon.ico" type="image/x-icon" rel="shortcut icon" />
<script type="text/javascript" src="js/common.js"></script>
<link type="text/css" href="css/ui-lightness/jquery-ui-1.8.13.custom.css" rel="stylesheet" />
<link type="text/css" href="css/mobile.css" rel="stylesheet" />
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.13/jquery-ui.min.js"></script>
<script type="text/javascript" src="js/jquery.jstree.js"></script>
<script type="text/javascript" src="https://releases.flowplayer.org/js/flowplayer-3.2.6.min.js"></script>
<script type="text/javascript" src="js/ui.js"></script>
<script type="text/javascript" src="js/controllers.js"></script>
<script type="text/javascript">
var pollStatus = true;
$(function(){
$('#buttonPrev').click(function(){
sendCommand({'command':'pl_previous'});
return false;
});
$('#buttonNext').click(function(){
sendCommand({'command':'pl_next'});
return false;
});
$('#buttonOpen').click(function(){
window.location='mobile_browse.html';
});
$('#buttonEQ').click(function(){
window.location='mobile_equalizer.html';
});
$('#buttonSout').click(function(){
var file = decodeURIComponent($('#buttonPlay').attr('mrl'));
if(file){
var defaultStream = 'new Current broadcast enabled input "'+file+'" output #transcode{vcodec=FLV1,vb=4096,fps=25,scale=1,acodec=mp3,ab=512,samplerate=44100,channels=2}:std{access='+$('#stream_protocol').val()+',mux=avformat{{mux=flv}},dst=0.0.0.0:'+$('#stream_port').val()+'/'+$('#stream_file').val()+'}';
sendVLMCmd('del Current;'+defaultStream+';control Current play','window.location="mobile_view.html"');
}
return false;
});
$('#buttonRewd').click(function(){
sendCommand({'command': 'seek', 'val': '-' + seek_sec.toString() + 'S'});
return false;
});
$('#buttonFwrd').click(function(){
sendCommand({'command': 'seek', 'val': '+' + seek_sec.toString() + 'S'});
return false;
});
})
</script>
</head>
<body>
<div id="content" class="centered">
<div id="art">
<img id="albumArt" src="/art" />
</div>
<div style="width:100%"><div id="mediaTitle" class="dynamic centered"></div></div>
<div id="play_controls">
<div id="buttons">
<div id="buttonPrev" class="button48 ui-corner-all" title="Previous">
</div><div id="buttonRewd" class="button48 ui-corner-all" title="Rewind">
</div><div id="buttonPlay" class="button48 ui-corner-all paused" title="Play">
</div><div id="buttonStop" class="button48 ui-corner-all" title="Stop">
</div><div id="buttonFwrd" class="button48 ui-corner-all" title="Forward">
</div><div id="buttonNext" class="button48 ui-corner-all" title="Next"></div>
</div>
<div id="seekSlider" title="Seek Time" style="font-size:15px;"></div>
<div id="currentTime" class="dynamic">00:00:00</div>
<div id="totalTime" class="dynamic">00:00:00</div>
</div>
<div id="controls">
<div id="buttons">
<div id="buttonOpen" class="button48 ui-corner-all" title="Open Media">
</div><div id="buttonFull" class="button48 ui-corner-all" title="Full Screen">
</div><div id="buttonEQ" class="button48 ui-corner-all" title="Equalizer">
</div><div id="buttonSout" class="button48 ui-corner-all" title="Easy Stream"></div>
</div>
<div id="volumeSlider" title="Volume" style="font-size:15px;">
<img src="images/speaker-32.png" class="ui-slider-handle" alt="volume"/>
</div>
</div>
<?vlc
dialogs("stream_config_window.html");
?>
</div>
</body>
</html>

View File

@ -0,0 +1,53 @@
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
< mobile_browse.html: VLC media player web interface - VLM
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
< Copyright (C) 2005-2014 VLC authors and VideoLAN
<
< Authors: Brandon Brooks <bwbrooks -at- archmageinc -dot- com>
<
< This program is free software; you can redistribute it and/or modify
< it under the terms of the GNU General Public License as published by
< the Free Software Foundation; either version 2 of the License, or
< (at your option) any later version.
<
< This program is distributed in the hope that it will be useful,
< but WITHOUT ANY WARRANTY; without even the implied warranty of
< MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
< GNU General Public License for more details.
<
< You should have received a copy of the GNU General Public License
< along with this program; if not, write to the Free Software
< Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<html>
<head>
<title><?vlc gettext("VLC media player - Web Interface") ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="referrer" content="no-referrer" />
<meta name="viewport" content="width=device-width" />
<link href="favicon.ico" type="image/x-icon" rel="shortcut icon" />
<script type="text/javascript" src="js/common.js"></script>
<link type="text/css" href="css/ui-lightness/jquery-ui-1.8.13.custom.css" rel="stylesheet" />
<link type="text/css" href="css/main.css" rel="stylesheet" />
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.13/jquery-ui.min.js"></script>
<script type="text/javascript" src="js/jquery.jstree.js"></script>
<script type="text/javascript" src="js/controllers.js"></script>
<script type="text/javascript">
var pollStatus = false;
var browse_target = '#mobile';
$(function(){
browse();
})
</script>
</head>
<body>
<div id="window_browse" title="<?vlc gettext("Media Browser") ?>">
<div>
<ol id='browse_elements' selectable="selectable">
<li><?vlc gettext("Play List") ?></li>
</ol>
</div>
</div>
</body>
</html>

View File

@ -0,0 +1,69 @@
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
< mobile_equalizer.html: VLC media player web interface - VLM
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
< Copyright (C) 2005-2006 the VideoLAN team
<
< Authors: Brandon Brooks <bwbrooks -at- archmageinc -dot- com>
<
< This program is free software; you can redistribute it and/or modify
< it under the terms of the GNU General Public License as published by
< the Free Software Foundation; either version 2 of the License, or
< (at your option) any later version.
<
< This program is distributed in the hope that it will be useful,
< but WITHOUT ANY WARRANTY; without even the implied warranty of
< MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
< GNU General Public License for more details.
<
< You should have received a copy of the GNU General Public License
< along with this program; if not, write to the Free Software
< Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<html>
<head>
<title><?vlc gettext("VLC media player - Web Interface") ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="referrer" content="no-referrer" />
<meta name="viewport" content="width=device-width; user-scalable=no" />
<link href="favicon.ico" type="image/x-icon" rel="shortcut icon" />
<script type="text/javascript" src="js/common.js"></script>
<link type="text/css" href="css/ui-lightness/jquery-ui-1.8.13.custom.css" rel="stylesheet" />
<link type="text/css" href="css/main.css" rel="stylesheet" />
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.13/jquery-ui.min.js"></script>
<script type="text/javascript" src="js/jquery.jstree.js"></script>
<script type="text/javascript" src="js/controllers.js"></script>
<script type="text/javascript">
var pollStatus = false;
$(function(){
$('#preamp').slider({
min: -20,
max: 20,
step: 0.1,
range: "min",
animate: true,
stop: function(event,ui){
$('#preamp_txt').empty().append(ui.value+'dB');
sendEQCmd({
command:'preamp',
val: ui.value
})
},
slide: function(event,ui){
$('#preamp_txt').empty().append(ui.value+'dB');
}
});
});
</script>
</head>
<body>
<div id="window_equalizer" title="<?vlc gettext("Graphical Equalizer") ?>">
<div style="margin: 5px 5px 5px 5px;">
<div><?vlc gettext("Preamp:") ?> <span id="preamp_txt">0dB</span></div>
</div>
<div style="margin: 5px 5px 10px 5px;">
<div id="preamp" style="font-size: 22px;"></div>
</div>
</div>
</body>
</html>

View File

@ -0,0 +1,56 @@
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
< mobile_view.html: VLC media player web interface - VLM
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
< Copyright (C) 2005-2014 VLC authors and VideoLAN
<
< Authors: Brandon Brooks <bwbrooks -at- archmageinc -dot- com>
<
< This program is free software; you can redistribute it and/or modify
< it under the terms of the GNU General Public License as published by
< the Free Software Foundation; either version 2 of the License, or
< (at your option) any later version.
<
< This program is distributed in the hope that it will be useful,
< but WITHOUT ANY WARRANTY; without even the implied warranty of
< MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
< GNU General Public License for more details.
<
< You should have received a copy of the GNU General Public License
< along with this program; if not, write to the Free Software
< Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<html>
<head>
<title><?vlc gettext("VLC media player - Web Interface") ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="referrer" content="no-referrer" />
<meta name="viewport" content="width=device-width; user-scalable=no" />
<link href="favicon.ico" type="image/x-icon" rel="shortcut icon"/>
<script type="text/javascript" src="js/common.js"></script>
<link type="text/css" href="css/ui-lightness/jquery-ui-1.8.13.custom.css" rel="stylesheet" />
<link type="text/css" href="css/main.css" rel="stylesheet" />
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.13/jquery-ui.min.js"></script>
<script type="text/javascript" src="js/jquery.jstree.js"></script>
<script type="text/javascript" src="js/controllers.js"></script>
<script type="text/javascript" src="js/ui.js"></script>
<script type="text/javascript">
var pollStatus = false;
/* delay script loading so we won't block if we have no net access */
$.getScript('https://releases.flowplayer.org/js/flowplayer-3.2.6.min.js', function(data, textStatus){
$('#player').empty();
$('#player').attr('href',$('#stream_protocol').val()+'://'+$('#stream_host').val()+':'+$('#stream_port').val()+'/'+$('#stream_file').val());
flowplayer("player", "https://releases.flowplayer.org/swf/flowplayer-3.2.7.swf");
/* .getScript only handles success() */
});
</script>
</head>
<body>
<div id="player" style="width:100%;height:100%">
</div>
<?vlc
dialogs("stream_config_window.html");
?>
</body>
</html>

View File

@ -0,0 +1,206 @@
This file describes commands available through the requests/ file:
Lines starting with < describe what the page sends back
Lines starting with > describe what you can send to the page
All parameters need to be URL encoded.
Examples:
# -> %23
% -> %25
+ -> %2B
space -> +
...
Deprecation Notice:
---
The entire interface is moving to using <MRL> for input and output parameters and attributes
pl_play and in_enqueue previously accepted paths. This is still supported, but from 1.3 <MRL> will be required
where path attributes are provided in output, these should be ignored in favour of uri attributes
path support is scheduled to be removed entirely from 1.3
---
<root> (/)
===========
> Get album art for current input:
/art (NB: not /requests/art)
> Get album art for any playlist input (available from API version 3):
/art?item=123 (NB: not /requests/art)
status.xml or status.json
===========
< Get VLC status information, current item info and meta.
< Get VLC version, and http api version
> add <uri> to playlist and start playback:
?command=in_play&input=<uri>&option=<option>
the option field is optional, and can have the values:
noaudio
novideo
> add <uri> to playlist:
?command=in_enqueue&input=<uri>
> add subtitle to currently playing file
?command=addsubtitle&val=<uri>
> play playlist item <id>. If <id> is omitted, play last active item:
?command=pl_play&id=<id>
> toggle pause. If current state was 'stop', play item <id>, if no <id> specified, play current item. If no current item, play 1st item in the playlist:
?command=pl_pause&id=<id>
> resume playback if paused, else do nothing
?command=pl_forceresume
> pause playback, do nothing if already paused
?command=pl_forcepause
> stop playback:
?command=pl_stop
> jump to next item:
?command=pl_next
> jump to previous item:
?command=pl_previous
> delete item <id> from playlist:
?command=pl_delete&id=<id>
NOTA BENE: pl_delete is completly UNSUPPORTED
> empty playlist:
?command=pl_empty
> set audio delay
?command=audiodelay&val=<delayinseconds>
> set subtitle delay
?command=subdelay&val=<delayinseconds>
> set playback rate. must be > 0
?command=rate&val=<newplaybackrate>
> set aspect ratio. Must be one of the following values. Any other value will reset aspect ratio to default
?command=aspectratio&val=<newratio>
Valid aspect ratio values: 1:1 , 4:3 , 5:4 , 16:9 , 16:10 , 221:100 , 235:100 , 239:100
> sort playlist using sort mode <val> and order <id>:
?command=pl_sort&id=<id>&val=<val>
If id=0 then items will be sorted in normal order, if id=1 they will be
sorted in reverse order
A non exhaustive list of sort modes:
0 Id
1 Name
3 Author
5 Random
7 Track number
> toggle random playback:
?command=pl_random
> toggle loop:
?command=pl_loop
> toggle repeat:
?command=pl_repeat
> toggle enable service discovery module <val>:
?command=pl_sd&val=<val>
Typical values are:
sap
shoutcast
podcast
hal
> toggle fullscreen:
?command=fullscreen
> set volume level to <val> (can be absolute integer, percent or +/- relative value):
?command=volume&val=<val>
Allowed values are of the form:
+<int>, -<int>, <int> or <int>%
> seek to <val>:
?command=seek&val=<val>
Allowed values are of the form:
[+ or -][<int><H or h>:][<int><M or m or '>:][<int><nothing or S or s or ">]
or [+ or -]<int>%
(value between [ ] are optional, value between < > are mandatory)
examples:
1000 -> seek to the 1000th second
+1H:2M -> seek 1 hour and 2 minutes forward
-10% -> seek 10% back
>command=preamp&val=<val in dB>
sets the preamp value, must be >=-20 and <=20
>command=equalizer&band=<band>&val=<gain in dB, must be >=-20 and <=20)
set the gain for a specific band
>command=enableeq&val=<0 or 1>
0 -- disables the equalizer
1 -- enables the equalizer
>command=setpreset&val=<presetid>
set the equalizer preset as per the id specified
<Displays the equalizer band gains.
Band 0: 60 Hz, 1: 170 Hz, 2: 310 Hz, 3: 600 Hz, 4: 1 kHz,
5: 3 kHz, 6: 6 kHz, 7: 12 kHz , 8: 14 kHz , 9: 16 kHz
<Display the list of presets available for the equalizer
---
Commands available from API version 2
---
> select the title
?command=title&val=<val>
> select the chapter
?command=title&val=<val>
> select the audio track (use the number from the stream)
?command=audio_track&val=<val>
> select the video track (use the number from the stream)
?command=video_track&val=<val>
> select the sibtitle track (use the number from the stream)
?command=subtitle_track&val=<val>
playlist.xml or playlist.json:
=============
< get the full playlist tree
NB: playlist_jstree.xml is used for the internal web client. It should not be relied upon by external remotes.
It may be removed without notice.
browse.xml or browse.json:
===========
< ?dir=<uri>
> get file list from uri. At the moment, only local file uris are supported
NB: uri is the preferred parameter. Dir is deprecated and may be removed in a future release.
< ?dir=<dir>
> get <dir>'s filelist
vlm.xml:
========
< get the full list of VLM elements
vlm_cmd.xml:
============
< execute VLM command <cmd>
?command=<cmd>
> get the error message from <cmd>

View File

@ -0,0 +1,38 @@
<?vlc --[[
vim:syntax=lua
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
< status.xml: VLC media player web interface
< this should mirror the content and function of status.json
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
< Copyright (C) 2005-2009 the VideoLAN team
<
< Authors: Rob Jonson <rob -at- hobbyistsoftware -dot- com>
<
< This program is free software; you can redistribute it and/or modify
< it under the terms of the GNU General Public License as published by
< the Free Software Foundation; either version 2 of the License, or
< (at your option) any later version.
<
< This program is distributed in the hope that it will be useful,
< but WITHOUT ANY WARRANTY; without even the implied warranty of
< MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
< GNU General Public License for more details.
<
< You should have received a copy of the GNU General Public License
< along with this program; if not, write to the Free Software
< Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
]]?>
<?vlc
--package.loaded.httprequests = nil --uncomment to debug changes
local httprequests = require "httprequests"
httprequests.processcommands()
local browseTable=httprequests.getbrowsetable()
httprequests.printTableAsJson(browseTable)
?>

View File

@ -0,0 +1,55 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<?vlc --[[
vim:syntax=lua
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
< browse.xml: VLC media player web interface
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
< Copyright (C) 2005-2006 the VideoLAN team
<
< Authors: Antoine Cellerier <dionoea -at- videolan -dot- org>
<
< This program is free software; you can redistribute it and/or modify
< it under the terms of the GNU General Public License as published by
< the Free Software Foundation; either version 2 of the License, or
< (at your option) any later version.
<
< This program is distributed in the hope that it will be useful,
< but WITHOUT ANY WARRANTY; without even the implied warranty of
< MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
< GNU General Public License for more details.
<
< You should have received a copy of the GNU General Public License
< along with this program; if not, write to the Free Software
< Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
]] ?>
<?vlc
--package.loaded.httprequests = nil --uncomment to debug changes
local httprequests = require "httprequests"
httprequests.processcommands()
local browseTable=httprequests.getbrowsetable()
print('<root>\n')
--httprequests.printTableAsJson(browseTable.element._array,0)
for i,e in ipairs(browseTable.element._array) do
print('\n<element ')
for k,v in pairs(e) do
print(" "..httprequests.xmlString(k).."='"..httprequests.xmlString(v).."'")
end
print('/>')
end
print('\n</root>')
?>

View File

@ -0,0 +1,35 @@
<?vlc --[[
vim:syntax=lua
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
< playlist.json: VLC media player web interface
< this should mirror the content of playlist.xml
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
< Copyright (C) 2005-2006 the VideoLAN team
<
< Authors: Rob Jonson <rob -at- hobbyistsoftware -dot- com>
<
< This program is free software; you can redistribute it and/or modify
< it under the terms of the GNU General Public License as published by
< the Free Software Foundation; either version 2 of the License, or
< (at your option) any later version.
<
< This program is distributed in the hope that it will be useful,
< but WITHOUT ANY WARRANTY; without even the implied warranty of
< MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
< GNU General Public License for more details.
<
< You should have received a copy of the GNU General Public License
< along with this program; if not, write to the Free Software
< Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
]] ?>
<?vlc
--package.loaded.httprequests = nil --uncomment to debug changes
local httprequests = require "httprequests"
httprequests.processcommands()
httprequests.printTableAsJson(httprequests.playlisttable())
?>

View File

@ -0,0 +1,91 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<?vlc --[[
vim:syntax=lua
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
< playlist.xml: VLC media player web interface
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
< Copyright (C) 2005-2006 the VideoLAN team
<
< Authors: Antoine Cellerier <dionoea -at- videolan -dot- org>
< Authors: Rob Jonson <rob -at- hobbyistsoftware -dot- com>
<
< This program is free software; you can redistribute it and/or modify
< it under the terms of the GNU General Public License as published by
< the Free Software Foundation; either version 2 of the License, or
< (at your option) any later version.
<
< This program is distributed in the hope that it will be useful,
< but WITHOUT ANY WARRANTY; without even the implied warranty of
< MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
< GNU General Public License for more details.
<
< You should have received a copy of the GNU General Public License
< along with this program; if not, write to the Free Software
< Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
]] ?>
<?vlc
--package.loaded.httprequests = nil --uncomment to debug changes
local httprequests = require "httprequests"
local printleaf = function(item)
print ("\n<leaf")
for k,v in pairs(item) do
if (k~="type") then
print(" "..httprequests.xmlString(k).."=\""..httprequests.xmlString(v).."\"")
end
end
print ("/>")
end
local printnode = function(item)
local children=NULL
print ("\n<node")
for k,v in pairs(item) do
if (k=="type") then
elseif (k=="children") then
children=v._array
else
print(" "..httprequests.xmlString(k).."=\""..httprequests.xmlString(v).."\"")
end
end
print (">")
return children
end
printitem = function(item)
local children=NULL
if item.type=="node" then
children=printnode(item)
if (children) then
for i,v in ipairs(children) do
printitem(v)
end
end
print ("</node>")
else
printleaf(item)
end
end
httprequests.processcommands()
local pt=httprequests.playlisttable()
printitem(pt)
?>

View File

@ -0,0 +1,86 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<?vlc --[[
vim:syntax=lua
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
< playlist.xml: VLC media player web interface
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
< Copyright (C) 2005-2006 the VideoLAN team
<
< Authors: Antoine Cellerier <dionoea -at- videolan -dot- org>
<
< This program is free software; you can redistribute it and/or modify
< it under the terms of the GNU General Public License as published by
< the Free Software Foundation; either version 2 of the License, or
< (at your option) any later version.
<
< This program is distributed in the hope that it will be useful,
< but WITHOUT ANY WARRANTY; without even the implied warranty of
< MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
< GNU General Public License for more details.
<
< You should have received a copy of the GNU General Public License
< along with this program; if not, write to the Free Software
< Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
]] ?>
<root>
<?vlc
--[[
function a(t,pre)
local pre = pre or ""
for k,v in pairs(t) do
vlc.msg.err(pre..tostring(k).." : "..tostring(v))
if type(v) == "table" then
a(v,pre.." ")
end
end
end
--]]
function print_playlist(item)
if item.flags.disabled then return end
if(item.children) then
local name = vlc.strings.convert_xml_special_chars(item.name or "")
name = name or ""
if(name ~= "Undefined") then
print('<item id="plid_' ..tostring(item.id).. '" name="' ..tostring(name).. '" ro="' ..(item.flags.ro and "ro" or "rw").. '"><content><name>' ..name.. '</name></content>')
for _, child in ipairs(item.children) do
print_playlist(child)
end
print('</item>')
else
for _, child in ipairs(item.children) do
print_playlist(child)
end
end
else
local name, path = vlc.strings.convert_xml_special_chars(item.name or "", item.path or "")
name = name or ""
local current_item_id = vlc.playlist.current()
local current = ""
-- Is the item the one currently played
if(current_item_id ~= nil) then
if(current_item_id == item.id) then
current = 'current="current"'
end
end
print('<item id="plid_' ..tostring(item.id).. '" uri="' ..tostring(path).. '" name="' ..name.. '" ro="' ..(item.flags.ro and "ro" or "rw").. '" duration ="' ..math.floor(item.duration).. '" ' ..current.. ' ><content><name>' ..name.. '</name></content></item>')
end
end
local p
if _GET["search"] then
if _GET["search"] ~= "" then
_G.search_key = _GET["search"]
else
_G.search_key = nil
end
local key = vlc.strings.decode_uri(_GET["search"])
p = vlc.playlist.search(key)
else
p = vlc.playlist.get()
end
--a(p) --Uncomment to debug
print_playlist(p)
?>
</root>

View File

@ -0,0 +1,37 @@
<?vlc --[[
vim:syntax=lua
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
< status.xml: VLC media player web interface
< this should mirror the content and function of status.json
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
< Copyright (C) 2005-2009 the VideoLAN team
<
< Authors: Rob Jonson <rob -at- hobbyistsoftware -dot- com>
<
< This program is free software; you can redistribute it and/or modify
< it under the terms of the GNU General Public License as published by
< the Free Software Foundation; either version 2 of the License, or
< (at your option) any later version.
<
< This program is distributed in the hope that it will be useful,
< but WITHOUT ANY WARRANTY; without even the implied warranty of
< MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
< GNU General Public License for more details.
<
< You should have received a copy of the GNU General Public License
< along with this program; if not, write to the Free Software
< Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
]]?>
<?vlc
--package.loaded.httprequests = nil --uncomment to debug changes
local httprequests = require "httprequests"
httprequests.processcommands()
local statusTable=httprequests.getstatus(true)
httprequests.printTableAsJson(statusTable)
?>

View File

@ -0,0 +1,81 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<?vlc --[[
vim:syntax=lua
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
< status.xml: VLC media player web interface
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
< Copyright (C) 2005-2009 the VideoLAN team
<
< Authors: Antoine Cellerier <dionoea -at- videolan -dot- org>
< Rob Jonson <rob -at- hobbyistsoftware -dot- com>
<
< This program is free software; you can redistribute it and/or modify
< it under the terms of the GNU General Public License as published by
< the Free Software Foundation; either version 2 of the License, or
< (at your option) any later version.
<
< This program is distributed in the hope that it will be useful,
< but WITHOUT ANY WARRANTY; without even the implied warranty of
< MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
< GNU General Public License for more details.
<
< You should have received a copy of the GNU General Public License
< along with this program; if not, write to the Free Software
< Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
]]?>
<?vlc
--package.loaded.httprequests = nil --uncomment to debug changes
local httprequests = require "httprequests"
httprequests.processcommands()
local statusTable=httprequests.getstatus(false)
print('<root>\n')
httprequests.printTableAsXml(statusTable,0)
local item = vlc.input.item()
--data in the information section is presented in a non-standard way to keep compatibility.
?>
<information>
<category name="meta">
<?vlc
if item then
local metas = item:metas()
for k,v in pairs(metas) do
local metadataContent = vlc.strings.convert_xml_special_chars( httprequests.xmlString(v) )
print("<info name='"..httprequests.xmlString(k).."'>"..metadataContent.."</info>")
end
end
?>
</category>
<?vlc
if item then
local info = item:info()
for k, v in pairs(info) do
print("<category name='"..httprequests.xmlString(k).."'>")
for k2, v2 in pairs(v) do
print("<info name='"..httprequests.xmlString(k2).."'>"..httprequests.xmlString(v2).."</info>")
end
print("</category>")
end
end
?>
</information>
<stats>
<?vlc
if item then
local stats = item:stats()
for k,v in pairs(stats) do
local tag = string.gsub(k,"_","")
print("<"..httprequests.xmlString(tag)..">"..httprequests.xmlString(v).."</"..httprequests.xmlString(tag)..">\n")
end
end
?>
</stats>
</root>

View File

@ -0,0 +1,149 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<?vlc --[[
vim:syntax=lua
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
< vlm.xml: VLC media player web interface
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
< Copyright (C) 2005-2006 the VideoLAN team
<
< Authors: Antoine Cellerier <dionoea -at- videolan -dot- org>
<
< This program is free software; you can redistribute it and/or modify
< it under the terms of the GNU General Public License as published by
< the Free Software Foundation; either version 2 of the License, or
< (at your option) any later version.
<
< This program is distributed in the hope that it will be useful,
< but WITHOUT ANY WARRANTY; without even the implied warranty of
< MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
< GNU General Public License for more details.
<
< You should have received a copy of the GNU General Public License
< along with this program; if not, write to the Free Software
< Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
]]
local function insert_children(c,t)
if c.children then
for _, d in ipairs(c.children) do
table.insert(t,d.value or d.name)
end
end
end
local function print_table(name,t)
print("<"..name.."s>")
if #t ~= 0 then
for _,v in ipairs(t) do
print("<"..name..">")
print(vlc.strings.convert_xml_special_chars(v))
print("</"..name..">")
end
end
print("</"..name.."s>")
end
local function print_media(m)
local name = m.name
local type_, enabled, output
local loop = ""
local inputs = {}
local options = {}
local instances = {}
for _,c in ipairs(m.children) do
if c.name=="type" then
type_ = c.value
elseif c.name=="enabled" then
enabled = c.value
elseif c.name=="loop" then
loop = c.value
elseif c.name=="output" then
output = c.value
elseif c.name=="inputs" then
insert_children(c,inputs)
elseif c.name=="options" then
insert_children(c,options)
elseif c.name=="instances" then
if c.children then
for _, d in ipairs(c.children) do
local instance = "<instance "
for _,e in ipairs(d.children) do
instance = instance .. vlc.strings.convert_xml_special_chars(e.name) .. "=\"" .. vlc.strings.convert_xml_special_chars(e.value) .. "\" "
end
instance = instance .. "/>"
table.insert(instances,instance)
end
end
end
end
print("<"..type_.." name=\""..vlc.strings.convert_xml_special_chars(name).."\" enabled=\""..vlc.strings.convert_xml_special_chars(enabled).."\" loop=\""..vlc.strings.convert_xml_special_chars(loop).."\">\n")
print("<output>"..vlc.strings.convert_xml_special_chars(output).."</output>\n")
print_table("input",inputs)
print_table("option",options)
print "<instances>\n"
if #instances ~= 0 then
print(table.concat(instances))
end
print "</instances>\n"
print("</"..type_..">\n")
end
local function print_schedule(m)
local name = m.name
local enabled, date, period, repeat_ = "", "", "", ""
local commands = {}
for _,c in ipairs(m.children) do
if c.name=="enabled" then
enabled = c.value
elseif c.name=="date" then
date = c.value
elseif c.name=="period" then
period = c.value
elseif c.name=="repeat" then
repeat_ = c.value
elseif c.name=="commands" then
insert_children(c,commands)
end
end
print("<schedule name=\""..vlc.strings.convert_xml_special_chars(name).."\" enabled=\""..vlc.strings.convert_xml_special_chars(enabled).."\" period=\""..vlc.strings.convert_xml_special_chars(period).."\" repeat=\""..vlc.strings.convert_xml_special_chars(repeat_).."\">\n")
print_table("command",commands)
print("</schedule>\n")
end
local function print_xml(m)
print "<vlm>"
if m then
for _, c in ipairs(m.children) do
if c.name=="media" and c.children then
for _, d in ipairs(c.children) do
print_media(d)
end
elseif c.name=="schedule" and c.children then
for _, d in ipairs(c.children) do
print_schedule(d)
end
end
end
else
print "oops"
end
print "</vlm>"
end
local function print_msg(m)
if not m then return end
print("<"..m.name..">\n")
if m.children then
for _, child in ipairs(m.children) do
print_msg(child)
end
elseif m.value then
print(m.value)
end
print("</"..m.name..">\n")
end
local msg = vlm:execute_command("show")
print_xml(msg)
--print_msg(msg)
?>

View File

@ -0,0 +1,35 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<?vlc --[[
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
< vlm_cmd.xml: VLC media player web interface
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
< Copyright (C) 2005-2006 the VideoLAN team
<
< Authors: Antoine Cellerier <dionoea -at- videolan -dot- org>
<
< This program is free software; you can redistribute it and/or modify
< it under the terms of the GNU General Public License as published by
< the Free Software Foundation; either version 2 of the License, or
< (at your option) any later version.
<
< This program is distributed in the hope that it will be useful,
< but WITHOUT ANY WARRANTY; without even the implied warranty of
< MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
< GNU General Public License for more details.
<
< You should have received a copy of the GNU General Public License
< along with this program; if not, write to the Free Software
< Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
]]?>
<vlm><error><?vlc
if _GET["command"] then
local msg = vlm:execute_command(_GET["command"])
if msg.value then
print(msg.name,":",vlc.strings.convert_xml_special_chars(msg.value))
end
else
?>No command<?vlc
end
?></error>
</vlm>

View File

@ -0,0 +1,82 @@
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
< view.html: VLC media player web interface - VLM
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
< Copyright (C) 2005-2014 VLC authors and VideoLAN
<
< Authors: Brandon Brooks <bwbrooks -at- archmageinc -dot- com>
<
< This program is free software; you can redistribute it and/or modify
< it under the terms of the GNU General Public License as published by
< the Free Software Foundation; either version 2 of the License, or
< (at your option) any later version.
<
< This program is distributed in the hope that it will be useful,
< but WITHOUT ANY WARRANTY; without even the implied warranty of
< MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
< GNU General Public License for more details.
<
< You should have received a copy of the GNU General Public License
< along with this program; if not, write to the Free Software
< Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title><?vlc gettext("VLC media player - Flash Viewer") ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="referrer" content="no-referrer" />
<link href="favicon.ico" type="image/x-icon" rel="shortcut icon"/>
<link type="text/css" href="css/ui-lightness/jquery-ui-1.8.13.custom.css" rel="stylesheet" />
<link type="text/css" href="css/main.css" rel="stylesheet" />
<script type="text/javascript" src="js/common.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.13/jquery-ui.min.js"></script>
<script type="text/javascript" src="https://releases.flowplayer.org/js/flowplayer-3.2.6.min.js"></script>
<script type="text/javascript">
//<![CDATA[
$(function(){
$('#window_stream').resizable({
minHeight: 300,
minWidth: 400,
resize:function(event,ui){
$('#player').css({
'width':ui.size.width-80,
'height':ui.size.height-100
})
}
});
$('#button_stream_config').click(function(){
$('#window_stream_config').dialog('open');
});
$('#player').empty();
$('#player').attr('href',$('#stream_protocol').val()+'://'+$('#stream_host').val()+':'+$('#stream_port').val()+'/'+$('#stream_file').val());
flowplayer("player", "https://releases.flowplayer.org/swf/flowplayer-3.2.7.swf");
});
//]]>
</script>
<style>
#window_stream { width: 800px; height: 600px; padding: 0.5em; }
#window_stream h3 { text-align: left; margin: 0; font-weight: normal; font-size: 12px }
</style>
</head>
<body>
<div id="window_stream" class="ui-widget-content">
<h3 class="ui-widget-header"><?vlc gettext("Streaming Output") ?></h3>
<div class="ui-widget-content">
<div id="button_stream_config" class="button icon ui-widget ui-state-default" title="<?vlc gettext("Configure") ?>" opendialog="window_stream_config"><span class="ui-icon ui-icon-wrench"></span></div>
<div align="center">
<div href="http://localhost:8081/stream.flv" style="display:block;width:720px;height:500px" id="player"></div>
</div>
<div>&nbsp;</div>
</div>
<div class="footer">
<?vlc print(vlc.misc.version() .. " - Lua Web Interface - " .. vlc.misc.copyright()) ?>
</div>
</div>
<?vlc
dialogs("stream_config_window.html");
?>
</body>
</html>

View File

@ -0,0 +1,47 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
< vlm.html: VLC media player web interface - VLM
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
< Copyright (C) 2005-2014 VLC authors and VideoLAN
<
< Authors: Antoine Cellerier <dionoea -at- videolan -dot- org>
<
< This program is free software; you can redistribute it and/or modify
< it under the terms of the GNU General Public License as published by
< the Free Software Foundation; either version 2 of the License, or
< (at your option) any later version.
<
< This program is distributed in the hope that it will be useful,
< but WITHOUT ANY WARRANTY; without even the implied warranty of
< MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
< GNU General Public License for more details.
<
< You should have received a copy of the GNU General Public License
< along with this program; if not, write to the Free Software
< Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>VLC media player - Web Interface - VLM</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="referrer" content="no-referrer" />
<link href="old/style.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="old/js/functions.js"></script>
<script type="text/javascript" src="old/js/vlm.js"></script>
</head>
<body onload="vlm_get_elements();">
<?vlc
current_page = "vlm"
dialogs("old/browse","old/input","old/sout","old/vlm","old/footer")
?>
</body>
</html>

View File

@ -0,0 +1,12 @@
## <pre>
##
## <a href="vlm.html">VLM HTTP interface</a>
## This file can be loaded as is in VLM.
## Comments starting with "##" were added by the HTTP interface.
## You can remove them if you want to.
##
<?vlc print(vlc.vlm.execute_command(vlm,"export").value) ?>
##
## end of export
## </pre>

Some files were not shown because too many files have changed in this diff Show More