daPyr0x 0 Posted July 13, 2020 Share Posted July 13, 2020 Hi there, I have Emby installed in a docker. It works for playing back movies and TV without issue, transcoding or otherwise. When I try to listen to music, however, I get an error that states "No compatible streams found." Reviewing the log I see two ffmpeg errors both stating "Too many levels of symbolic links" when trying to open/read the file. The music files themselves are accessed through the same folder structure as TV/Movies, all of which work fine. My googling has not been very fruitful on this error so I'm unsure where to go to next, any ideas? Excerpt from log file below. 2020-07-13 22:26:01.267 Error FileSystem: Error determining LastAccessTimeUtc for /mnt/share1/Music/The 1975/Notes on a Conditional Form/02 - People.flac *** Error Report *** Version: 4.4.3.0 Command line: /system/EmbyServer.dll -programdata /config -ffdetect /bin/ffdetect -ffmpeg /bin/ffmpeg -ffprobe /bin/ffprobe -restartexitcode 3 Operating system: Unix 4.19.0.9 64-Bit OS: True 64-Bit Process: True User Interactive: True Runtime: file:///system/System.Private.CoreLib.dll System.Environment.Version: 3.1.2 Processor count: 3 Program data path: /config Application directory: /system System.IO.IOException: System.IO.IOException: Too many levels of symbolic links at System.IO.FileStatus.EnsureStatInitialized(ReadOnlySpan`1 path, Boolean continueOnError) at System.IO.FileStatus.GetLastWriteTime(ReadOnlySpan`1 path, Boolean continueOnError) at System.IO.FileSystem.GetLastWriteTime(String fullPath) at System.IO.File.GetLastWriteTimeUtc(String path) at Emby.Server.Implementations.IO.ManagedFileSystem.GetLastWriteTimeUtc(String path, Boolean fileExists) Source: System.IO.FileSystem TargetSite: Void EnsureStatInitialized(System.ReadOnlySpan`1[System.Char], Boolean) 2020-07-13 22:26:01.276 Error HttpServer: Error processing request *** Error Report *** Version: 4.4.3.0 Command line: /system/EmbyServer.dll -programdata /config -ffdetect /bin/ffdetect -ffmpeg /bin/ffmpeg -ffprobe /bin/ffprobe -restartexitcode 3 Operating system: Unix 4.19.0.9 64-Bit OS: True 64-Bit Process: True User Interactive: True Runtime: file:///system/System.Private.CoreLib.dll System.Environment.Version: 3.1.2 Processor count: 3 Program data path: /config Application directory: /system System.IO.IOException: System.IO.IOException: Too many levels of symbolic links at Interop.ThrowExceptionForIoErrno(ErrorInfo errorInfo, String path, Boolean isDirectory, Func`2 errorRewriter) at Microsoft.Win32.SafeHandles.SafeFileHandle.Open(String path, OpenFlags flags, Int32 mode) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) at Emby.Server.Implementations.IO.ManagedFileSystem.GetFileStream(String path, FileOpenMode mode, FileAccessMode access, FileShareMode share, FileOpenOptions fileOpenOptions) at Emby.Server.Implementations.IO.IOManager.GetResponse(HttpRequestOptions options, MediaProtocol protocol) at Emby.Server.Implementations.IO.IOManager.GetResponse(HttpRequestOptions options) at Emby.Server.Implementations.HttpServer.HttpResultFactory.GetContent(StaticFileResultOptions options, Int64 offset, Int64 length, CancellationToken cancellationToken) at Emby.Server.Implementations.HttpServer.FileWriter.SetContentResponseHeaders(Nullable`1 reportedTotalContentLength, CancellationToken cancellationToken) at Emby.Server.Implementations.HttpServer.HttpResultFactory.GetStaticResult(IRequest requestContext, StaticResultOptions options) at Emby.Server.MediaEncoding.Api.Progressive.BaseProgressiveStreamingService.ProcessRequest(StreamRequest request, Boolean isHeadRequest) at Emby.Server.MediaEncoding.Api.UniversalAudioService.GetUniversalStream(GetUniversalAudioStream request, Boolean isHeadRequest, CancellationToken cancellationToken) at Emby.Server.Implementations.Services.ServiceController.GetTaskResult(Task task) at Emby.Server.Implementations.Services.ServiceHandler.ProcessRequestAsync(HttpListenerHost appHost, IRequest httpReq, IResponse httpRes, RestPath restPath, String responseContentType, CancellationToken cancellationToken) at Emby.Server.Implementations.HttpServer.HttpListenerHost.RequestHandler(IRequest httpReq, ReadOnlyMemory`1 urlString, ReadOnlyMemory`1 localPath, CancellationToken cancellationToken) Source: System.Private.CoreLib TargetSite: Void ThrowExceptionForIoErrno(ErrorInfo, System.String, Boolean, System.Func`2[Interop+ErrorInfo,Interop+ErrorInfo]) 2020-07-13 22:26:01.277 Info HttpServer: HTTP Response 500 to 192.168.199.11. Time: 20ms. http://home:8096/emby/Audio/80200/universal?UserId=cde7260e318b4c54b687eed3b173ac04&DeviceId=0ee6da38-6e09-4e5f-ab26-5001d2c7fa43&MaxStreamingBitrate=140000000&Container=opus,mp3|mp3,mp2,mp3|mp2,m4a|aac,flac,webma,webm,wav|PCM_S16LE,ogg&TranscodingContainer=aac&TranscodingProtocol=hls&AudioCodec=aac&PlaySessionId=1594640963570&StartTimeTicks=0&EnableRedirection=true 2020-07-13 22:26:01.285 Info HttpServer: HTTP GET http://home:8096/emby/Audio/80200/universal?UserId=cde7260e318b4c54b687eed3b173ac04&DeviceId=0ee6da38-6e09-4e5f-ab26-5001d2c7fa43&MaxStreamingBitrate=140000000&Container=opus,mp3|mp3,mp2,mp3|mp2,m4a|aac,flac,webma,webm,wav|PCM_S16LE,ogg&TranscodingContainer=aac&TranscodingProtocol=hls&AudioCodec=aac&PlaySessionId=1594640963570&StartTimeTicks=0&EnableRedirection=true. UserAgent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Firefox/78.0 2020-07-13 22:26:01.287 Info MediaInfoService: User policy for omv. EnableAudioPlaybackTranscoding: True 2020-07-13 22:26:01.287 Info MediaInfoService: RemoteClientBitrateLimit: 9000000, RemoteIp: 192.168.199.11, IsInLocalNetwork: True 2020-07-13 22:26:01.287 Info MediaInfoService: RemoteClientBitrateLimit: 9000000, RemoteIp: 192.168.199.11, IsInLocalNetwork: True 2020-07-13 22:26:01.287 Info MediaInfoService: RemoteClientBitrateLimit: 9000000, RemoteIp: 192.168.199.11, IsInLocalNetwork: True 2020-07-13 22:26:01.295 Error FileSystem: Error determining LastAccessTimeUtc for /mnt/share1/Music/The 1975/Notes on a Conditional Form/02 - People.flac *** Error Report *** Version: 4.4.3.0 Command line: /system/EmbyServer.dll -programdata /config -ffdetect /bin/ffdetect -ffmpeg /bin/ffmpeg -ffprobe /bin/ffprobe -restartexitcode 3 Operating system: Unix 4.19.0.9 64-Bit OS: True 64-Bit Process: True User Interactive: True Runtime: file:///system/System.Private.CoreLib.dll System.Environment.Version: 3.1.2 Processor count: 3 Program data path: /config Application directory: /system System.IO.IOException: System.IO.IOException: Too many levels of symbolic links at System.IO.FileStatus.EnsureStatInitialized(ReadOnlySpan`1 path, Boolean continueOnError) at System.IO.FileStatus.GetLastWriteTime(ReadOnlySpan`1 path, Boolean continueOnError) at System.IO.FileSystem.GetLastWriteTime(String fullPath) at System.IO.File.GetLastWriteTimeUtc(String path) at Emby.Server.Implementations.IO.ManagedFileSystem.GetLastWriteTimeUtc(String path, Boolean fileExists) Source: System.IO.FileSystem TargetSite: Void EnsureStatInitialized(System.ReadOnlySpan`1[System.Char], Boolean) 2020-07-13 22:26:01.305 Error HttpServer: Error processing request *** Error Report *** Version: 4.4.3.0 Command line: /system/EmbyServer.dll -programdata /config -ffdetect /bin/ffdetect -ffmpeg /bin/ffmpeg -ffprobe /bin/ffprobe -restartexitcode 3 Operating system: Unix 4.19.0.9 64-Bit OS: True 64-Bit Process: True User Interactive: True Runtime: file:///system/System.Private.CoreLib.dll System.Environment.Version: 3.1.2 Processor count: 3 Program data path: /config Application directory: /system System.IO.IOException: System.IO.IOException: Too many levels of symbolic links at Interop.ThrowExceptionForIoErrno(ErrorInfo errorInfo, String path, Boolean isDirectory, Func`2 errorRewriter) at Microsoft.Win32.SafeHandles.SafeFileHandle.Open(String path, OpenFlags flags, Int32 mode) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) at Emby.Server.Implementations.IO.ManagedFileSystem.GetFileStream(String path, FileOpenMode mode, FileAccessMode access, FileShareMode share, FileOpenOptions fileOpenOptions) at Emby.Server.Implementations.IO.IOManager.GetResponse(HttpRequestOptions options, MediaProtocol protocol) at Emby.Server.Implementations.IO.IOManager.GetResponse(HttpRequestOptions options) at Emby.Server.Implementations.HttpServer.HttpResultFactory.GetContent(StaticFileResultOptions options, Int64 offset, Int64 length, CancellationToken cancellationToken) at Emby.Server.Implementations.HttpServer.FileWriter.SetContentResponseHeaders(Nullable`1 reportedTotalContentLength, CancellationToken cancellationToken) at Emby.Server.Implementations.HttpServer.HttpResultFactory.GetStaticResult(IRequest requestContext, StaticResultOptions options) at Emby.Server.MediaEncoding.Api.Progressive.BaseProgressiveStreamingService.ProcessRequest(StreamRequest request, Boolean isHeadRequest) at Emby.Server.MediaEncoding.Api.UniversalAudioService.GetUniversalStream(GetUniversalAudioStream request, Boolean isHeadRequest, CancellationToken cancellationToken) at Emby.Server.Implementations.Services.ServiceController.GetTaskResult(Task task) at Emby.Server.Implementations.Services.ServiceHandler.ProcessRequestAsync(HttpListenerHost appHost, IRequest httpReq, IResponse httpRes, RestPath restPath, String responseContentType, CancellationToken cancellationToken) at Emby.Server.Implementations.HttpServer.HttpListenerHost.RequestHandler(IRequest httpReq, ReadOnlyMemory`1 urlString, ReadOnlyMemory`1 localPath, CancellationToken cancellationToken) Source: System.Private.CoreLib TargetSite: Void ThrowExceptionForIoErrno(ErrorInfo, System.String, Boolean, System.Func`2[Interop+ErrorInfo,Interop+ErrorInfo]) Link to comment Share on other sites More sharing options...
Luke 36879 Posted July 14, 2020 Share Posted July 14, 2020 Hi there, are you using symbolic links? Link to comment Share on other sites More sharing options...
daPyr0x 0 Posted July 14, 2020 Author Share Posted July 14, 2020 Sorry, I probably should've explained that up front. I am not using symbolic links, but in the eyes of ffmpeg it's possible I guess? Files are stored on a file server running OpenMediaVault in a mergerFS volume. This volume is mounted via NFS to a separate VM running Debian and Docker. Emby runs within that docker with the NFS mounted volume shared to it. Link to comment Share on other sites More sharing options...
Solution mastrmind11 717 Posted July 14, 2020 Solution Share Posted July 14, 2020 10 minutes ago, daPyr0x said: Sorry, I probably should've explained that up front. I am not using symbolic links, but in the eyes of ffmpeg it's possible I guess? Files are stored on a file server running OpenMediaVault in a mergerFS volume. This volume is mounted via NFS to a separate VM running Debian and Docker. Emby runs within that docker with the NFS mounted volume shared to it. try this https://serverfault.com/questions/640895/why-do-some-host-volumes-in-docker-containers-give-the-error-too-many-levels-of 1 Link to comment Share on other sites More sharing options...
daPyr0x 0 Posted July 17, 2020 Author Share Posted July 17, 2020 (edited) On 7/14/2020 at 9:54 AM, mastrmind11 said: try this https://serverfault.com/questions/640895/why-do-some-host-volumes-in-docker-containers-give-the-error-too-many-levels-of Thanks mastrmind11. This pointed me in the right direction, though I used a slightly different solution. For future google results: When launching the docker container, add :shared to your media volume declaration when using NFS to prevent this issue. docker run -d \ --volume /path/to/programdata:/config \ # This is mandatory --volume /path/to/share1:/mnt/share1:shared \ # To mount a share using NFS --device /dev/dri:/dev/dri \ # To mount all render nodes for VAAPI/NVDEC/NVENC --runtime=nvidia \ # To expose your NVIDIA GPU --publish 8096:8096 \ # To expose the HTTP port --publish 8920:8920 \ # To expose the HTTPS port --env UID=1000 \ # The UID to run emby as (default: 2) --env GID=100 \ # The GID to run emby as (default 2) --env GIDLIST=100 \ # A comma-separated list of additional GIDs to run emby as (default: 2) emby/embyserver:latest Edited July 17, 2020 by daPyr0x Link to comment Share on other sites More sharing options...
Luke 36879 Posted July 17, 2020 Share Posted July 17, 2020 Thanks for the feedback. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now