Jump to content

Profile for LG TV from 2012


slavd

Recommended Posts

Hello,

I have an old LG TV (47LM670S-ZA) which I keep in order to watch 3D movies on it.

However the "Generic Device" DLNA profile does not fit well with it. I would like to create a custom one, that will:

1. Downmix all audio to stereo (otherwise the TV does not, and some of the channels are not played, which results in loss of audio for background music, special effects or speech)

2. Allow me to control the TV from the app, right now any attempt for control leads to an exception in the logs. For example:

2019-09-09 12:12:23.335 Error HttpServer: Error processing request
	*** Error Report ***
	Version: 4.2.1.0
	Command line: /volume1/@appstore/EmbyServer/releases/4.2.1.0/EmbyServer.dll -package synology -programdata /var/packages/EmbyServer/target/var -ffmpeg /var/packages/EmbyServer/target/ffmpeg/bin/ffmpeg -ffprobe /var/packages/EmbyServer/target/ffmpeg/bin/ffprobe -ffdetect /var/packages/EmbyServer/target/ffmpeg/bin/ffdetect -restartexitcode 121 -ignore_vaapi_enabled_flag
	Operating system: Unix 3.10.105.0
	64-Bit OS: True
	64-Bit Process: True
	User Interactive: True
	Runtime: file:///volume1/@appstore/EmbyServer/3rdparty/netcore/2.2.1/runtime/System.Private.CoreLib.dll
	Processor count: 2
	Program data path: /var/packages/EmbyServer/target/var
	Application directory: /volume1/@appstore/EmbyServer/releases/4.2.1.0
	MediaBrowser.Model.Net.HttpException: MediaBrowser.Model.Net.HttpException: Connection to http://192.168.10.120:37904/upnp/control/AVTransport1 timed out ---> System.Threading.Tasks.TaskCanceledException: The operation was canceled. ---> System.IO.IOException: Unable to read data from the transport connection: Operation canceled. ---> System.Net.Sockets.SocketException: Operation canceled
	   --- End of inner exception stack trace ---
	   at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error) in /source/corefx/src/System.Net.Sockets/src/System/Net/Sockets/Socket.Tasks.cs:line 1088
	   at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.GetResult(Int16 token) in /source/corefx/src/System.Net.Sockets/src/System/Net/Sockets/Socket.Tasks.cs:line 1062
	   at System.Net.Http.HttpConnection.FillAsync() in /source/corefx/src/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/HttpConnection.cs:line 1326
	   at System.Net.Http.HttpConnection.ReadNextResponseHeaderLineAsync(Boolean foldedHeadersAllowed) in /source/corefx/src/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/HttpConnection.cs:line 1278
	   at System.Net.Http.HttpConnection.SendAsyncCore(HttpRequestMessage request, CancellationToken cancellationToken) in /source/corefx/src/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/HttpConnection.cs:line 530
	   --- End of inner exception stack trace ---
	   at System.Net.Http.HttpConnection.SendAsyncCore(HttpRequestMessage request, CancellationToken cancellationToken) in /source/corefx/src/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/HttpConnection.cs:line 710
	   at System.Net.Http.HttpConnectionPool.SendWithNtConnectionAuthAsync(HttpConnection connection, HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken) in /source/corefx/src/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/HttpConnectionPool.cs:line 316
	   at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken) in /source/corefx/src/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/HttpConnectionPool.cs:line 296
	   at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) in /source/corefx/src/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/RedirectHandler.cs:line 32
	   at System.Net.Http.DecompressionHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) in /source/corefx/src/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/DecompressionHandler.cs:line 48
	   at System.Net.Http.HttpClient.FinishSendAsyncUnbuffered(Task`1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts) in /source/corefx/src/System.Net.Http/src/System/Net/Http/HttpClient.cs:line 511
	   at Emby.Server.Implementations.HttpClientManager.CoreHttpClientManager.SendAsyncInternal(HttpRequestOptions options, String httpMethod)
	   --- End of inner exception stack trace ---
	   at Emby.Server.Implementations.HttpClientManager.CoreHttpClientManager.SendAsyncInternal(HttpRequestOptions options, String httpMethod)
	   at Emby.Server.Implementations.HttpClientManager.CoreHttpClientManager.SendAsync(HttpRequestOptions options, String httpMethod)
	   at Emby.Dlna.PlayTo.SsdpHttpClient.SendCommandAsync(String baseUrl, DeviceService service, String command, ReadOnlyMemory`1 postData, CancellationToken cancellationToken, Boolean logRequest, String header)
	   at Emby.Dlna.PlayTo.Device.SetAvTransport(String url, String header, String metaData, CancellationToken cancellationToken)
	   at Emby.Dlna.PlayTo.PlayToController.SetPlaylistIndex(Int32 index, CancellationToken cancellationToken)
	   at Emby.Server.Implementations.Session.SessionManager.SendMessageToSession[T](SessionInfo session, ReadOnlyMemory`1 name, T data, CancellationToken cancellationToken)
	   at Emby.Server.Implementations.Session.SessionManager.SendPlayCommand(String controllingSessionId, String sessionId, PlayRequest command, 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 host, ReadOnlyMemory`1 localPath, CancellationToken cancellationToken)
	Source: Emby.Server.Implementations
	TargetSite: Void MoveNext()
	InnerException: System.Threading.Tasks.TaskCanceledException: The operation was canceled.
	Source: System.Net.Http
	TargetSite: Void MoveNext()
	   at System.Net.Http.HttpConnection.SendAsyncCore(HttpRequestMessage request, CancellationToken cancellationToken) in /source/corefx/src/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/HttpConnection.cs:line 710
	   at System.Net.Http.HttpConnectionPool.SendWithNtConnectionAuthAsync(HttpConnection connection, HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken) in /source/corefx/src/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/HttpConnectionPool.cs:line 316
	   at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken) in /source/corefx/src/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/HttpConnectionPool.cs:line 296
	   at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) in /source/corefx/src/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/RedirectHandler.cs:line 32
	   at System.Net.Http.DecompressionHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) in /source/corefx/src/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/DecompressionHandler.cs:line 48
	   at System.Net.Http.HttpClient.FinishSendAsyncUnbuffered(Task`1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts) in /source/corefx/src/System.Net.Http/src/System/Net/Http/HttpClient.cs:line 511
	   at Emby.Server.Implementations.HttpClientManager.CoreHttpClientManager.SendAsyncInternal(HttpRequestOptions options, String httpMethod)
	InnerException: System.IO.IOException: Unable to read data from the transport connection: Operation canceled.
	Source: System.Net.Sockets
	TargetSite: Void ThrowException(System.Net.Sockets.SocketError)
	   at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error) in /source/corefx/src/System.Net.Sockets/src/System/Net/Sockets/Socket.Tasks.cs:line 1088
	   at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.GetResult(Int16 token) in /source/corefx/src/System.Net.Sockets/src/System/Net/Sockets/Socket.Tasks.cs:line 1062
	   at System.Net.Http.HttpConnection.FillAsync() in /source/corefx/src/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/HttpConnection.cs:line 1326
	   at System.Net.Http.HttpConnection.ReadNextResponseHeaderLineAsync(Boolean foldedHeadersAllowed) in /source/corefx/src/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/HttpConnection.cs:line 1278
	   at System.Net.Http.HttpConnection.SendAsyncCore(HttpRequestMessage request, CancellationToken cancellationToken) in /source/corefx/src/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/HttpConnection.cs:line 530
	InnerException: System.Net.Sockets.SocketException: Operation canceled
	Source: 
	TargetSite: 

3. Allow me to play subtitles

 

I do not mind setting the profile as default, since I only use DLNA for this device.

 

Here is my profile so far:

<?xml version="1.0"?>
<Profile xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Name>Generic</Name>
  <Identification>
    <FriendlyName />
    <ModelNumber />
    <SerialNumber />
    <ModelName />
    <DeviceDescription />
    <ModelUrl />
    <Manufacturer />
    <ManufacturerUrl />
    <Headers />
  </Identification>
  <FriendlyName />
  <Manufacturer>Emby</Manufacturer>
  <ManufacturerUrl>https://emby.media</ManufacturerUrl>
  <ModelName>Emby Server</ModelName>
  <ModelNumber>01</ModelNumber>
  <ModelUrl>https://emby.media</ModelUrl>
  <SerialNumber />
  <EnableAlbumArtInDidl>false</EnableAlbumArtInDidl>
  <EnableSingleAlbumArtLimit>false</EnableSingleAlbumArtLimit>
  <EnableSingleSubtitleLimit>false</EnableSingleSubtitleLimit>
  <SupportedMediaTypes>Audio,Photo,Video</SupportedMediaTypes>
  <UserId />
  <AlbumArtPn>JPEG_SM</AlbumArtPn>
  <MaxAlbumArtWidth>480</MaxAlbumArtWidth>
  <MaxAlbumArtHeight>480</MaxAlbumArtHeight>
  <MaxIconWidth>48</MaxIconWidth>
  <MaxIconHeight>48</MaxIconHeight>
  <MaxStreamingBitrate>140000000</MaxStreamingBitrate>
  <MaxStaticBitrate>140000000</MaxStaticBitrate>
  <MusicStreamingTranscodingBitrate>192000</MusicStreamingTranscodingBitrate>
  <MaxStaticMusicBitrate xsi:nil="true" />
  <SonyAggregationFlags />
  <ProtocolInfo>http-get:*:video/mpeg:*,http-get:*:video/mp4:*,http-get:*:video/vnd.dlna.mpeg-tts:*,http-get:*:video/avi:*,http-get:*:video/x-matroska:*,http-get:*:video/x-ms-wmv:*,http-get:*:video/wtv:*,http-get:*:audio/mpeg:*,http-get:*:audio/mp3:*,http-get:*:audio/mp4:*,http-get:*:audio/x-ms-wma*,http-get:*:audio/wav:*,http-get:*:audio/L16:*,http-get:*image/jpeg:*,http-get:*image/png:*,http-get:*image/gif:*,http-get:*image/tiff:*</ProtocolInfo>
  <TimelineOffsetSeconds>0</TimelineOffsetSeconds>
  <RequiresPlainVideoItems>false</RequiresPlainVideoItems>
  <RequiresPlainFolders>false</RequiresPlainFolders>
  <IgnoreTranscodeByteRangeRequests>false</IgnoreTranscodeByteRangeRequests>
  <XmlRootAttributes />
  <DirectPlayProfiles>
    <DirectPlayProfile container="" type="Video" />
    <DirectPlayProfile container="" type="Audio" />
  </DirectPlayProfiles>
  <TranscodingProfiles>
    <TranscodingProfile container="mp3" type="Audio" audioCodec="mp3" estimateContentLength="false" enableMpegtsM2TsMode="false" transcodeSeekInfo="Auto" copyTimestamps="false" context="Streaming" minSegments="0" segmentLength="0" breakOnNonKeyFrames="false" />
    <TranscodingProfile container="ts" type="Video" videoCodec="h264" audioCodec="aac" estimateContentLength="false" enableMpegtsM2TsMode="false" transcodeSeekInfo="Auto" copyTimestamps="false" context="Streaming" minSegments="0" segmentLength="0" breakOnNonKeyFrames="false" />
    <TranscodingProfile container="jpeg" type="Photo" estimateContentLength="false" enableMpegtsM2TsMode="false" transcodeSeekInfo="Auto" copyTimestamps="false" context="Streaming" minSegments="0" segmentLength="0" breakOnNonKeyFrames="false" />
  </TranscodingProfiles>
  <ContainerProfiles />
  <CodecProfiles>
    <CodecProfile type="VideoAudio" codec="">
      <Conditions>
        <ProfileCondition condition="LessThanEqual" property="AudioChannels" value="2" isRequired="true" />
      </Conditions>
      <ApplyConditions />
    </CodecProfile>
  </CodecProfiles>
  <ResponseProfiles>
    <ResponseProfile container="m4v" type="Video" mimeType="video/mp4">
      <Conditions />
    </ResponseProfile>
  </ResponseProfiles>
  <SubtitleProfiles>
    <SubtitleProfile format="srt" method="External" />
    <SubtitleProfile format="sub" method="External" />
    <SubtitleProfile format="srt" method="Embed" />
    <SubtitleProfile format="ass" method="Embed" />
    <SubtitleProfile format="ssa" method="Embed" />
    <SubtitleProfile format="smi" method="Embed" />
    <SubtitleProfile format="dvdsub" method="Embed" />
    <SubtitleProfile format="pgs" method="Embed" />
    <SubtitleProfile format="pgssub" method="Embed" />
    <SubtitleProfile format="sub" method="Embed" />
    <SubtitleProfile format="subrip" method="Embed" />
    <SubtitleProfile format="vtt" method="Embed" />
  </SubtitleProfiles>
</Profile>

I tried using this topic to set the downmix for the audio, but it is either old and not relevant anymore, or I misunderstood how to setup the profile.

 

 

 

Thank you for your time!

Edited by slavd
Link to comment
Share on other sites

  • 4 weeks later...

Hi @@slavd, that looks like a good start. have you tried playing directly from the LG?

Yes, playing directly from a USB down mixes the channels to stereo, however this does not happen over DLNA. I tried to look for a setting on the TV player, but did not find a nything

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...