Skip to content

已知问题 (Known Issue)

sjtuross edited this page Jan 8, 2025 · 11 revisions
  1. 通过Emby即非本插件刷新元数据,会导致Strm已有的视频信息丢失,片头片尾标记失效。这属于Emby的已知问题或设计如此,以下帖子均反馈过此问题。如果扫库后已有视频信息丢失,建议关闭元数据保存NFO选项。 启用插件的独占模式可避免媒体信息,视频截图以及片头片尾标记丢失。

image

  1. 所有魔改功能暂不支持ARM平台,等待上游魔改平台支持 https://github.com/MonoMod/MonoMod/issues/90

  2. 魔改可能在某些定制的Linux系统上失败,比如群晖套件版,以下是错误日志,Docker版无此问题。因群晖系统限制,每次重启后须运行sudo mount -o remount,exec /tmp后插件的魔改功能才能启用,具体看 https://github.com/sjtuross/StrmAssistant/issues/6https://imnks.com/11166.html 尝试解决。

2024-09-12 23:56:04.908 Debug Strm Assistant: Patch FFmpeg ResourcePool Failed by Harmony
2024-09-12 23:56:04.908 Debug Strm Assistant: /tmp/mm-exhelper.so.WV5XqM.so: cannot open shared object file: No such file or directory
2024-09-12 23:56:04.908 Debug Strm Assistant:    at HarmonyLib.PatchFunctions.UpdateWrapper(MethodBase original, PatchInfo patchInfo)
   at HarmonyLib.PatchProcessor.Patch()
   at HarmonyLib.Harmony.Patch(MethodBase original, HarmonyMethod prefix, HarmonyMethod postfix, HarmonyMethod transpiler, HarmonyMethod finalizer)
   at StrmAssistant.EnableImageCapture.PatchResourcePool()
  1. 某些封装不规范,或者编码特殊,或者损坏的视频,Emby的ffprobe无法提取媒体信息,这会导致计划任务重复处理。

  2. 在某些CPU平台运行时,线程数过高会导致Emby重启。开发时偶遇以下异常,可能有关。从Stack Trace来看,异常是由InfuseSync插件导致的。经网友确认卸载InfuseSync之后问题消失。估计InfuseSync插件的代码存在线程安全的问题。自从Infuse支持直连模式后,其实这个插件没什么用了。另外一种可能是内存太小,有网友在1GB内存系统中遇到此问题,增加到2GB问题消失。

System.AccessViolationException
  HResult=0x80004003
  Message=Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
  Source=<Cannot evaluate the exception source>
  StackTrace:
<Cannot evaluate the exception stack trace>
 	[Managed to Native Transition]	
>	EmbyServer.dll!SQLitePCLEx.SQLite3Provider_sqlite3.SQLitePCLEx.ISQLite3Provider.sqlite3_prepare_v2(SQLitePCLEx.sqlite3 db, System.ReadOnlySpan<byte> sql, out System.IntPtr stm, out System.ReadOnlySpan<byte> tail) Line 689	C#
 	SQLitePCLRawEx.core.dll!SQLitePCLEx.raw.sqlite3_prepare_v2(SQLitePCLEx.sqlite3 db, System.ReadOnlySpan<byte> sql, out SQLitePCLEx.sqlite3_stmt stmt, out System.ReadOnlySpan<byte> tail)	Unknown
 	SQLitePCLRawEx.core.dll!SQLitePCLEx.raw.sqlite3_prepare_v2(SQLitePCLEx.sqlite3 db, string sql, out SQLitePCLEx.sqlite3_stmt stmt, out System.ReadOnlySpan<byte> sp_tail)	Unknown
 	SQLitePCL.pretty.dll!SQLitePCL.pretty.SQLiteDatabaseConnection.PrepareStatement(string sql, out System.ReadOnlySpan<byte> tail)	Unknown
 	SQLitePCL.pretty.dll!SQLitePCL.pretty.DatabaseConnection.PrepareStatement(SQLitePCL.pretty.IDatabaseConnection This, string sql)	Unknown
 	InfuseSync!InfuseSync.Storage.Db.HasCheckpoints()	Unknown
 	InfuseSync!InfuseSync.EntryPoints.LibrarySyncManager.ItemUpdated(object sender, MediaBrowser.Controller.Library.ItemChangeEventArgs e)	Unknown
 	Emby.Server.Implementations.dll!Emby.Server.Implementations.Library.LibraryManager.UpdateItems(System.Collections.Generic.List<MediaBrowser.Controller.Entities.BaseItem> items, MediaBrowser.Controller.Entities.BaseItem parent, MediaBrowser.Controller.Library.ItemUpdateType updateReason, bool setDateLastSaved, bool saveMetadata, MediaBrowser.Controller.Providers.MetadataRefreshOptions metadataRefreshOptions, System.Threading.CancellationToken cancellationToken)	Unknown
 	Emby.Server.Implementations.dll!Emby.Server.Implementations.Library.LibraryManager.UpdateItem(MediaBrowser.Controller.Entities.BaseItem item, MediaBrowser.Controller.Entities.BaseItem parent, MediaBrowser.Controller.Library.ItemUpdateType updateReason, MediaBrowser.Controller.Providers.MetadataRefreshOptions metadataRefreshOptions)	Unknown
 	MediaBrowser.Controller.dll!MediaBrowser.Controller.Entities.BaseItem.UpdateToRepository(MediaBrowser.Controller.Library.ItemUpdateType updateReason, MediaBrowser.Controller.Entities.BaseItem parent, MediaBrowser.Controller.Providers.MetadataRefreshOptions metadataRefreshOptions)	Unknown
 	MediaBrowser.Controller.dll!MediaBrowser.Controller.Entities.BaseItem.UpdateToRepository(MediaBrowser.Controller.Library.ItemUpdateType updateReason, MediaBrowser.Controller.Providers.MetadataRefreshOptions metadataRefreshOptions)	Unknown
 	Emby.Providers.dll!Emby.Providers.Manager.MetadataService<MediaBrowser.Controller.Entities.TV.Episode, MediaBrowser.Controller.Providers.EpisodeInfo>.SaveItem(MediaBrowser.Controller.Providers.MetadataResult<MediaBrowser.Controller.Entities.TV.Episode> result, bool isFirstRefresh, MediaBrowser.Model.Configuration.LibraryOptions libraryOptions, MediaBrowser.Controller.Library.ItemUpdateType reason, MediaBrowser.Controller.Providers.IDirectoryService directoryService, MediaBrowser.Controller.Providers.MetadataRefreshOptions metadataRefreshOptions, System.Threading.CancellationToken cancellationToken)	Unknown
 	Emby.Providers.dll!Emby.Providers.Manager.MetadataService<MediaBrowser.Controller.Entities.TV.Episode, MediaBrowser.Controller.Providers.EpisodeInfo>.RefreshMetadata(MediaBrowser.Controller.Entities.BaseItem item, MediaBrowser.Controller.Providers.MetadataRefreshOptions refreshOptions, MediaBrowser.Controller.Entities.BaseItem[] collectionFolders, MediaBrowser.Model.Configuration.LibraryOptions libraryOptions, System.Threading.CancellationToken cancellationToken)	Unknown
 	[Resuming Async Method]	
 	System.Private.CoreLib.dll!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state)	Unknown
 	System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<MediaBrowser.Controller.Library.ItemUpdateType>.AsyncStateMachineBox<Emby.Providers.Manager.MetadataService<MediaBrowser.Controller.Entities.TV.Episode, MediaBrowser.Controller.Providers.EpisodeInfo>.<RefreshMetadata>d__10>.MoveNext(System.Threading.Thread threadPoolThread)	Unknown
 	System.Private.CoreLib.dll!System.Runtime.CompilerServices.TaskAwaiter.OutputWaitEtwEvents.AnonymousMethod__12_0(System.Action innerContinuation, System.Threading.Tasks.Task innerTask)	Unknown
 	System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncMethodBuilderCore.ContinuationWrapper.Invoke()	Unknown
 	System.Private.CoreLib.dll!System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(System.Action action, bool allowInlining)	Unknown
 	System.Private.CoreLib.dll!System.Threading.Tasks.Task.RunContinuations(object continuationObject)	Unknown
 	System.Private.CoreLib.dll!System.Threading.Tasks.Task.FinishContinuations()	Unknown
 	System.Private.CoreLib.dll!System.Threading.Tasks.Task<System.__Canon>.TrySetResult(System.__Canon result)	Unknown
 	System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.__Canon>.SetExistingTaskResult(System.Threading.Tasks.Task<System.__Canon> task, System.__Canon result)	Unknown
 	System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<Emby.Providers.Manager.RefreshResult>.SetResult(Emby.Providers.Manager.RefreshResult result)	Unknown
 	[Completed] Emby.Providers.dll!Emby.Providers.Manager.MetadataService<MediaBrowser.Controller.Entities.TV.Episode, MediaBrowser.Controller.Providers.EpisodeInfo>.RefreshWithProviders(MediaBrowser.Controller.Providers.MetadataResult<MediaBrowser.Controller.Entities.TV.Episode> metadata, MediaBrowser.Controller.Providers.EpisodeInfo id, MediaBrowser.Controller.Providers.MetadataRefreshMode metadataRefreshMode, bool replaceAllMetadata, MediaBrowser.Controller.Providers.MetadataRefreshOptions options, MediaBrowser.Controller.Entities.BaseItem[] collectionFolders, MediaBrowser.Model.Configuration.LibraryOptions libraryOptions, System.Collections.Generic.List<MediaBrowser.Controller.Providers.IMetadataProvider> providers, Emby.Providers.Manager.ItemImageProvider imageService, System.Threading.CancellationToken cancellationToken)	Unknown
 	System.Private.CoreLib.dll!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state)	Unknown
 	System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<Emby.Providers.Manager.RefreshResult>.AsyncStateMachineBox<Emby.Providers.Manager.MetadataService<MediaBrowser.Controller.Entities.TV.Episode, MediaBrowser.Controller.Providers.EpisodeInfo>.<RefreshWithProviders>d__42>.MoveNext(System.Threading.Thread threadPoolThread)	Unknown
 	System.Private.CoreLib.dll!System.Runtime.CompilerServices.TaskAwaiter.OutputWaitEtwEvents.AnonymousMethod__12_0(System.Action innerContinuation, System.Threading.Tasks.Task innerTask)	Unknown
 	System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncMethodBuilderCore.ContinuationWrapper.Invoke()	Unknown
 	System.Private.CoreLib.dll!System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(System.Action action, bool allowInlining)	Unknown
 	System.Private.CoreLib.dll!System.Threading.Tasks.Task.RunContinuations(object continuationObject)	Unknown
 	System.Private.CoreLib.dll!System.Threading.Tasks.Task.FinishContinuations()	Unknown
 	System.Private.CoreLib.dll!System.Threading.Tasks.Task<System.__Canon>.TrySetResult(System.__Canon result)	Unknown
 	System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.__Canon>.SetExistingTaskResult(System.Threading.Tasks.Task<System.__Canon> task, System.__Canon result)	Unknown
 	System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<Emby.Providers.Manager.RefreshResult>.SetResult(Emby.Providers.Manager.RefreshResult result)	Unknown
 	[Completed] Emby.Providers.dll!Emby.Providers.Manager.MetadataService<MediaBrowser.Controller.Entities.TV.Episode, MediaBrowser.Controller.Providers.EpisodeInfo>.ExecuteRemoteProviders(MediaBrowser.Controller.Providers.MetadataResult<MediaBrowser.Controller.Entities.TV.Episode> temp, MediaBrowser.Model.Configuration.LibraryOptions libraryOptions, string logName, MediaBrowser.Controller.Providers.EpisodeInfo id, MediaBrowser.Controller.Providers.IRemoteMetadataProvider<MediaBrowser.Controller.Entities.TV.Episode, MediaBrowser.Controller.Providers.EpisodeInfo>[] providers, MediaBrowser.Controller.Providers.MetadataRefreshOptions options, System.Threading.CancellationToken cancellationToken)	Unknown
 	System.Private.CoreLib.dll!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state)	Unknown
 	System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<Emby.Providers.Manager.RefreshResult>.AsyncStateMachineBox<Emby.Providers.Manager.MetadataService<MediaBrowser.Controller.Entities.TV.Episode, MediaBrowser.Controller.Providers.EpisodeInfo>.<ExecuteRemoteProviders>d__45>.MoveNext(System.Threading.Thread threadPoolThread)	Unknown
 	System.Private.CoreLib.dll!System.Runtime.CompilerServices.TaskAwaiter.OutputWaitEtwEvents.AnonymousMethod__12_0(System.Action innerContinuation, System.Threading.Tasks.Task innerTask)	Unknown
 	System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncMethodBuilderCore.ContinuationWrapper.Invoke()	Unknown
 	System.Private.CoreLib.dll!System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(System.Action action, bool allowInlining)	Unknown
 	System.Private.CoreLib.dll!System.Threading.Tasks.Task.RunContinuations(object continuationObject)	Unknown
 	System.Private.CoreLib.dll!System.Threading.Tasks.Task.FinishContinuations()	Unknown
 	System.Private.CoreLib.dll!System.Threading.Tasks.Task<System.__Canon>.TrySetResult(System.__Canon result)	Unknown
 	MovieDb!MovieDb.MovieDbEpisodeProvider.GetMetadata(MediaBrowser.Controller.Providers.RemoteMetadataFetchOptions<MediaBrowser.Controller.Providers.EpisodeInfo> options, System.Threading.CancellationToken cancellationToken)	Unknown
 	[Resuming Async Method]	
 	System.Private.CoreLib.dll!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state)	Unknown
 	System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<MediaBrowser.Controller.Providers.MetadataResult<MediaBrowser.Controller.Entities.TV.Episode>>.AsyncStateMachineBox<MovieDb.MovieDbEpisodeProvider.<GetMetadata>d__4>.MoveNext(System.Threading.Thread threadPoolThread)	Unknown
 	System.Private.CoreLib.dll!System.Runtime.CompilerServices.TaskAwaiter.OutputWaitEtwEvents.AnonymousMethod__12_0(System.Action innerContinuation, System.Threading.Tasks.Task innerTask)	Unknown
 	System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncMethodBuilderCore.ContinuationWrapper.Invoke()	Unknown
 	System.Private.CoreLib.dll!System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(System.Action action, bool allowInlining)	Unknown
 	System.Private.CoreLib.dll!System.Threading.Tasks.Task.RunContinuations(object continuationObject)	Unknown
 	System.Private.CoreLib.dll!System.Threading.Tasks.Task.FinishContinuations()	Unknown
 	System.Private.CoreLib.dll!System.Threading.Tasks.Task<System.__Canon>.TrySetResult(System.__Canon result)	Unknown
 	MovieDb!MovieDb.MovieDbProviderBase.GetEpisodeInfo(string tmdbId, int seasonNumber, int episodeNumber, string language, MediaBrowser.Controller.Providers.IDirectoryService directoryService, System.Threading.CancellationToken cancellationToken)	Unknown
 	[Resuming Async Method]	
 	System.Private.CoreLib.dll!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state)	Unknown
 	System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<MovieDb.MovieDbProviderBase.RootObject>.AsyncStateMachineBox<MovieDb.MovieDbProviderBase.<GetEpisodeInfo>d__21>.MoveNext(System.Threading.Thread threadPoolThread)	Unknown
 	System.Private.CoreLib.dll!System.Runtime.CompilerServices.TaskAwaiter.OutputWaitEtwEvents.AnonymousMethod__12_0(System.Action innerContinuation, System.Threading.Tasks.Task innerTask)	Unknown
 	System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncMethodBuilderCore.ContinuationWrapper.Invoke()	Unknown
 	System.Private.CoreLib.dll!System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(System.Action action, bool allowInlining)	Unknown
 	System.Private.CoreLib.dll!System.Threading.Tasks.Task.RunContinuations(object continuationObject)	Unknown
 	System.Private.CoreLib.dll!System.Threading.Tasks.Task.FinishContinuations()	Unknown
 	System.Private.CoreLib.dll!System.Threading.Tasks.Task<System.__Canon>.TrySetResult(System.__Canon result)	Unknown
 	System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.__Canon>.SetExistingTaskResult(System.Threading.Tasks.Task<System.__Canon> task, System.__Canon result)	Unknown
 	System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<MovieDb.MovieDbProviderBase.RootObject>.SetResult(MovieDb.MovieDbProviderBase.RootObject result)	Unknown
 	[Completed] Emby.Server.Implementations.dll!Emby.Common.Implementations.Serialization.JsonSerializer.DeserializeFromFileAsync<MovieDb.MovieDbProviderBase.RootObject>(string file)	Unknown
 	System.Private.CoreLib.dll!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state)	Unknown
 	System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<MovieDb.MovieDbProviderBase.RootObject>.AsyncStateMachineBox<Emby.Common.Implementations.Serialization.JsonSerializer.<DeserializeFromFileAsync>d__9<MovieDb.MovieDbProviderBase.RootObject>>.MoveNext(System.Threading.Thread threadPoolThread)	Unknown
 	System.Private.CoreLib.dll!System.Runtime.CompilerServices.TaskAwaiter.OutputWaitEtwEvents.AnonymousMethod__12_0(System.Action innerContinuation, System.Threading.Tasks.Task innerTask)	Unknown
 	System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncMethodBuilderCore.ContinuationWrapper.Invoke()	Unknown
 	System.Private.CoreLib.dll!System.Threading.Tasks.AwaitTaskContinuation.System.Threading.IThreadPoolWorkItem.Execute()	Unknown
 	System.Private.CoreLib.dll!System.Threading.ThreadPoolWorkQueue.Dispatch()	Unknown
 	System.Private.CoreLib.dll!System.Threading.PortableThreadPool.WorkerThread.WorkerThreadStart()	Unknown
 	System.Private.CoreLib.dll!System.Threading.Thread.StartCallback()	Unknown
 	[Async Call Stack]	
 	[Async] MediaBrowser.Controller.dll!MediaBrowser.Controller.Entities.BaseItem.RefreshMetadata(MediaBrowser.Controller.Providers.MetadataRefreshOptions options, MediaBrowser.Controller.Entities.BaseItem[] collectionFolders, MediaBrowser.Model.Configuration.LibraryOptions libraryOptions, System.Threading.CancellationToken cancellationToken)	Unknown
 	[Async] StrmAssistant!StrmAssistant.QueueManager.MediaInfoExtract_ProcessItemQueueAsync.AnonymousMethod__1()	Unknown
 	[Async] StrmAssistant!StrmAssistant.QueueManager.MediaInfoExtract_ProcessTaskQueueAsync.AnonymousMethod__0()	Unknown
 	[Async] System.Private.CoreLib.dll!System.Threading.Tasks.Task.Run	Unknown
  1. 高效媒体信息提取API,可避免提取媒体信息的同时重复请求元数据。请不要开启以下这个媒体库的高级选项(默认就是不选的)。当Emby没能获取到最新元数据时,作为最后的备选,提取了内嵌视频轨道的标题,即如图A @ Wiki

image

image image

Clone this wiki locally