jellyfin / jellyfin-plugin-dlna

GNU General Public License v3.0
12 stars 7 forks source link

Can't use DLNA server with Orange TV decoder #25

Open QyuBee opened 1 year ago

QyuBee commented 1 year ago

I tried to use Jellyfin as a DLNA server. It works well except with my TV Decoder. I can't read any video from Jellyfin, no matter the video format.

Logs

[2022-12-29 14:42:27.980 +00:00] [INF] [27] Jellyfin.Api.Helpers.TranscodingJobHelper: "/usr/lib/jellyfin-ffmpeg/ffmpeg" "-analyzeduration 200M -fflags +genpts -f matroska,webm  -i file:\"/media/myfile.mkv\" -map 0:0 -map 0:1 -map -0:s -codec:v:0 copy -map_metadata -1 -map_chapters -1 -threads 0 -codec:a:0 copy -y \"/config/transcodes/a4e7b9904a2636a17cd21a69cea138fe.mkv?deviceprofileid=f97d98ebd94c468b9b07e33463fd50fc&deviceid=test&mediasourceid=5c1b0eefbdecc20924de9249ac65f9c2&static=true&videocodec=h264&audiocodec=dts&audiostreamindex=1&subtitlestreamindex=2&subtitlemethod=embed&tag=04fbab2554e7761c6033dbfbeb790547&dlnaheaders=true\""
[2022-12-29 14:42:28.057 +00:00] [ERR] [17] Jellyfin.Api.Helpers.TranscodingJobHelper: FFmpeg exited with code 1
[2022-12-29 14:42:28.160 +00:00] [ERR] [17] Jellyfin.Server.Middleware.ExceptionMiddleware: Error processing request. URL "GET" "/videos/5c1b0eef-bdec-c209-24de-9249ac65f9c2/stream.mkv%3FDeviceProfileId=f97d98ebd94c468b9b07e33463fd50fc&DeviceId=test&MediaSourceId=5c1b0eefbdecc20924de9249ac65f9c2&Static=true&VideoCodec=h264&AudioCodec=dts&AudioStreamIndex=1&SubtitleStreamIndex=2&SubtitleMethod=Embed&Tag=04fbab2554e7761c6033dbfbeb790547&dlnaheaders=true".
MediaBrowser.Common.FfmpegException: FFmpeg exited with code 1
   at Jellyfin.Api.Helpers.TranscodingJobHelper.StartFfMpeg(StreamState state, String outputPath, String commandLineArguments, HttpRequest request, TranscodingJobType transcodingJobType, CancellationTokenSource cancellationTokenSource, String workingDirectory)
   at Jellyfin.Api.Helpers.FileStreamResponseHelpers.GetTranscodedFile(StreamState state, Boolean isHeadRequest, HttpContext httpContext, TranscodingJobHelper transcodingJobHelper, String ffmpegCommandLineArguments, TranscodingJobType transcodingJobType, CancellationTokenSource cancellationTokenSource)
   at Jellyfin.Api.Controllers.VideosController.GetVideoStream(Guid itemId, String container, Nullable`1 static, String params, String tag, String deviceProfileId, String playSessionId, String segmentContainer, Nullable`1 segmentLength, Nullable`1 minSegments, String mediaSourceId, String deviceId, String audioCodec, Nullable`1 enableAutoStreamCopy, Nullable`1 allowVideoStreamCopy, Nullable`1 allowAudioStreamCopy, Nullable`1 breakOnNonKeyFrames, Nullable`1 audioSampleRate, Nullable`1 maxAudioBitDepth, Nullable`1 audioBitRate, Nullable`1 audioChannels, Nullable`1 maxAudioChannels, String profile, String level, Nullable`1 framerate, Nullable`1 maxFramerate, Nullable`1 copyTimestamps, Nullable`1 startTimeTicks, Nullable`1 width, Nullable`1 height, Nullable`1 maxWidth, Nullable`1 maxHeight, Nullable`1 videoBitRate, Nullable`1 subtitleStreamIndex, Nullable`1 subtitleMethod, Nullable`1 maxRefFrames, Nullable`1 maxVideoBitDepth, Nullable`1 requireAvc, Nullable`1 deInterlace, Nullable`1 requireNonAnamorphic, Nullable`1 transcodingMaxAudioChannels, Nullable`1 cpuCoreLimit, String liveStreamId, Nullable`1 enableMpegtsM2TsMode, String videoCodec, String subtitleCodec, String transcodeReasons, Nullable`1 audioStreamIndex, Nullable`1 videoStreamIndex, Nullable`1 context, Dictionary`2 streamOptions)
   at lambda_method338(Closure , Object )
   at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|20_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
   at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
   at Jellyfin.Server.Middleware.ServerStartupMessageMiddleware.Invoke(HttpContext httpContext, IServerApplicationHost serverApplicationHost, ILocalizationManager localizationManager)
   at Jellyfin.Server.Middleware.WebSocketHandlerMiddleware.Invoke(HttpContext httpContext, IWebSocketManager webSocketManager)
   at Jellyfin.Server.Middleware.IpBasedAccessValidationMiddleware.Invoke(HttpContext httpContext, INetworkManager networkManager)
   at Jellyfin.Server.Middleware.LanFilteringMiddleware.Invoke(HttpContext httpContext, INetworkManager networkManager, IServerConfigurationManager serverConfigurationManager)
   at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
   at Jellyfin.Server.Middleware.QueryStringDecodingMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.ReDoc.ReDocMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)
   at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
   at Jellyfin.Server.Middleware.RobotsRedirectionMiddleware.Invoke(HttpContext httpContext)
   at Jellyfin.Server.Middleware.LegacyEmbyRouteRewriteMiddleware.Invoke(HttpContext httpContext)
   at Jellyfin.Server.Middleware.ResponseTimeMiddleware.Invoke(HttpContext context, IServerConfigurationManager serverConfigurationManager)
   at Jellyfin.Server.Middleware.ExceptionMiddleware.Invoke(HttpContext context)

FFmpeg Logs

/videos/5c1b0eef-bdec-c209-24de-9249ac65f9c2/stream.mkv%3FDeviceProfileId=f97d98ebd94c468b9b07e33463fd50fc&DeviceId=test&MediaSourceId=5c1b0eefbdecc20924de9249ac65f9c2&Static=true&VideoCodec=h264&AudioCodec=dts&AudioStreamIndex=1&SubtitleStreamIndex=2&SubtitleMethod=Embed&Tag=04fbab2554e7761c6033dbfbeb790547&dlnaheaders=true

{"Protocol":0,"Id":"5c1b0eefbdecc20924de9249ac65f9c2","Path":"/media/myfile.mkv","EncoderPath":null,"EncoderProtocol":null,"Type":0,"Container":"mkv,webm","Size":8213915648,"Name":"my file","IsRemote":false,"ETag":"04fbab2554e7761c6033dbfbeb790547","RunTimeTicks":63129579520,"ReadAtNativeFramerate":false,"IgnoreDts":false,"IgnoreIndex":false,"GenPtsInput":false,"SupportsTranscoding":true,"SupportsDirectStream":true,"SupportsDirectPlay":true,"IsInfiniteStream":false,"RequiresOpening":false,"OpenToken":null,"RequiresClosing":false,"LiveStreamId":null,"BufferMs":null,"RequiresLooping":false,"SupportsProbing":true,"VideoType":0,"IsoType":null,"Video3DFormat":null,"MediaStreams":[{"Codec":"h264","CodecTag":null,"Language":"eng","ColorRange":null,"ColorSpace":null,"ColorTransfer":null,"ColorPrimaries":null,"DvVersionMajor":null,"DvVersionMinor":null,"DvProfile":null,"DvLevel":null,"RpuPresentFlag":null,"ElPresentFlag":null,"BlPresentFlag":null,"DvBlSignalCompatibilityId":null,"Comment":null,"TimeBase":"1/1000","CodecTimeBase":null,"Title":null,"VideoRange":"SDR","VideoRangeType":"SDR","VideoDoViTitle":null,"LocalizedUndefined":null,"LocalizedDefault":null,"LocalizedForced":null,"LocalizedExternal":null,"DisplayTitle":"1080p H264 SDR","NalLengthSize":"4","IsInterlaced":false,"IsAVC":true,"ChannelLayout":null,"BitRate":10408959,"BitDepth":8,"RefFrames":1,"PacketLength":null,"Channels":null,"SampleRate":null,"IsDefault":true,"IsForced":false,"Height":808,"Width":1920,"AverageFrameRate":24,"RealFrameRate":24,"Profile":"High","Type":1,"AspectRatio":"2.40:1","Index":0,"Score":null,"IsExternal":false,"DeliveryMethod":null,"DeliveryUrl":null,"IsExternalUrl":null,"IsTextSubtitleStream":false,"SupportsExternalStream":false,"Path":null,"PixelFormat":"yuv420p","Level":41,"IsAnamorphic":null},{"Codec":"dts","CodecTag":null,"Language":"fre","ColorRange":null,"ColorSpace":null,"ColorTransfer":null,"ColorPrimaries":null,"DvVersionMajor":null,"DvVersionMinor":null,"DvProfile":null,"DvLevel":null,"RpuPresentFlag":null,"ElPresentFlag":null,"BlPresentFlag":null,"DvBlSignalCompatibilityId":null,"Comment":null,"TimeBase":"1/1000","CodecTimeBase":null,"Title":"FR","VideoRange":null,"VideoRangeType":null,"VideoDoViTitle":null,"LocalizedUndefined":null,"LocalizedDefault":null,"LocalizedForced":null,"LocalizedExternal":null,"DisplayTitle":"FR - Fre - DTS - 5.1 - Default","NalLengthSize":null,"IsInterlaced":false,"IsAVC":null,"ChannelLayout":"5.1","BitRate":1536000,"BitDepth":null,"RefFrames":null,"PacketLength":null,"Channels":6,"SampleRate":48000,"IsDefault":true,"IsForced":false,"Height":null,"Width":null,"AverageFrameRate":null,"RealFrameRate":null,"Profile":"DTS","Type":0,"AspectRatio":null,"Index":1,"Score":null,"IsExternal":false,"DeliveryMethod":null,"DeliveryUrl":null,"IsExternalUrl":null,"IsTextSubtitleStream":false,"SupportsExternalStream":false,"Path":null,"PixelFormat":null,"Level":0,"IsAnamorphic":null},{"Codec":"subrip","CodecTag":null,"Language":"frf","ColorRange":null,"ColorSpace":null,"ColorTransfer":null,"ColorPrimaries":null,"DvVersionMajor":null,"DvVersionMinor":null,"DvProfile":null,"DvLevel":null,"RpuPresentFlag":null,"ElPresentFlag":null,"BlPresentFlag":null,"DvBlSignalCompatibilityId":null,"Comment":null,"TimeBase":"1/1000","CodecTimeBase":null,"Title":"FRF","VideoRange":null,"VideoRangeType":null,"VideoDoViTitle":null,"LocalizedUndefined":"Non d\u00E9fini","LocalizedDefault":"Par d\u00E9faut","LocalizedForced":"Forc\u00E9","LocalizedExternal":"External","DisplayTitle":"FRF - Par d\u00E9faut - Forc\u00E9 - SUBRIP","NalLengthSize":null,"IsInterlaced":false,"IsAVC":null,"ChannelLayout":null,"BitRate":null,"BitDepth":null,"RefFrames":null,"PacketLength":null,"Channels":null,"SampleRate":null,"IsDefault":true,"IsForced":true,"Height":null,"Width":null,"AverageFrameRate":null,"RealFrameRate":null,"Profile":null,"Type":2,"AspectRatio":null,"Index":2,"Score":null,"IsExternal":false,"DeliveryMethod":null,"DeliveryUrl":null,"IsExternalUrl":null,"IsTextSubtitleStream":true,"SupportsExternalStream":true,"Path":null,"PixelFormat":null,"Level":0,"IsAnamorphic":null}],"MediaAttachments":[],"Formats":[],"Bitrate":11944959,"Timestamp":null,"RequiredHttpHeaders":{},"TranscodingUrl":null,"TranscodingSubProtocol":null,"TranscodingContainer":null,"AnalyzeDurationMs":null,"DefaultAudioStreamIndex":null,"DefaultSubtitleStreamIndex":null}

/usr/lib/jellyfin-ffmpeg/ffmpeg -analyzeduration 200M -fflags +genpts -f matroska,webm  -i file:"/media/myfile.mkv" -map 0:0 -map 0:1 -map -0:s -codec:v:0 copy -map_metadata -1 -map_chapters -1 -threads 0 -codec:a:0 copy -y "/config/transcodes/a4e7b9904a2636a17cd21a69cea138fe.mkv?deviceprofileid=f97d98ebd94c468b9b07e33463fd50fc&deviceid=test&mediasourceid=5c1b0eefbdecc20924de9249ac65f9c2&static=true&videocodec=h264&audiocodec=dts&audiostreamindex=1&subtitlestreamindex=2&subtitlemethod=embed&tag=04fbab2554e7761c6033dbfbeb790547&dlnaheaders=true"

ffmpeg version 5.1.2-Jellyfin Copyright (c) 2000-2022 the FFmpeg developers
  built with gcc 10 (Debian 10.2.1-6)
  configuration: --prefix=/usr/lib/jellyfin-ffmpeg --target-os=linux --extra-libs=-lfftw3f --extra-version=Jellyfin --disable-doc --disable-ffplay --disable-ptx-compression --disable-shared --disable-libxcb --disable-sdl2 --disable-xlib --enable-lto --enable-gpl --enable-version3 --enable-static --enable-gmp --enable-gnutls --enable-chromaprint --enable-libdrm --enable-libass --enable-libfreetype --enable-libfribidi --enable-libfontconfig --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libdav1d --enable-libwebp --enable-libvpx --enable-libx264 --enable-libx265 --enable-libzvbi --enable-libzimg --enable-libfdk-aac --arch=amd64 --enable-libsvtav1 --enable-libshaderc --enable-libplacebo --enable-vulkan --enable-opencl --enable-vaapi --enable-amf --enable-libmfx --enable-ffnvcodec --enable-cuda --enable-cuda-llvm --enable-cuvid --enable-nvdec --enable-nvenc
  libavutil      57. 28.100 / 57. 28.100
  libavcodec     59. 37.100 / 59. 37.100
  libavformat    59. 27.100 / 59. 27.100
  libavdevice    59.  7.100 / 59.  7.100
  libavfilter     8. 44.100 /  8. 44.100
  libswscale      6.  7.100 /  6.  7.100
  libswresample   4.  7.100 /  4.  7.100
  libpostproc    56.  6.100 / 56.  6.100
Input #0, matroska,webm, from 'file:/media/myfile.mkv':
  Metadata:
    encoder         : libebml v1.0.0 + libmatroska v1.0
  Duration: 01:45:12.96, start: 0.000000, bitrate: 10408 kb/s
  Chapters:
    Chapter #0:0: start 0.000000, end 674.458000
      Metadata:
        title           : 00:00:00.000
    Chapter #0:1: start 674.458000, end 1110.458000
      Metadata:
        title           : 00:11:14.458
    Chapter #0:2: start 1110.458000, end 1575.792000
      Metadata:
        title           : 00:18:30.458
    Chapter #0:3: start 1575.792000, end 2132.875000
      Metadata:
        title           : 00:26:15.792
    Chapter #0:4: start 2132.875000, end 2694.375000
      Metadata:
        title           : 00:35:32.875
    Chapter #0:5: start 2694.375000, end 3105.667000
      Metadata:
        title           : 00:44:54.375
    Chapter #0:6: start 3105.667000, end 3693.083000
      Metadata:
        title           : 00:51:45.667
    Chapter #0:7: start 3693.083000, end 4188.167000
      Metadata:
        title           : 01:01:33.083
    Chapter #0:8: start 4188.167000, end 4773.000000
      Metadata:
        title           : 01:09:48.167
    Chapter #0:9: start 4773.000000, end 5139.042000
      Metadata:
        title           : 01:19:33.000
    Chapter #0:10: start 5139.042000, end 5883.000000
      Metadata:
        title           : 01:25:39.042
    Chapter #0:11: start 5883.000000, end 6312.958000
      Metadata:
        title           : 01:38:03.000
  Stream #0:0(eng): Video: h264 (High), yuv420p(progressive), 1920x808, SAR 1:1 DAR 240:101, 24 fps, 24 tbr, 1k tbn (default)
  Stream #0:1(fre): Audio: dts (DTS), 48000 Hz, 5.1(side), fltp, 1536 kb/s (default)
    Metadata:
      title           : FR
  Stream #0:2(frf): Subtitle: subrip (default) (forced)
    Metadata:
      title           : FRF
[NULL @ 0x558f8e7d7300] Unable to find a suitable output format for '/config/transcodes/a4e7b9904a2636a17cd21a69cea138fe.mkv?deviceprofileid=f97d98ebd94c468b9b07e33463fd50fc&deviceid=test&mediasourceid=5c1b0eefbdecc20924de9249ac65f9c2&static=true&videocodec=h264&audiocodec=dts&audiostreamindex=1&subtitlestreamindex=2&subtitlemethod=embed&tag=04fbab2554e7761c6033dbfbeb790547&dlnaheaders=true'
/config/transcodes/a4e7b9904a2636a17cd21a69cea138fe.mkv?deviceprofileid=f97d98ebd94c468b9b07e33463fd50fc&deviceid=test&mediasourceid=5c1b0eefbdecc20924de9249ac65f9c2&static=true&videocodec=h264&audiocodec=dts&audiostreamindex=1&subtitlestreamindex=2&subtitlemethod=embed&tag=04fbab2554e7761c6033dbfbeb790547&dlnaheaders=true: Invalid argument

Server System (please complete the following information):

Client System (please complete the following information):

jellyfin-bot commented 1 year ago

This issue has gone 120 days without comment. To avoid abandoned issues, it will be closed in 21 days if there are no new comments.

If you're the original submitter of this issue, please comment confirming if this issue still affects you in the latest release or master branch, or close the issue if it has been fixed. If you're another user also affected by this bug, please comment confirming so. Either action will remove the stale label.

This bot exists to prevent issues from becoming stale and forgotten. Jellyfin is always moving forward, and bugs are often fixed as side effects of other changes. We therefore ask that bug report authors remain vigilant about their issues to ensure they are closed if fixed, or re-confirmed - perhaps with fresh logs or reproduction examples - regularly. If you have any questions you can reach us on Matrix or Social Media.

aubierr commented 1 year ago

Same problem for me

Logs

[2023-05-06 05:40:22.284 +00:00] [INF] [21] Jellyfin.Api.Helpers.TranscodingJobHelper: "/usr/lib/jellyfin-ffmpeg/ffmpeg" "-analyzeduration 200M -fflags +genpts -f matroska,webm  -i file:\"/sharefolder/Public/Serie/Solar Opposites/Saison 1/Solar.Opposites.S01E05.FRENCH.720p.WEB.H264-STRINGERBELL.mkv\" -map 0:0 -map 0:1 -map -0:s -codec:v:0 copy -map_metadata -1 -map_chapters -1 -threads 0 -codec:a:0 copy -y \"/config/transcodes/f7f696d28ccded902b2fc5b775f359ab.mkv?deviceprofileid=5810f6c1a0594936a7636665882ed623&deviceid=test&mediasourceid=b7552b46b77fc58be9d2cf26d3ece5b9&static=true&videocodec=h264&audiocodec=eac3&audiostreamindex=1&subtitlestreamindex=2&subtitlemethod=embed&tag=1c308a847125a59cfe227efcd40e1969&dlnaheaders=true\""
[2023-05-06 05:40:22.451 +00:00] [ERR] [26] Jellyfin.Api.Helpers.TranscodingJobHelper: FFmpeg exited with code 1
[2023-05-06 05:40:22.543 +00:00] [ERR] [26] Jellyfin.Server.Middleware.ExceptionMiddleware: Error processing request. URL "GET" "/videos/b7552b46-b77f-c58b-e9d2-cf26d3ece5b9/stream.mkv%3FDeviceProfileId=5810f6c1a0594936a7636665882ed623&DeviceId=test&MediaSourceId=b7552b46b77fc58be9d2cf26d3ece5b9&Static=true&VideoCodec=h264&AudioCodec=eac3&AudioStreamIndex=1&SubtitleStreamIndex=2&SubtitleMethod=Embed&Tag=1c308a847125a59cfe227efcd40e1969&dlnaheaders=true".
MediaBrowser.Common.FfmpegException: FFmpeg exited with code 1
   at Jellyfin.Api.Helpers.TranscodingJobHelper.StartFfMpeg(StreamState state, String outputPath, String commandLineArguments, HttpRequest request, TranscodingJobType transcodingJobType, CancellationTokenSource cancellationTokenSource, String workingDirectory)
   at Jellyfin.Api.Helpers.FileStreamResponseHelpers.GetTranscodedFile(StreamState state, Boolean isHeadRequest, HttpContext httpContext, TranscodingJobHelper transcodingJobHelper, String ffmpegCommandLineArguments, TranscodingJobType transcodingJobType, CancellationTokenSource cancellationTokenSource)
   at Jellyfin.Api.Controllers.VideosController.GetVideoStream(Guid itemId, String container, Nullable`1 static, String params, String tag, String deviceProfileId, String playSessionId, String segmentContainer, Nullable`1 segmentLength, Nullable`1 minSegments, String mediaSourceId, String deviceId, String audioCodec, Nullable`1 enableAutoStreamCopy, Nullable`1 allowVideoStreamCopy, Nullable`1 allowAudioStreamCopy, Nullable`1 breakOnNonKeyFrames, Nullable`1 audioSampleRate, Nullable`1 maxAudioBitDepth, Nullable`1 audioBitRate, Nullable`1 audioChannels, Nullable`1 maxAudioChannels, String profile, String level, Nullable`1 framerate, Nullable`1 maxFramerate, Nullable`1 copyTimestamps, Nullable`1 startTimeTicks, Nullable`1 width, Nullable`1 height, Nullable`1 maxWidth, Nullable`1 maxHeight, Nullable`1 videoBitRate, Nullable`1 subtitleStreamIndex, Nullable`1 subtitleMethod, Nullable`1 maxRefFrames, Nullable`1 maxVideoBitDepth, Nullable`1 requireAvc, Nullable`1 deInterlace, Nullable`1 requireNonAnamorphic, Nullable`1 transcodingMaxAudioChannels, Nullable`1 cpuCoreLimit, String liveStreamId, Nullable`1 enableMpegtsM2TsMode, String videoCodec, String subtitleCodec, String transcodeReasons, Nullable`1 audioStreamIndex, Nullable`1 videoStreamIndex, Nullable`1 context, Dictionary`2 streamOptions)
   at lambda_method1704(Closure , Object )
   at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|20_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
   at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
   at Jellyfin.Server.Middleware.ServerStartupMessageMiddleware.Invoke(HttpContext httpContext, IServerApplicationHost serverApplicationHost, ILocalizationManager localizationManager)
   at Jellyfin.Server.Middleware.WebSocketHandlerMiddleware.Invoke(HttpContext httpContext, IWebSocketManager webSocketManager)
   at Jellyfin.Server.Middleware.IpBasedAccessValidationMiddleware.Invoke(HttpContext httpContext, INetworkManager networkManager)
   at Jellyfin.Server.Middleware.LanFilteringMiddleware.Invoke(HttpContext httpContext, INetworkManager networkManager, IServerConfigurationManager serverConfigurationManager)
   at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
   at Jellyfin.Server.Middleware.QueryStringDecodingMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.ReDoc.ReDocMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)
   at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
   at Jellyfin.Server.Middleware.RobotsRedirectionMiddleware.Invoke(HttpContext httpContext)
   at Jellyfin.Server.Middleware.LegacyEmbyRouteRewriteMiddleware.Invoke(HttpContext httpContext)
   at Jellyfin.Server.Middleware.ResponseTimeMiddleware.Invoke(HttpContext context, IServerConfigurationManager serverConfigurationManager)
   at Jellyfin.Server.Middleware.ExceptionMiddleware.Invoke(HttpContext context)

FFmpeg Logs

/videos/b7552b46-b77f-c58b-e9d2-cf26d3ece5b9/stream.mkv%3FDeviceProfileId=5810f6c1a0594936a7636665882ed623&DeviceId=test&MediaSourceId=b7552b46b77fc58be9d2cf26d3ece5b9&Static=true&VideoCodec=h264&AudioCodec=eac3&AudioStreamIndex=1&SubtitleStreamIndex=2&SubtitleMethod=Embed&Tag=1c308a847125a59cfe227efcd40e1969&dlnaheaders=true

{"Protocol":0,"Id":"b7552b46b77fc58be9d2cf26d3ece5b9","Path":"/sharefolder/Public/Serie/Solar Opposites/Saison 1/Solar.Opposites.S01E05.FRENCH.720p.WEB.H264-STRINGERBELL.mkv","EncoderPath":null,"EncoderProtocol":null,"Type":0,"Container":"mkv,webm","Size":497165395,"Name":"Solar.Opposites.S01E05.FRENCH.720p.WEB.H264-STRINGERBELL","IsRemote":false,"ETag":"1c308a847125a59cfe227efcd40e1969","RunTimeTicks":13610239999,"ReadAtNativeFramerate":false,"IgnoreDts":false,"IgnoreIndex":false,"GenPtsInput":false,"SupportsTranscoding":true,"SupportsDirectStream":true,"SupportsDirectPlay":true,"IsInfiniteStream":false,"RequiresOpening":false,"OpenToken":null,"RequiresClosing":false,"LiveStreamId":null,"BufferMs":null,"RequiresLooping":false,"SupportsProbing":true,"VideoType":0,"IsoType":null,"Video3DFormat":null,"MediaStreams":[{"Codec":"h264","CodecTag":null,"Language":null,"ColorRange":null,"ColorSpace":"bt709","ColorTransfer":"bt709","ColorPrimaries":"bt709","DvVersionMajor":null,"DvVersionMinor":null,"DvProfile":null,"DvLevel":null,"RpuPresentFlag":null,"ElPresentFlag":null,"BlPresentFlag":null,"DvBlSignalCompatibilityId":null,"Comment":null,"TimeBase":"1/1000","CodecTimeBase":null,"Title":null,"VideoRange":"SDR","VideoRangeType":"SDR","VideoDoViTitle":null,"LocalizedUndefined":null,"LocalizedDefault":null,"LocalizedForced":null,"LocalizedExternal":null,"DisplayTitle":"720p H264 SDR","NalLengthSize":"4","IsInterlaced":false,"IsAVC":true,"ChannelLayout":null,"BitRate":2922302,"BitDepth":8,"RefFrames":1,"PacketLength":null,"Channels":null,"SampleRate":null,"IsDefault":true,"IsForced":false,"Height":720,"Width":1280,"AverageFrameRate":23.976025,"RealFrameRate":23.976025,"Profile":"High","Type":1,"AspectRatio":"16:9","Index":0,"Score":null,"IsExternal":false,"DeliveryMethod":null,"DeliveryUrl":null,"IsExternalUrl":null,"IsTextSubtitleStream":false,"SupportsExternalStream":false,"Path":null,"PixelFormat":"yuv420p","Level":31,"IsAnamorphic":null},{"Codec":"eac3","CodecTag":null,"Language":"fre","ColorRange":null,"ColorSpace":null,"ColorTransfer":null,"ColorPrimaries":null,"DvVersionMajor":null,"DvVersionMinor":null,"DvProfile":null,"DvLevel":null,"RpuPresentFlag":null,"ElPresentFlag":null,"BlPresentFlag":null,"DvBlSignalCompatibilityId":null,"Comment":null,"TimeBase":"1/1000","CodecTimeBase":null,"Title":"French","VideoRange":null,"VideoRangeType":null,"VideoDoViTitle":null,"LocalizedUndefined":null,"LocalizedDefault":null,"LocalizedForced":null,"LocalizedExternal":null,"DisplayTitle":"French - Dolby Digital\u002B - 5.1 - Default","NalLengthSize":null,"IsInterlaced":false,"IsAVC":null,"ChannelLayout":"5.1","BitRate":256000,"BitDepth":null,"RefFrames":null,"PacketLength":null,"Channels":6,"SampleRate":48000,"IsDefault":true,"IsForced":false,"Height":null,"Width":null,"AverageFrameRate":null,"RealFrameRate":null,"Profile":null,"Type":0,"AspectRatio":null,"Index":1,"Score":null,"IsExternal":false,"DeliveryMethod":null,"DeliveryUrl":null,"IsExternalUrl":null,"IsTextSubtitleStream":false,"SupportsExternalStream":false,"Path":null,"PixelFormat":null,"Level":0,"IsAnamorphic":null},{"Codec":"subrip","CodecTag":null,"Language":"fre","ColorRange":null,"ColorSpace":null,"ColorTransfer":null,"ColorPrimaries":null,"DvVersionMajor":null,"DvVersionMinor":null,"DvProfile":null,"DvLevel":null,"RpuPresentFlag":null,"ElPresentFlag":null,"BlPresentFlag":null,"DvBlSignalCompatibilityId":null,"Comment":null,"TimeBase":"1/1000","CodecTimeBase":null,"Title":"French (Forced)","VideoRange":null,"VideoRangeType":null,"VideoDoViTitle":null,"LocalizedUndefined":"Non d\u00E9fini","LocalizedDefault":"Par d\u00E9faut","LocalizedForced":"Forc\u00E9","LocalizedExternal":"External","DisplayTitle":"French (Forced) - Par d\u00E9faut - Forc\u00E9 - SUBRIP","NalLengthSize":null,"IsInterlaced":false,"IsAVC":null,"ChannelLayout":null,"BitRate":null,"BitDepth":null,"RefFrames":null,"PacketLength":null,"Channels":null,"SampleRate":null,"IsDefault":true,"IsForced":true,"Height":null,"Width":null,"AverageFrameRate":null,"RealFrameRate":null,"Profile":null,"Type":2,"AspectRatio":null,"Index":2,"Score":null,"IsExternal":false,"DeliveryMethod":null,"DeliveryUrl":null,"IsExternalUrl":null,"IsTextSubtitleStream":true,"SupportsExternalStream":true,"Path":null,"PixelFormat":null,"Level":0,"IsAnamorphic":null},{"Codec":"subrip","CodecTag":null,"Language":"fre","ColorRange":null,"ColorSpace":null,"ColorTransfer":null,"ColorPrimaries":null,"DvVersionMajor":null,"DvVersionMinor":null,"DvProfile":null,"DvLevel":null,"RpuPresentFlag":null,"ElPresentFlag":null,"BlPresentFlag":null,"DvBlSignalCompatibilityId":null,"Comment":null,"TimeBase":"1/1000","CodecTimeBase":null,"Title":"French","VideoRange":null,"VideoRangeType":null,"VideoDoViTitle":null,"LocalizedUndefined":"Non d\u00E9fini","LocalizedDefault":"Par d\u00E9faut","LocalizedForced":"Forc\u00E9","LocalizedExternal":"External","DisplayTitle":"French - SUBRIP","NalLengthSize":null,"IsInterlaced":false,"IsAVC":null,"ChannelLayout":null,"BitRate":null,"BitDepth":null,"RefFrames":null,"PacketLength":null,"Channels":null,"SampleRate":null,"IsDefault":false,"IsForced":false,"Height":null,"Width":null,"AverageFrameRate":null,"RealFrameRate":null,"Profile":null,"Type":2,"AspectRatio":null,"Index":3,"Score":null,"IsExternal":false,"DeliveryMethod":null,"DeliveryUrl":null,"IsExternalUrl":null,"IsTextSubtitleStream":true,"SupportsExternalStream":true,"Path":null,"PixelFormat":null,"Level":0,"IsAnamorphic":null},{"Codec":"subrip","CodecTag":null,"Language":"eng","ColorRange":null,"ColorSpace":null,"ColorTransfer":null,"ColorPrimaries":null,"DvVersionMajor":null,"DvVersionMinor":null,"DvProfile":null,"DvLevel":null,"RpuPresentFlag":null,"ElPresentFlag":null,"BlPresentFlag":null,"DvBlSignalCompatibilityId":null,"Comment":null,"TimeBase":"1/1000","CodecTimeBase":null,"Title":"English (SDH)","VideoRange":null,"VideoRangeType":null,"VideoDoViTitle":null,"LocalizedUndefined":"Non d\u00E9fini","LocalizedDefault":"Par d\u00E9faut","LocalizedForced":"Forc\u00E9","LocalizedExternal":"External","DisplayTitle":"English (SDH) - SUBRIP","NalLengthSize":null,"IsInterlaced":false,"IsAVC":null,"ChannelLayout":null,"BitRate":null,"BitDepth":null,"RefFrames":null,"PacketLength":null,"Channels":null,"SampleRate":null,"IsDefault":false,"IsForced":false,"Height":null,"Width":null,"AverageFrameRate":null,"RealFrameRate":null,"Profile":null,"Type":2,"AspectRatio":null,"Index":4,"Score":null,"IsExternal":false,"DeliveryMethod":null,"DeliveryUrl":null,"IsExternalUrl":null,"IsTextSubtitleStream":true,"SupportsExternalStream":true,"Path":null,"PixelFormat":null,"Level":0,"IsAnamorphic":null}],"MediaAttachments":[],"Formats":[],"Bitrate":3178302,"Timestamp":null,"RequiredHttpHeaders":{},"TranscodingUrl":null,"TranscodingSubProtocol":null,"TranscodingContainer":null,"AnalyzeDurationMs":null,"DefaultAudioStreamIndex":null,"DefaultSubtitleStreamIndex":null}

/usr/lib/jellyfin-ffmpeg/ffmpeg -analyzeduration 200M -fflags +genpts -f matroska,webm  -i file:"/sharefolder/Public/Serie/Solar Opposites/Saison 1/Solar.Opposites.S01E05.FRENCH.720p.WEB.H264-STRINGERBELL.mkv" -map 0:0 -map 0:1 -map -0:s -codec:v:0 copy -map_metadata -1 -map_chapters -1 -threads 0 -codec:a:0 copy -y "/config/transcodes/f7f696d28ccded902b2fc5b775f359ab.mkv?deviceprofileid=5810f6c1a0594936a7636665882ed623&deviceid=test&mediasourceid=b7552b46b77fc58be9d2cf26d3ece5b9&static=true&videocodec=h264&audiocodec=eac3&audiostreamindex=1&subtitlestreamindex=2&subtitlemethod=embed&tag=1c308a847125a59cfe227efcd40e1969&dlnaheaders=true"

ffmpeg version 5.1.3-Jellyfin Copyright (c) 2000-2022 the FFmpeg developers
  built with gcc 10 (Debian 10.2.1-6)
  configuration: --prefix=/usr/lib/jellyfin-ffmpeg --target-os=linux --extra-libs=-lfftw3f --extra-version=Jellyfin --disable-doc --disable-ffplay --disable-ptx-compression --disable-static --disable-libxcb --disable-sdl2 --disable-xlib --enable-lto --enable-gpl --enable-version3 --enable-shared --enable-gmp --enable-gnutls --enable-chromaprint --enable-libdrm --enable-libass --enable-libfreetype --enable-libfribidi --enable-libfontconfig --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libopenmpt --enable-libdav1d --enable-libwebp --enable-libvpx --enable-libx264 --enable-libx265 --enable-libzvbi --enable-libzimg --enable-libfdk-aac --arch=amd64 --enable-libsvtav1 --enable-libshaderc --enable-libplacebo --enable-vulkan --enable-opencl --enable-vaapi --enable-amf --enable-libmfx --enable-ffnvcodec --enable-cuda --enable-cuda-llvm --enable-cuvid --enable-nvdec --enable-nvenc
  libavutil      57. 28.100 / 57. 28.100
  libavcodec     59. 37.100 / 59. 37.100
  libavformat    59. 27.100 / 59. 27.100
  libavdevice    59.  7.100 / 59.  7.100
  libavfilter     8. 44.100 /  8. 44.100
  libswscale      6.  7.100 /  6.  7.100
  libswresample   4.  7.100 /  4.  7.100
  libpostproc    56.  6.100 / 56.  6.100
Input #0, matroska,webm, from 'file:/sharefolder/Public/Serie/Solar Opposites/Saison 1/Solar.Opposites.S01E05.FRENCH.720p.WEB.H264-STRINGERBELL.mkv':
  Metadata:
    encoder         : libebml v1.4.2 + libmatroska v1.6.4
    creation_time   : 2021-03-12T12:23:24.000000Z
  Duration: 00:22:41.02, start: 0.000000, bitrate: 2922 kb/s
  Stream #0:0: Video: h264 (High), yuv420p(tv, bt709, progressive), 1280x720 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 1k tbn (default)
    Metadata:
      BPS-eng         : 2664755
      DURATION-eng    : 00:22:40.651000000
      NUMBER_OF_FRAMES-eng: 32623
      NUMBER_OF_BYTES-eng: 453225240
      _STATISTICS_WRITING_APP-eng: mkvmerge v55.0.0 ('Waiting For Space') 64-bit
      _STATISTICS_WRITING_DATE_UTC-eng: 2021-03-12 12:23:24
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
  Stream #0:1(fre): Audio: eac3, 48000 Hz, 5.1(side), fltp, 256 kb/s (default)
    Metadata:
      title           : French
      BPS-eng         : 256000
      DURATION-eng    : 00:22:41.024000000
      NUMBER_OF_FRAMES-eng: 42532
      NUMBER_OF_BYTES-eng: 43552768
      _STATISTICS_WRITING_APP-eng: mkvmerge v55.0.0 ('Waiting For Space') 64-bit
      _STATISTICS_WRITING_DATE_UTC-eng: 2021-03-12 12:23:24
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
  Stream #0:2(fre): Subtitle: subrip (default) (forced)
    Metadata:
      title           : French (Forced)
      BPS-eng         : 3
      DURATION-eng    : 00:21:33.500000000
      NUMBER_OF_FRAMES-eng: 22
      NUMBER_OF_BYTES-eng: 517
      _STATISTICS_WRITING_APP-eng: mkvmerge v55.0.0 ('Waiting For Space') 64-bit
      _STATISTICS_WRITING_DATE_UTC-eng: 2021-03-12 12:23:24
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
  Stream #0:3(fre): Subtitle: subrip
    Metadata:
      title           : French
      BPS-eng         : 120
      DURATION-eng    : 00:21:33.500000000
      NUMBER_OF_FRAMES-eng: 470
      NUMBER_OF_BYTES-eng: 19495
      _STATISTICS_WRITING_APP-eng: mkvmerge v55.0.0 ('Waiting For Space') 64-bit
      _STATISTICS_WRITING_DATE_UTC-eng: 2021-03-12 12:23:24
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
  Stream #0:4(eng): Subtitle: subrip
    Metadata:
      title           : English (SDH)
      BPS-eng         : 134
      DURATION-eng    : 00:21:28.955000000
      NUMBER_OF_FRAMES-eng: 524
      NUMBER_OF_BYTES-eng: 21647
      _STATISTICS_WRITING_APP-eng: mkvmerge v55.0.0 ('Waiting For Space') 64-bit
      _STATISTICS_WRITING_DATE_UTC-eng: 2021-03-12 12:23:24
      _STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
[NULL @ 0x55b95268d980] Unable to find a suitable output format for '/config/transcodes/f7f696d28ccded902b2fc5b775f359ab.mkv?deviceprofileid=5810f6c1a0594936a7636665882ed623&deviceid=test&mediasourceid=b7552b46b77fc58be9d2cf26d3ece5b9&static=true&videocodec=h264&audiocodec=eac3&audiostreamindex=1&subtitlestreamindex=2&subtitlemethod=embed&tag=1c308a847125a59cfe227efcd40e1969&dlnaheaders=true'
/config/transcodes/f7f696d28ccded902b2fc5b775f359ab.mkv?deviceprofileid=5810f6c1a0594936a7636665882ed623&deviceid=test&mediasourceid=b7552b46b77fc58be9d2cf26d3ece5b9&static=true&videocodec=h264&audiocodec=eac3&audiostreamindex=1&subtitlestreamindex=2&subtitlemethod=embed&tag=1c308a847125a59cfe227efcd40e1969&dlnaheaders=true: Invalid argument

Server System (please complete the following information):

OS: Docker container : NAS Asustor Jellyfin Version: 10.8.10

Client System (please complete the following information):

Device: Orange TV decoder [Website]( - https://assistance.orange.fr/equipement/tv/decodeur-tv-uhd-sagemcom)

Sefofo commented 1 year ago

Hi,

Same here, I'm wondering if output path is intended

/config/data/transcodes/24490dceefadd431b6363dd415fa2166.avi?deviceprofileid=ee85865999fa41798528994a73646564&deviceid=test&mediasourceid=b72a45c d1c1eced065db27fa88f33d94&static=true&videocodec=mpeg4&audiocodec=mp3&audiostreamindex=1&tag=ba11705917e0a414525bf8bc820b9a2c&dlnaheaders=true

Parameters seems inherited from xml sent by jellyfin:

<DIDL-Lite xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dlna="urn:schemas-dlna-org:metadata-1-0/" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/" xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/"><item restricted="1" id="b72a45cd1c1eced065db27fa88f33d94" parentID="movies_f137a2dd21bbc1b99aa5c0f6bf02a805"><dc:title>blablabla</dc:title><upnp:class>object.item.videoItem.movie</upnp:class><dc:date>2002-02-19</dc:date><upnp:genre>Familial</upnp:genre><upnp:genre>Comédie</upnp:genre><upnp:publisher>Soyouz Films</upnp:publisher><upnp:publisher>StudioCanal</upnp:publisher><upnp:publisher>Canal+</upnp:publisher><upnp:publisher>Ciné+</upnp:publisher><dc:description>blablabla</dc:description><upnp:actor>blablabla</upnp:actor><upnp:actor>blablabla</upnp:actor><upnp:actor>blablabla</upnp:actor><upnp:actor>blablabla</upnp:actor><upnp:actor>blablabla</upnp:actor><upnp:actor>blablabla</upnp:actor><res duration="01:37:49.6155136" size="728963776" nrAudioChannels="2" resolution="720x304" sampleFrequency="48000" bitrate="987686" protocolInfo="http-get:*:video/x-msvideo:DLNA.ORG_PN=AVI;DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=21D00000000000000000000000000000">http://192.168.1.5:8096/videos/b72a45cd-1c1e-ced0-65db-27fa88f33d94/stream.avi?DeviceProfileId=278eacb7caa14b249e044c312f41ed25&amp;amp;DeviceId=test&amp;amp;MediaSourceId=b72a45cd1c1eced065db27fa88f33d94&amp;amp;Static=true&amp;amp;VideoCodec=mpeg4&amp;amp;AudioCodec=mp3&amp;amp;AudioStreamIndex=1&amp;amp;Tag=ba11705917e0a414525bf8bc820b9a2c&amp;amp;dlnaheaders=true&lt;/res&gt;&lt;upnp:albumArtURI...

Compared to minidlna:

<DIDL-Lite xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/" xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/" xmlns:dlna="urn:schemas-dlna-org:metadata-1-0/"> <item id="2$15$0$0$0" parentID="2$15$0$0" restricted="1" refID="64$0$0$0"><dc:title>blablabla</dc:title><upnp:class>object.item.videoItem</upnp:class><dc:creator>DiVX</dc:creator><dc:date>2023-05-10T18:05:33</dc:date><res size="728963746" duration="1:37:49.615" bitrate="124192" sampleFrequency="48000" nrAudioChannels="2" resolution="720x304" protocolInfo="http-get:*:video/avi:DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01700000000000000000000000000000">http://192.168.1.5:8200/MediaItems/23.avi&lt;/res&gt;&lt;/item&gt;&lt;/DIDL-Lite&gt;

Why jellyfin add ?DeviceProfileId=278eacb7caa14b249e044c312f41ed25&amp;amp;DeviceId=test&amp;amp;MediaSourceId=b72a45cd1c1eced065db27fa88f33d94&amp;amp;Static=true&amp;amp;VideoCodec=mpeg4&amp;amp;AudioCodec=mp3&amp;amp;AudioStreamIndex=1&amp;amp;Tag=ba11705917e0a414525bf8bc820b9a2c&amp;amp;dlnaheaders=true to media url ?

Best regards

Sefofo commented 1 year ago

Interesting, here is 2 GET:

VLC (working)

/videos/b72a45cd-1c1e-ced0-65db-27fa88f33d94/stream.avi?DeviceProfileId=7d342edc68304269831647a23b6785cd&DeviceId=test&MediaSourceId=b72a45cd1c1eced065db27fa88f33d94&Static=true&VideoCodec=mpeg4&AudioCodec=mp3&AudioStreamIndex=1&Tag=ba11705917e0a414525bf8bc820b9a2c&dlnaheaders=true

TV Decoder (doesn't work)

/videos/b72a45cd-1c1e-ced0-65db-27fa88f33d94/stream.avi%3FDeviceProfileId%3D278eacb7caa14b249e044c312f41ed25%26DeviceId%3Dtest%26MediaSourceId%3Db72a45cd1c1eced065db27fa88f33d94%26Static%3Dtrue%26VideoCodec%3Dmpeg4%26AudioCodec%3Dmp3%26AudioStreamIndex%3D1%26Tag%3Dba11705917e0a414525bf8bc820b9a2c%26dlnaheaders%3Dtrue

TV decoder is encoding url parameters. Is Jellyfin able to decode encoded url ?

Vebryn commented 1 year ago

Hi,

Same here, I try to create a dlna profile with this option:

image

I expect a DIDL with object.item.videoItem instead of object.item.videoItem.movie. Wrong class is used:

"<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?><SOAP-ENV:Envelope SOAP-ENV:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\"><u:BrowseResponse xmlns:u=\"urn:schemas-upnp-org:service:ContentDirectory:1\"><DIDL-Lite xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dlna=\"urn:schemas-dlna-org:metadata-1-0/\" xmlns:upnp=\"urn:schemas-upnp-org:metadata-1-0/upnp/\" xmlns=\"urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/\"><item restricted=\"1\" id=\"b72a45cd1c1eced065db27fa88f33d94\" parentID=\"movies_f137a2dd21bbc1b99aa5c0f6bf02a805\"><dc:title>xxx</dc:title><upnp:class>object.item.videoItem.movie</upnp:class><dc:date>2020-02-19</dc:date><upnp:genre>Familial</upnp:genre><upnp:genre>Comédie</upnp:genre><...<res duration=\"01:37:49.6155136\" size=\"728963776\" nrAudioChannels=\"2\" resolution=\"720x304\" sampleFrequency=\"48000\" bitrate=\"987686\" protocolInfo=\"http-get:*:video/x-msvideo:DLNA.ORG_PN=AVI;DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=21D00000000000000000000000000000\">http://192.168.1.5:8096/videos/b72a45cd-1c1e-ced0-65db-27fa88f33d94/stream.avi?DeviceProfileId=d9373277a1cc489c9a867c33f3b73a09&amp;amp;DeviceId=test&amp;amp;MediaSourceId=b72a45cd1c1eced065db27fa88f33d94&amp;amp;Static=true&amp;amp;VideoCodec=mpeg4&amp;amp;AudioCodec=mp3&amp;amp;AudioStreamIndex=1&amp;amp;Tag=ba11705917e0a414525bf8bc820b9a2c&amp;amp;dlnaheaders=true&lt;/res&gt;&lt;upnp:albumArtURI dlna:profileID=\"JPEG_SM\">http://192.168.1.5:8096/Items/b72a45cd1c1eced065db27fa88f33d94/Images/Primary/0/03e271afe3db1f00fd877a9518730918/jpg/480/480/0/0&lt;/upnp:albumArtURI&gt;&lt;upnp:icon&gt;http://192.168.1.5:8096/Items/b72a45cd1c1eced065db27fa88f33d94/Images/Primary/0/03e271afe3db1f00fd877a9518730918/jpg/48/48/0/0&lt;/upnp:icon&gt;&lt;/item&gt;&lt;item restricted=\"1\" id=\"e704208811420e0b767253e6406931f5\" parentID=\"movies_f137a2dd21bbc1b99aa5c0f6bf02a805\"><

My profile is applied to my device:

[2023-05-28 22:22:52.417 +02:00] [DBG] [25] Emby.Dlna.Main.DlnaEntryPoint: Attempting to create PlayToController from location http://192.168.1.193:42300/description.xml [2023-05-28 22:22:52.568 +02:00] [DBG] [51] Emby.Dlna.Main.DlnaEntryPoint: Dlna Device.Start [2023-05-28 22:22:52.581 +02:00] [DBG] [51] Emby.Dlna.DlnaManager: Found matching device profile: "Décodeur TV UHD" [2023-05-28 22:22:52.584 +02:00] [INF] [51] Emby.Dlna.Main.DlnaEntryPoint: DLNA Session created for "Décodeur TV UHD" - "SoftAtHome Media Renderer"

I see an error on GetCurrentConnectionIDs reception:

[2023-05-28 22:23:03.814 +02:00] [DBG] [99] Emby.Dlna.ConnectionManager.ConnectionManagerService: Received control request "GetCurrentConnectionIDs", params: [] [2023-05-28 22:23:03.816 +02:00] [ERR] [99] Emby.Dlna.ConnectionManager.ConnectionManagerService: Error processing control request MediaBrowser.Common.Extensions.ResourceNotFoundException: Unexpected control request name: GetCurrentConnectionIDs at Emby.Dlna.ConnectionManager.ControlHandler.WriteResult(String methodName, IReadOnlyDictionary`2 methodParams, XmlWriter xmlWriter) at Emby.Dlna.Service.BaseControlHandler.CreateControlResponse(ControlRequestInfo requestInfo) at Emby.Dlna.Service.BaseControlHandler.ProcessControlRequestInternalAsync(ControlRequest request) at Emby.Dlna.Service.BaseControlHandler.ProcessControlRequestAsync(ControlRequest request)

On movie listing:

[2023-05-28 22:23:25.437 +02:00] [DBG] [84] Emby.Dlna.ContentDirectory.ContentDirectoryService: Received control request "Browse", params: [("ObjectID": "movies_f137a2dd21bbc1b99aa5c0f6bf02a805"), ("BrowseFlag": "BrowseDirectChildren"), ("Filter": "*"), ("StartingIndex": "0"), ("RequestedCount": "20"), ("SortCriteria": "+upnp:class,+dc:title")] [2023-05-28 22:23:25.749 +02:00] [DBG] [84] Emby.Dlna.ContentDirectory.ContentDirectoryService: Profile: "Generic Device", Path: "/data/movies/xxx.avi", isEligibleForDirectPlay: True, isEligibleForDirectStream: True [2023-05-28 22:23:25.925 +02:00] [DBG] [84] Emby.Dlna.ContentDirectory.ContentDirectoryService: DirectPlay Result for Profile: "Generic Device", Path: "/data/movies/xxx.avi", PlayMethod: DirectPlay, AudioStreamIndex: 1, SubtitleStreamIndex: null, Reasons: 0 [2023-05-28 22:23:26.039 +02:00] [INF] [84] Emby.Dlna.ContentDirectory.ContentDirectoryService: StreamBuilder.BuildVideoItem( Profile="Generic Device", Path="/data/movies/xxx.avi", AudioStreamIndex=null, SubtitleStreamIndex=null ) => ( PlayMethod=DirectPlay, TranscodeReason=0 ) "media:/videos/b72a45cd-1c1e-ced0-65db-27fa88f33d94/stream.avi?MediaSourceId=b72a45cd1c1eced065db27fa88f33d94&Static=true&VideoCodec=mpeg4&AudioCodec=mp3&AudioStreamIndex=1&api_key=&Tag=ba11705917e0a414525bf8bc820b9a2c" [2023-05-28 22:23:26.140 +02:00] [DBG] [84] Emby.Dlna.ContentDirectory.ContentDirectoryService: Profile: "Generic Device", Path: "/data/movies/xxx.avi", isEligibleForDirectPlay: True, isEligibleForDirectStream: True

Reno4212 commented 11 months ago

I had the same problem.

The following patch (based on 10.8.10) resolve the issue. Didn't noticed any side effect.

--- a/Jellyfin.Api/Helpers/StreamingHelpers.cs
+++ b/Jellyfin.Api/Helpers/StreamingHelpers.cs
@@ -240,9 +240,20 @@ namespace Jellyfin.Api.Helpers

             ApplyDeviceProfileSettings(state, dlnaManager, deviceManager, httpRequest, streamingRequest.DeviceProfileId, streamingRequest.Static);

             var ext = string.IsNullOrWhiteSpace(state.OutputContainer)
                 ? GetOutputFileExtension(state, mediaSource)
                 : ("." + state.OutputContainer);
+            ext = ext.AsSpan().LeftPart('?').ToString();

             state.OutputFilePath = GetOutputFilePath(state, ext!, serverConfigurationManager, streamingRequest.DeviceId, streamingRequest.PlaySessionId);
Diveenn commented 8 months ago

@Reno4212 could you submit a PR with your patch please ?

aubierr commented 6 months ago

Will the solution be integrated?