Jump to content

MediaInfo For Emby Plugin(HDR, Vision, Atmos, DTS:X)


Cheesegeezer

Recommended Posts

Cheesegeezer
14 hours ago, lorac said:

Will the plugin be updated to allow the new versions of mediainfo w/o the override? I know there were a couple versions that had issues but I haven't seen any problems with the changed metadata using 22.12 version.

MediaInfo isnt version managed in the plugin its its only mkvtoolnix that is has a version check, because that is the culprit for the issues as it writes the title to the header. MediaInfo is only used to read and interrogate the media files.

 

  • Like 1
Link to comment
Share on other sites

rbjtech

Hi Dave - @Cheesegeezer while I remember the files - these are two examples of 4K HDR that does not have the HDR Description in a mediaInfo scan.

As you can see - this is HDR, but the Plugin doesn't label it as such as it's missing the 'HDR format' field.

{
"@type": "Video",
"StreamOrder": "0",
"ID": "1",
"UniqueID": "3602958628662373885",
"Format": "HEVC",
"Format_Profile": "Main 10",
"Format_Level": "5",
"Format_Tier": "Main",
"CodecID": "V_MPEGH/ISO/HEVC",
"Duration": "3111.901000000",
"BitRate": "22055250",
"Width": "3840",
"Height": "2160",
"Sampled_Width": "3840",
"Sampled_Height": "2160",
"PixelAspectRatio": "1.000",
"DisplayAspectRatio": "1.778",
"FrameRate_Mode": "CFR",
"FrameRate": "23.976",
"FrameCount": "74611",
"ColorSpace": "YUV",
"ChromaSubsampling": "4:2:0",
"BitDepth": "10",
"Delay": "0.000",
"StreamSize": "8579219376",
"Title": "UHD  [22.1Mb/s]",
"Encoded_Library": "x265 - 3.4:[Linux][GCC 7.5.0][64 bit] 10bit",
"Encoded_Library_Name": "x265",
"Encoded_Library_Version": "3.4:[Linux][GCC 7.5.0][64 bit] 10bit",
"Encoded_Library_Settings": "cpuid=1111039 / frame-threads=1 / wpp / no-pmode / no-pme / no-psnr / no-ssim / log-level=2 / input-csp=1 / input-res=3840x2160 / interlace=0 / total-frames=0 / level-idc=50 / high-tier=0 / uhd-bd=0 / ref=3 / no-allow-non-conformance / repeat-headers / annexb / no-aud / no-hrd / info / hash=0 / no-temporal-layers / no-open-gop / min-keyint=48 / keyint=48 / gop-lookahead=0 / bframes=2 / b-adapt=0 / b-pyramid / bframe-bias=0 / rc-lookahead=48 / lookahead-slices=8 / scenecut=0 / hist-scenecut=0 / radl=0 / no-splice / no-intra-refresh / ctu=32 / min-cu-size=8 / no-rect / no-amp / max-tu-size=16 / tu-inter-depth=2 / tu-intra-depth=2 / limit-tu=0 / rdoq-level=1 / dynamic-rd=0.00 / no-ssim-rd / signhide / no-tskip / nr-intra=0 / nr-inter=0 / no-constrained-intra / no-strong-intra-smoothing / max-merge=3 / limit-refs=1 / no-limit-modes / me=1 / subme=2 / merange=44 / temporal-mvp / no-frame-dup / no-hme / weightp / no-weightb / no-analyze-src-pics / deblock=0:0 / no-sao / no-sao-non-deblock / rd=4 / selective-sao=0 / early-skip / rskip / no-fast-intra / no-tskip-fast / no-cu-lossless / b-intra / no-splitrd-skip / rdpenalty=1 / psy-rd=1.60 / psy-rdoq=5.00 / no-rd-refine / no-lossless / cbqpoffs=0 / crqpoffs=0 / rc=abr / bitrate=23000 / qcomp=0.75 / qpstep=4 / stats-write=0 / stats-read=0 / vbv-maxrate=25000 / vbv-bufsize=25000 / vbv-init=0.9 / ipratio=1.40 / pbratio=1.30 / aq-mode=3 / aq-strength=1.00 / no-cutree / zone-count=0 / no-strict-cbr / qg-size=32 / no-rc-grain / qpmax=69 / qpmin=0 / no-const-vbv / sar=1 / overscan=0 / videoformat=5 / range=0 / colorprim=9 / transfer=16 / colormatrix=9 / chromaloc=0 / display-window=0 / cll=0,0 / min-luma=0 / max-luma=1023 / log2-max-poc-lsb=8 / vui-timing-info / vui-hrd-info / slices=1 / no-opt-qp-pps / no-opt-ref-list-length-pps / no-multi-pass-opt-rps / scenecut-bias=0.00 / hist-threshold=0.01 / no-opt-cu-delta-qp / no-aq-motion / no-hdr10 / hdr10-opt / no-dhdr10-opt / no-idr-recovery-sei / analysis-reuse-level=0 / analysis-save-reuse-level=0 / analysis-load-reuse-level=0 / scale-factor=0 / refine-intra=0 / refine-inter=0 / refine-mv=1 / refine-ctu-distortion=0 / no-limit-sao / ctu-info=0 / no-lowpass-dct / refine-analysis-type=0 / copy-pic=1 / max-ausize-factor=1.0 / no-dynamic-refine / no-single-sei / no-hevc-aq / no-svt / no-field / qp-adaptation-range=1.00 / no-scenecut-aware-qpconformance-window-offsets / right=0 / bottom=0",
"Default": "Yes",
"Forced": "No",
"colour_description_present": "Yes",
"colour_description_present_Source": "Stream",
"colour_range": "Limited",
"colour_range_Source": "Stream",
"colour_primaries": "BT.2020",
"colour_primaries_Source": "Stream",
"transfer_characteristics": "PQ",
"transfer_characteristics_Source": "Stream",
"matrix_coefficients": "BT.2020 non-constant",
"matrix_coefficients_Source": "Stream"
},

This one is fine -

{
"@type": "Video",
"StreamOrder": "0",
"ID": "1",
"UniqueID": "9487121700851483956",
"Format": "HEVC",
"Format_Profile": "Main 10",
"Format_Level": "5",
"Format_Tier": "High",
"HDR_Format": "SMPTE ST 2086",
"HDR_Format_Compatibility": "HDR10",
"CodecID": "V_MPEGH/ISO/HEVC",
"Width": "3840",
"Height": "2160",
"Sampled_Width": "3840",
"Sampled_Height": "2160",
"PixelAspectRatio": "1.000",
"DisplayAspectRatio": "1.778",
"FrameRate_Mode": "VFR",
"FrameRate_Original": "24.000",
"ColorSpace": "YUV",
"ChromaSubsampling": "4:2:0",
"BitDepth": "10",
"Delay": "0.000",
"Title": "UHD HDR10 [13.7Mb/s]",
"Default": "Yes",
"Forced": "No",
"colour_description_present": "Yes",
"colour_description_present_Source": "Container / Stream",
"colour_range": "Limited",
"colour_range_Source": "Container / Stream",
"colour_primaries": "BT.2020",
"colour_primaries_Source": "Container / Stream",
"transfer_characteristics": "PQ",
"transfer_characteristics_Source": "Container / Stream",
"matrix_coefficients": "BT.2020 non-constant",
"matrix_coefficients_Source": "Container / Stream",
"MasteringDisplay_ColorPrimaries": "Display P3",
"MasteringDisplay_ColorPrimaries_Source": "Stream",
"MasteringDisplay_Luminance": "min: 0.0000 cd/m2, max: 1000 cd/m2",
"MasteringDisplay_Luminance_Source": "Stream"
},

My thoughts are to start with the 'colour_primaries' field (if BT.2020 then HDR) - and then update it again from there with the normal HDR description fields to add the detail.

Happy to have a bash at coding this update myself if you are ok with it ?....

 

Edited by rbjtech
Link to comment
Share on other sites

rbjtech

I think it's this (Capture HDR10 PQ Mode bit I added below) in MediaInfoScheduledTask.cs  ... gonna try it and see .. haha

//Dolby Vision/HDR 
                    string dolbyVisionOutput = "";
                    if (!string.IsNullOrEmpty(typeInfo.colour_primaries))
                    {
                        
                        if (typeInfo.colour_primaries == "BT.2020"  && typeInfo.transfer_characteristics != "HLG")
                            dolbyVisionOutput = FormatHelper.DolbyVisionOutput(typeInfo.HDR_Format, typeInfo.HDR_Format_Profile);
                        sb.Append(dolbyVisionOutput);
                        
                        // *** Capture HDR10 PQ Mode
                        
                        if (typeInfo.colour_primaries == "BT.2020"  && typeInfo.HDR_Format == "")
                        sb.Append("HDR10 PQ ");
                        
                        // *** End Capture HDR10 PQ Mode
                                                
                        if (typeInfo.colour_primaries == "BT.709" && typeInfo.Width == "3840")
                        {
                            sb.Append("SDR ");
                        }

                        if (typeInfo.transfer_characteristics == "HLG")
                        {
                            sb.Append("HLG ");
                        }
                    }

 

Edited by rbjtech
  • Like 1
Link to comment
Share on other sites

rbjtech

Damn - I must have used an older version (1.0.1.15) as emby just updated it again to 1.0.1.20 ..

Is that the latest version on your private repo on Github ? - last update was over 4 Month ago - so I don;t think it's the latest ?

Thanks Dave.

Link to comment
Share on other sites

Cheesegeezer
1 hour ago, rbjtech said:

I think it's this (Capture HDR10 PQ Mode bit I added below) in MediaInfoScheduledTask.cs  ... gonna try it and see .. haha

//Dolby Vision/HDR 
                    string dolbyVisionOutput = "";
                    if (!string.IsNullOrEmpty(typeInfo.colour_primaries))
                    {
                        
                        if (typeInfo.colour_primaries == "BT.2020"  && typeInfo.transfer_characteristics != "HLG")
                            dolbyVisionOutput = FormatHelper.DolbyVisionOutput(typeInfo.HDR_Format, typeInfo.HDR_Format_Profile);
                        sb.Append(dolbyVisionOutput);
                        
                        // *** Capture HDR10 PQ Mode
                        
                        if (typeInfo.colour_primaries == "BT.2020"  && typeInfo.HDR_Format == "")
                        sb.Append("HDR10 PQ ");
                        
                        // *** End Capture HDR10 PQ Mode
                                                
                        if (typeInfo.colour_primaries == "BT.709" && typeInfo.Width == "3840")
                        {
                            sb.Append("SDR ");
                        }

                        if (typeInfo.transfer_characteristics == "HLG")
                        {
                            sb.Append("HLG ");
                        }
                    }

 

Nice work Rich, did you compile and run a test? If it works, up the rev and I’ll update the master and post to catalog tomorrow 👍👍

Link to comment
Share on other sites

Cheesegeezer
Just now, rbjtech said:

Damn - I must have used an older version (1.0.1.15) as emby just updated it again to 1.0.1.20 ..

Is that the latest version on your private repo on Github ? - last update was over 4 Month ago - so I don;t think it's the latest ?

Thanks Dave.

Oh shoot, I’m tied up and been lazy with github pushes. I’ll get latest to git tomorrow pal

  • Thanks 1
Link to comment
Share on other sites

rbjtech
Just now, Cheesegeezer said:

Nice work Rich, did you compile and run a test? If it works, up the rev and I’ll update the master and post to catalog tomorrow 👍👍

It compiled ok - but it's on the old version 1.15 - and it's missing the 'per library' settings you added.

If you can update your github with the 1.20 - then I'll re-add and test .. :)

Thanks !

  • Like 1
Link to comment
Share on other sites

Andy2k

Hi, in case of an update...its possible to add mkvpropedit v72.x/v73.x to the whitelist in this version?

I still dont had any issue with this version of mkvpropedit...

Thanks

Edited by Andy2k
Link to comment
Share on other sites

rbjtech
1 minute ago, Andy2k said:

Hi, in case of an update...its possible to add mkvpropedit v73.x to the withelist in this version?

I still dont had any issue with this version of mkvpropedit...

Thanks

It's probably better if we just blacklist the one that caused issues - thoughts ?

Link to comment
Share on other sites

Cheesegeezer
16 hours ago, rbjtech said:

It's probably better if we just blacklist the one that caused issues - thoughts ?

Rich, i just pushed 1.0.1.22 to Github.  i will need to update the catalogue but if you want to implement and test those changes we were on about yesterday.

I created a worker branch for you

image.png.652bf9ace7985d589f9fdda572500197.png

 

And in VS just click on the repo (bottom right) and you will have to go to remotes and select yours.  Then you can push changes to your branch, and then create a pull request. I will merge yours to the master, if all looks good.

image.png.c250ecab24e26e8558da7182310b240d.png 

Link to comment
Share on other sites

rbjtech
1 minute ago, Cheesegeezer said:

Rich, i just pushed 1.0.1.22 to Github.  i will need to update the catalogue but if you want to implement and test those changes we were on about yesterday.

I created a worker branch for you

image.png.652bf9ace7985d589f9fdda572500197.png

 

And in VS just click on the repo (bottom right) and you will have to go to remotes and select yours.  Then you can push changes to your branch, and then create a pull request. I will merge yours to the master, if all looks good.

image.png.c250ecab24e26e8558da7182310b240d.png 

Perfect - thanks - I'll take a look shortly !

  • Like 1
Link to comment
Share on other sites

Cheesegeezer
16 hours ago, rbjtech said:

It's probably better if we just blacklist the one that caused issues - thoughts ?

 

16 hours ago, Andy2k said:

yeah thats all v71.x versions...

But what if they release a version that breaks media again (i'm sure they had no intentions to do that in 71 but a few folk had media destroyed and was unrecoverable)

it's a pain in the ass... i know!!! and all we are doing is writing a header, not even remuxing or anything like that, but not everyone is savvy enough to test first.

 

Link to comment
Share on other sites

rbjtech
2 minutes ago, Cheesegeezer said:

 

But what if they release a version that breaks media again (i'm sure they had no intentions to do that in 71 but a few folk had media destroyed and was unrecoverable)

it's a pain in the ass... i know!!! and all we are doing is writing a header, not even remuxing or anything like that, but not everyone is savvy enough to test first.

 

Fair point - I guess we need to play safe and rather it not work than potentially destroy the MKV's due to something outside of our control  ... :)

  • Agree 1
Link to comment
Share on other sites

neik
3 hours ago, spongebob69 said:

Should this plugin works also for mp4 files?

I might be mistaken but mkvtoolnix does work with mkv only.

  • Thanks 1
Link to comment
Share on other sites

Cheesegeezer
4 hours ago, spongebob69 said:

Should this plugin works also for mp4 files?

No… mp4’s require remux via ffmpeg and can’t write just to headers, so decision was made to leave them out the mix, it opens possibilities of file corruption.

1 hour ago, neik said:

I might be mistaken but mkvtoolnix does work with mkv only.

💯 correct ma man!!

Link to comment
Share on other sites

rbjtech

Cheese and I spend a bit of time investigating the use of MP4's - but in short, they are nowhere near as flexible as MKV's and while 'some' aspects of MP4's can be header modified, track titles (what we want) cannot.   Thus MKV's only.

Link to comment
Share on other sites

MAX92

Hello Everyone,

I need some help.My server is on Synology. I install MediaInfo and MKVToolNix packages.

But I don't knaow what I have to set in this option

- MediaInfoCLI File Path

- MKVPropEdit File Path

image.png.c479f6e17b5fb883bc2ce06cd72ba80e.png

Who can help me ? I don't see it in the wiki Various OS Installation Help · Cheesegeezer/MediaInfoWiki Wiki · GitHub

Thanks

Edited by MAX92
Link to comment
Share on other sites

Cheesegeezer

Synology is included in the wiki. @FrostByte wrote it. 
 

but you just need to select the mediainfo and mkvtoolnix files you downloaded in the relevant fields. Click on the search icon and it will give you a filepicker

Link to comment
Share on other sites

Eigeplackter

Under synology you need to connect to it via ssh and the plugins folder is located under:

/var/packages/EmbyServer/var/plugins

 

You need to copy the dll to that directory and restart your emby server

  • Like 1
Link to comment
Share on other sites

Teddyknuddel
43 minutes ago, MAX92 said:

And I don't know where are the files on my Synology.

MediaInfoCLI File Path:
/volume1/@appstore/mediainfo/bin/mediainfo

MKVPropEdit File Path
/volume1/@appstore/mkvtoolnix/bin/mkvpropedit

Provided that these two parts are also installed:

image.png.e67ce94bcd2207f4b6e9920819e4bee2.png

image.png.2886da2a5dff99a3457c1219bc9319f7.png

  • Thanks 3
Link to comment
Share on other sites

rbjtech
1 minute ago, Teddyknuddel said:

MediaInfoCLI File Path:
/volume1/@appstore/mediainfo/bin/mediainfo

MKVPropEdit File Path
/volume1/@appstore/mkvtoolnix/bin/mkvpropedit

Provided that these two parts are also installed:

image.png.e67ce94bcd2207f4b6e9920819e4bee2.png

image.png.2886da2a5dff99a3457c1219bc9319f7.png

I've added this to the Wiki to help others - thanks for the Info !

  • Like 2
  • Thanks 1
Link to comment
Share on other sites

Teddyknuddel

What will actually become of MediaInfo for Emby when Dolby Vision info is integrated in the new server version 4.8?

Because I think it's cool if I can see in advance that the faulty DV5 has been loaded, then I can correct it in advance.

Edited by Teddyknuddel
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...