aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.MediaEncoding
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2015-01-10 14:42:14 -0500
committerLuke Pulverenti <luke.pulverenti@gmail.com>2015-01-10 14:42:14 -0500
commit5ff5df98678be11c11e93f80a44aeafe527999a1 (patch)
treedd3476802af6b62cea07a413eef3d61e21f2acba /MediaBrowser.MediaEncoding
parente97848289600570b489b6fdb608014b383772523 (diff)
added UniversalDetector.dll
Diffstat (limited to 'MediaBrowser.MediaEncoding')
-rw-r--r--MediaBrowser.MediaEncoding/Encoder/BaseEncoder.cs2
-rw-r--r--MediaBrowser.MediaEncoding/MediaBrowser.MediaEncoding.csproj3
-rw-r--r--MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs43
3 files changed, 46 insertions, 2 deletions
diff --git a/MediaBrowser.MediaEncoding/Encoder/BaseEncoder.cs b/MediaBrowser.MediaEncoding/Encoder/BaseEncoder.cs
index 3c30d7cd8..efe2a89e3 100644
--- a/MediaBrowser.MediaEncoding/Encoder/BaseEncoder.cs
+++ b/MediaBrowser.MediaEncoding/Encoder/BaseEncoder.cs
@@ -467,7 +467,7 @@ namespace MediaBrowser.MediaEncoding.Encoder
{
if (job.SubtitleStream.IsExternal && !job.SubtitleStream.IsTextSubtitleStream)
{
- arg += " -i " + job.SubtitleStream.Path;
+ arg += " -i \"" + job.SubtitleStream.Path + "\"";
}
}
diff --git a/MediaBrowser.MediaEncoding/MediaBrowser.MediaEncoding.csproj b/MediaBrowser.MediaEncoding/MediaBrowser.MediaEncoding.csproj
index 38d8fa138..72dc0feac 100644
--- a/MediaBrowser.MediaEncoding/MediaBrowser.MediaEncoding.csproj
+++ b/MediaBrowser.MediaEncoding/MediaBrowser.MediaEncoding.csproj
@@ -50,6 +50,9 @@
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
+ <Reference Include="UniversalDetector">
+ <HintPath>..\ThirdParty\UniversalDetector\UniversalDetector.dll</HintPath>
+ </Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="..\SharedVersion.cs">
diff --git a/MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs b/MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs
index 67c9123f5..3b8663b61 100644
--- a/MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs
+++ b/MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs
@@ -17,6 +17,7 @@ using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
+using UniversalDetector;
namespace MediaBrowser.MediaEncoding.Subtitles
{
@@ -611,7 +612,7 @@ namespace MediaBrowser.MediaEncoding.Subtitles
}
catch (FileNotFoundException)
{
-
+
}
catch (DirectoryNotFoundException)
{
@@ -699,6 +700,18 @@ namespace MediaBrowser.MediaEncoding.Subtitles
/// <returns>System.String.</returns>
public string GetSubtitleFileCharacterSet(string path, string language)
{
+ var charset = DetectCharset(path);
+
+ if (!string.IsNullOrWhiteSpace(charset))
+ {
+ if (string.Equals(charset, "utf-8", StringComparison.OrdinalIgnoreCase))
+ {
+ //return null;
+ }
+
+ //return charset;
+ }
+
if (GetFileEncoding(path).Equals(Encoding.UTF8))
{
return string.Empty;
@@ -743,6 +756,34 @@ namespace MediaBrowser.MediaEncoding.Subtitles
}
}
+ private string DetectCharset(string path)
+ {
+ try
+ {
+ using (var file = new FileStream(path, FileMode.Open))
+ {
+ var detector = new CharsetDetector();
+ detector.Feed(file);
+ detector.DataEnd();
+
+ var charset = detector.Charset;
+
+ if (!string.IsNullOrWhiteSpace(charset))
+ {
+ _logger.Info("UniversalDetector detected charset {0} for {1}", charset, path);
+ }
+
+ return charset;
+ }
+ }
+ catch (IOException ex)
+ {
+ _logger.ErrorException("Error attempting to determine subtitle charset from {0}", ex, path);
+ }
+
+ return null;
+ }
+
private static Encoding GetFileEncoding(string srcFile)
{
// *** Detect byte order mark if any - otherwise assume default