Dolby Vision now possible through MP4 Mux.

Please post here for issues related to UHD discs
yusesope
Posts: 221
Joined: Sun Jul 28, 2019 3:34 am

Re: Dolby Vision now possible through MP4 Mux.

Post by yusesope »

Arbigator wrote:
Mon Mar 09, 2020 5:43 pm
..."OSError: [WinError 123] The filename, directory name or syntax is incorrect"....
the problem is represented by the spaces present in the file name and in the name of the folder hosting my program.

To work around the problem:
  • download Notepad ++ (HERE)
  • Unpack the archive
  • start notepad ++. exe
  • Open (in notepad ++) the "bl_el_rpu_builder.py" file inside the "src" folder of my program
  • Scroll down to lines 295 and 296 and edit them (bottom image) by adding to both the string:

    Code: Select all

    .replace("\"","")
  • Save your changes and close Notepad ++
  • Start my program normally.
Image



box4m wrote:
Mon Mar 09, 2020 4:36 pm

Code: Select all

Exception in thread Thread-1:LYSIS: 91.1%     BL_EL_RPU WRITING: 89.9%
Traceback (most recent call last):
  File "D:\bl_el_rpu_builder_v0.0.2\python-3.7.6.amd64\lib\threading.py", line 926, in _bootstrap_inner
    self.run()
  File "src\bl_el_rpu_builder.py", line 188, in run
    self.read()
  File "src\bl_el_rpu_builder.py", line 174, in read
    self.get_nal_info(mm,length,global_offset)
  File "src\bl_el_rpu_builder.py", line 149, in get_nal_info
    nal_type = self.get_nal_type(mmap_obj[(nal_offset + 3):(nal_offset + 5)])
  File "src\bl_el_rpu_builder.py", line 139, in get_nal_type
    nuh_layer_id = b_stream.read('uint:6')
  File "D:\bl_el_rpu_builder_v0.0.2\python-3.7.6.amd64\lib\site-packages\bitstring.py", line 3902, in read
    value, self._pos = self._readtoken(name, self._pos, length)
  File "D:\bl_el_rpu_builder_v0.0.2\python-3.7.6.amd64\lib\site-packages\bitstring.py", line 2016, in _readtoken
    "Tried to read {0} bits when only {1} available.".format(int(length), self.length - pos))
bitstring.ReadError: Reading off the end of the data. Tried to read 6 bits when only 1 available.
BL ANALYSIS: 89.7%     EL ANALYSIS: 91.1%     BL_EL_RPU WRITING: 89.9%
Exception in thread Thread-2:LYSIS: 91.3%     BL_EL_RPU WRITING: 90.1%
Traceback (most recent call last):
  File "D:\bl_el_rpu_builder_v0.0.2\python-3.7.6.amd64\lib\threading.py", line 926, in _bootstrap_inner
    self.run()
  File "src\bl_el_rpu_builder.py", line 188, in run
    self.read()
  File "src\bl_el_rpu_builder.py", line 174, in read
    self.get_nal_info(mm,length,global_offset)
  File "src\bl_el_rpu_builder.py", line 149, in get_nal_info
    nal_type = self.get_nal_type(mmap_obj[(nal_offset + 3):(nal_offset + 5)])
  File "src\bl_el_rpu_builder.py", line 139, in get_nal_type
    nuh_layer_id = b_stream.read('uint:6')
  File "D:\bl_el_rpu_builder_v0.0.2\python-3.7.6.amd64\lib\site-packages\bitstring.py", line 3902, in read
    value, self._pos = self._readtoken(name, self._pos, length)
  File "D:\bl_el_rpu_builder_v0.0.2\python-3.7.6.amd64\lib\site-packages\bitstring.py", line 2016, in _readtoken
    "Tried to read {0} bits when only {1} available.".format(int(length), self.length - pos))
bitstring.ReadError: Reading off the end of the data. Tried to read 6 bits when only 1 available.
BL ANALYSIS: 89.8%     EL ANALYSIS: 91.3%     BL_EL_RPU WRITING: 90.1%
BL ANALYSIS: 100.0%    EL ANALYSIS: 100.0%    BL_EL_RPU WRITING: 100.0%

ELAPSED TIME: 341.4 seconds
Press a button to exit
Another user had a similar problem: take a look HERE (end of the post)
Arbigator
Posts: 32
Joined: Fri Feb 28, 2020 9:16 pm

Re: Dolby Vision now possible through MP4 Mux.

Post by Arbigator »

That worked, thank you!

However, after muxing to .ts I'm still only able to get playback in HDR on the 2019 Shield with Plex and on my B9, the dolby vision flag never popped up.
shawnc22
Posts: 637
Joined: Tue Jan 21, 2020 7:40 am

Re: Dolby Vision now possible through MP4 Mux.

Post by shawnc22 »

Arbigator wrote:
Mon Mar 09, 2020 10:04 pm
That worked, thank you!

However, after muxing to .ts I'm still only able to get playback in HDR on the 2019 Shield with Plex and on my B9, the dolby vision flag never popped up.
I had this issue earlier, and it was because my Plex app wasn't up to date on the Shield. Even though I had auto updates on, I had to go into the play store and manually search for the Plex app to update. The updated app includes the new exoplayer that should now support DV videos.
Arbigator
Posts: 32
Joined: Fri Feb 28, 2020 9:16 pm

Re: Dolby Vision now possible through MP4 Mux.

Post by Arbigator »

shawnc22 wrote:
Mon Mar 09, 2020 10:08 pm
Arbigator wrote:
Mon Mar 09, 2020 10:04 pm
That worked, thank you!

However, after muxing to .ts I'm still only able to get playback in HDR on the 2019 Shield with Plex and on my B9, the dolby vision flag never popped up.
I had this issue earlier, and it was because my Plex app wasn't up to date on the Shield. Even though I had auto updates on, I had to go into the play store and manually search for the Plex app to update. The updated app includes the new exoplayer that should now support DV videos.
There was an update, but unfortunately that didn't fix it... I'm going to try another movie and see what happens
baker99
Posts: 84
Joined: Wed Oct 30, 2019 7:05 pm

Re: Dolby Vision now possible through MP4 Mux.

Post by baker99 »

mattmarsden wrote:
Mon Mar 09, 2020 2:03 pm
I've just test Power Rangers single layer on my Shield versus the DL player on my LG C9 and you can see that the Dolby vision data is being ignored when looking at the end credits. On the DL version they are bright white but on the single layer they are grey just like the standard HDR version unfortunately.
That's concerning, was it a SL with EL+BL+RPU or just BL+RPU? Also mp4 or ts?
smartrobot
Posts: 4
Joined: Sun Oct 28, 2018 9:44 pm

Re: Dolby Vision now possible through MP4 Mux.

Post by smartrobot »

@yusesope I think I found my issue from a few posts ago
The tool always seemed to fail at 99% for both the BL and EL Layers

With the error "Reading off the end of the data. Tried to read 6 bits when only 1 available"
and fails at "BL ANALYSIS: 99.0% EL ANALYSIS: 98.8% BL_EL_RPU WRITING: 99.0%"

The issue was not the path like the other user were having.
The error was definitely occurring due to issues with my input files

When examining the BL and EL layers in a Hex editor the last line always was not complete.

BL Layer
Image

EL Layer
Image

When I fill the empty bytes with 00 on the last lines

BL Layer
Image

EL Layer
Image

Everything worked perfectly
Image
deadchip12
Posts: 206
Joined: Thu May 02, 2019 2:49 am

Re: Dolby Vision now possible through MP4 Mux.

Post by deadchip12 »

ATD555 wrote:
Mon Mar 09, 2020 4:27 pm
deadchip12 wrote:
Mon Mar 09, 2020 11:25 am
Could someone pls summarize what has just been discussed in the last couple of pages? Is there a new method of muxing dolby vision? What are the advantages over the original method in the 1st page? Thanks.
I will try my best.

The method at the beginning of this thread was either using DVDFab or two HEVCs from the video and remuxing it into an MP4 container using Dolby's remuxer. Users reported that DVDFab coloring was incorrect but there was really no choice if they wanted to play Dolby Vision (Single Layer) on devices other than Oppo 203 or Oppo 205 or some LG OLED TVs. It was then discovered that if you remuxed the .m2ts files from the UHD Disc Rips to .ts you can play this file (Dual Layer Dolby Vision) on the Sony x700 UBP Blu-ray Player with all audio profiles present on the disc. The user 'yusesope' then created a tool to create a proper single layer HEVC file from the two HEVCs in the original video file that retains all of the proper colors etc. into a single layer Dolby Vision. You can now use his tool + TSMuxer to make a .ts file that will play on other Dolby Vision capable devices as well as retaining all of the audio profiles from the original video file.

Hopefully this is a decent breakdown of what happened.

Edit: It will also save you money since you no longer need to use DVDFab which is a fairly expensive program.
Thanks for the summary.

I guess for users like me who don’t need the original audio it’s not necessary to use the new tool then?
jkatchy2
Posts: 16
Joined: Tue Mar 10, 2020 2:13 am

Re: Dolby Vision now possible through MP4 Mux.

Post by jkatchy2 »

yusesope wrote:
Sun Mar 08, 2020 12:41 pm
RESET_9999 wrote:
Sat Mar 07, 2020 11:42 pm
this modified version of tsMuxer(thanks a5180007) now retains the EL when using yusesope tool.
Great news. To verify the correct implementation, however, make comparisons with the versions obtained through mp4muxer.

In the meantime, I release version 0.0.2 of my tool (refer to the original post HERE).
For more information take a look at the changelog.
I will not invest much energy in updating the tool (unless a serious error is discovered) because, if my idea proves valid, it will certainly be implemented in "more professional" tools (my code is open and the idea has been explained in detail).



box4m wrote:
Sat Mar 07, 2020 9:12 pm
When trying the bl_el_rpu_builder from yusesope (big thanks, awesome job), i get an outputfile that doesnt appear to be dual layer, its the same size as only the BL and when dropping it into txmuxer for example, its just 1 stream.
Do all counters reach 100%?
What movie are you trying to mux?
Try also with the new version of my tool.
I am trying to mux Braveheart ( which has FEL layer ) using your tool but the process stopped and exists at
BL ANALYSYS: 100.0% EL ANALYSYS 0.0% BL_EL_RPU WRITING 89.8%
used the latest tsMuxer build to extract the BL.hevc and EL.hevc from the remux mkv file . Trying to play DV in my B9 through USB. Am i doing anything wrong here ?
Attachments
Capture.PNG
Capture.PNG (3.48 KiB) Viewed 20128 times
ATD555
Posts: 45
Joined: Fri Feb 28, 2020 4:04 pm

Re: Dolby Vision now possible through MP4 Mux.

Post by ATD555 »

deadchip12 wrote:
Tue Mar 10, 2020 2:44 am
ATD555 wrote:
Mon Mar 09, 2020 4:27 pm
deadchip12 wrote:
Mon Mar 09, 2020 11:25 am
Could someone pls summarize what has just been discussed in the last couple of pages? Is there a new method of muxing dolby vision? What are the advantages over the original method in the 1st page? Thanks.
I will try my best.

The method at the beginning of this thread was either using DVDFab or two HEVCs from the video and remuxing it into an MP4 container using Dolby's remuxer. Users reported that DVDFab coloring was incorrect but there was really no choice if they wanted to play Dolby Vision (Single Layer) on devices other than Oppo 203 or Oppo 205 or some LG OLED TVs. It was then discovered that if you remuxed the .m2ts files from the UHD Disc Rips to .ts you can play this file (Dual Layer Dolby Vision) on the Sony x700 UBP Blu-ray Player with all audio profiles present on the disc. The user 'yusesope' then created a tool to create a proper single layer HEVC file from the two HEVCs in the original video file that retains all of the proper colors etc. into a single layer Dolby Vision. You can now use his tool + TSMuxer to make a .ts file that will play on other Dolby Vision capable devices as well as retaining all of the audio profiles from the original video file.

Hopefully this is a decent breakdown of what happened.

Edit: It will also save you money since you no longer need to use DVDFab which is a fairly expensive program.
Thanks for the summary.

I guess for users like me who don’t need the original audio it’s not necessary to use the new tool then?
Well what machine are you playing your videos on?
box4m
Posts: 68
Joined: Tue Sep 10, 2019 7:23 pm

Re: Dolby Vision now possible through MP4 Mux.

Post by box4m »

smartrobot wrote:
Fri Mar 06, 2020 4:35 am
Is anyone else having this issue with @yusesope tool
Throws an error and hangs the video works it is just missing the last second or so

I can still use the output and create a mp4 using dlb_mp4base and will play back on my Visio TV

FFMPEG output warnings

Code: Select all

[NULL @ 0x5568201f5c80] Invalid NAL unit 36, skipping.
[NULL @ 0x5568201f6e40] Invalid NAL unit 36, skipping.
yusesope output

Code: Select all

___@little-server:~/src$ python3 bl_el_rpu_builder.py -tbw 4 -bl ~/BL.hevc -el ~/EL.hevc -o ~/Out.hvec
Exception in thread Thread-1:LYSIS: 86.8%     BL_EL_RPU WRITING: 86.0%
Traceback (most recent call last):
  File "/usr/lib/python3.6/threading.py", line 916, in _bootstrap_inner
    self.run()
  File "bl_el_rpu_builder.py", line 175, in run
    self.read()
  File "bl_el_rpu_builder.py", line 163, in read
    self.get_nal_info(mm,length,global_offset)
  File "bl_el_rpu_builder.py", line 138, in get_nal_info
    nal_type = self.get_nal_type(mmap_obj[(nal_offset + 3):(nal_offset + 5)])
  File "bl_el_rpu_builder.py", line 128, in get_nal_type
    nuh_layer_id = b_stream.read('uint:6')
  File "/home/nick/.local/lib/python3.6/site-packages/bitstring.py", line 3902, in read
    value, self._pos = self._readtoken(name, self._pos, length)
  File "/home/nick/.local/lib/python3.6/site-packages/bitstring.py", line 2016, in _readtoken
    "Tried to read {0} bits when only {1} available.".format(int(length), self.length - pos))
bitstring.ReadError: Reading off the end of the data. Tried to read 6 bits when only 1 available.

Exception in thread Thread-2:LYSIS: 92.4%     BL_EL_RPU WRITING: 91.3%
Traceback (most recent call last):
  File "/usr/lib/python3.6/threading.py", line 916, in _bootstrap_inner
    self.run()
  File "bl_el_rpu_builder.py", line 175, in run
    self.read()
  File "bl_el_rpu_builder.py", line 163, in read
    self.get_nal_info(mm,length,global_offset)
  File "bl_el_rpu_builder.py", line 138, in get_nal_info
    nal_type = self.get_nal_type(mmap_obj[(nal_offset + 3):(nal_offset + 5)])
  File "bl_el_rpu_builder.py", line 128, in get_nal_type
    nuh_layer_id = b_stream.read('uint:6')
  File "~/.local/lib/python3.6/site-packages/bitstring.py", line 3902, in read
    value, self._pos = self._readtoken(name, self._pos, length)
  File "~/.local/lib/python3.6/site-packages/bitstring.py", line 2016, in _readtoken
    "Tried to read {0} bits when only {1} available.".format(int(length), self.length - pos))
bitstring.ReadError: Reading off the end of the data. Tried to read 6 bits when only 1 available.

BL ANALYSIS: 99.3%     EL ANALYSIS: 99.3%     BL_EL_RPU WRITING: 99.3%

did you ever get this working?
Arbigator
Posts: 32
Joined: Fri Feb 28, 2020 9:16 pm

Re: Dolby Vision now possible through MP4 Mux.

Post by Arbigator »

I've tried three different movies now with yusesope's tool, but I still only get HDR playback on the 2019 Shield. I'm not sure what's going wrong. The sample mp4s worked fine, so I feel like it's something to do with tsMuxer. Here's my workflow: take the m2ts and demux the BL, the EL, and the audio track in tsMuxer. Use yusesope's tool to combine the BL and EL, take the resulting HEVC file and the audio track and mux to ts using tsMuxer.

Am I missing something? Should I be doing something differently?

To those of you using a Shield, which version of tsMuxer are you using? Are there any other settings in tsMuxer I should be changing?

Thanks
deadchip12
Posts: 206
Joined: Thu May 02, 2019 2:49 am

Re: Dolby Vision now possible through MP4 Mux.

Post by deadchip12 »

ATD555 wrote:
Tue Mar 10, 2020 4:18 am
deadchip12 wrote:
Tue Mar 10, 2020 2:44 am
ATD555 wrote:
Mon Mar 09, 2020 4:27 pm


I will try my best.

The method at the beginning of this thread was either using DVDFab or two HEVCs from the video and remuxing it into an MP4 container using Dolby's remuxer. Users reported that DVDFab coloring was incorrect but there was really no choice if they wanted to play Dolby Vision (Single Layer) on devices other than Oppo 203 or Oppo 205 or some LG OLED TVs. It was then discovered that if you remuxed the .m2ts files from the UHD Disc Rips to .ts you can play this file (Dual Layer Dolby Vision) on the Sony x700 UBP Blu-ray Player with all audio profiles present on the disc. The user 'yusesope' then created a tool to create a proper single layer HEVC file from the two HEVCs in the original video file that retains all of the proper colors etc. into a single layer Dolby Vision. You can now use his tool + TSMuxer to make a .ts file that will play on other Dolby Vision capable devices as well as retaining all of the audio profiles from the original video file.

Hopefully this is a decent breakdown of what happened.

Edit: It will also save you money since you no longer need to use DVDFab which is a fairly expensive program.
Thanks for the summary.

I guess for users like me who don’t need the original audio it’s not necessary to use the new tool then?
Well what machine are you playing your videos on?
LG Oled C9 via external hdd.

One question though: Gemini man dolby vision does not play at the correct 60 fps using the original method (remux two HEVCs layers into an MP4 container using mp4muxer). Will it play correctly using the new method (remux two HEVCs layers into an .ts container using yusesope's tool)?
ATD555
Posts: 45
Joined: Fri Feb 28, 2020 4:04 pm

Re: Dolby Vision now possible through MP4 Mux.

Post by ATD555 »

deadchip12 wrote:
Tue Mar 10, 2020 9:40 am
ATD555 wrote:
Tue Mar 10, 2020 4:18 am
deadchip12 wrote:
Tue Mar 10, 2020 2:44 am


Thanks for the summary.

I guess for users like me who don’t need the original audio it’s not necessary to use the new tool then?
Well what machine are you playing your videos on?
LG Oled C9 via external hdd.

One question though: Gemini man dolby vision does not play at the correct 60 fps using the original method (remux two HEVCs layers into an MP4 container using mp4muxer). Will it play correctly using the new method (remux two HEVCs layers into an .ts container using yusesope's tool)?
You should try using TSMuxer and just throw the original video file in it and remux to a .ts using this build of TSMuxer: https://drive.google.com/open?id=1Gq5TA ... B1io4OwHW9
smartrobot
Posts: 4
Joined: Sun Oct 28, 2018 9:44 pm

Re: Dolby Vision now possible through MP4 Mux.

Post by smartrobot »

Okay I have an update to fix the error:
"Reading off the end of the data. Tried to read 6 bits when only 1 available"
and fails at "BL ANALYSIS: 99.0% EL ANALYSIS: 98.8% BL_EL_RPU WRITING: 99.0%"

The problem seems to be the duration of the video clip.
I was able to fix with a hex editor but did not understand the underlying cause.
I finally found the cause to be the length of the clip.

Here are the steps to resolve this.

Step one: find the length of the file using ffprobe

Code: Select all

ffprobe -i ~/Desktop/00022.m2ts
output:
Image

The duration of my media is 00:02:53.98 this will not work with the tool
There either needs to be no decimal or one with 2 even numbers.
The max duration could only be 00:02:53.88

Now using ffmpeg

Code: Select all

ffmpeg -i ~/Desktop/00022.m2ts -map 0:0 -ss 00:00:00 -to 00:02:53.88 -c copy ~/Desktop/BL.hevc
ffmpeg -i ~/Desktop/00022.m2ts -map 0:1 -ss 00:00:00 -to 00:02:53.88 -c copy ~/Desktop/EL.hevc
Now run it through @yusesope's tool without errors

Profit
box4m wrote:
Tue Mar 10, 2020 5:53 am
smartrobot wrote:
Fri Mar 06, 2020 4:35 am
Is anyone else having this issue with @yusesope tool
Throws an error and hangs the video works it is just missing the last second or so

I can still use the output and create a mp4 using dlb_mp4base and will play back on my Visio TV

FFMPEG output warnings

Code: Select all

[NULL @ 0x5568201f5c80] Invalid NAL unit 36, skipping.
[NULL @ 0x5568201f6e40] Invalid NAL unit 36, skipping.
yusesope output

Code: Select all

___@little-server:~/src$ python3 bl_el_rpu_builder.py -tbw 4 -bl ~/BL.hevc -el ~/EL.hevc -o ~/Out.hvec
Exception in thread Thread-1:LYSIS: 86.8%     BL_EL_RPU WRITING: 86.0%
Traceback (most recent call last):
  File "/usr/lib/python3.6/threading.py", line 916, in _bootstrap_inner
    self.run()
  File "bl_el_rpu_builder.py", line 175, in run
    self.read()
  File "bl_el_rpu_builder.py", line 163, in read
    self.get_nal_info(mm,length,global_offset)
  File "bl_el_rpu_builder.py", line 138, in get_nal_info
    nal_type = self.get_nal_type(mmap_obj[(nal_offset + 3):(nal_offset + 5)])
  File "bl_el_rpu_builder.py", line 128, in get_nal_type
    nuh_layer_id = b_stream.read('uint:6')
  File "/home/nick/.local/lib/python3.6/site-packages/bitstring.py", line 3902, in read
    value, self._pos = self._readtoken(name, self._pos, length)
  File "/home/nick/.local/lib/python3.6/site-packages/bitstring.py", line 2016, in _readtoken
    "Tried to read {0} bits when only {1} available.".format(int(length), self.length - pos))
bitstring.ReadError: Reading off the end of the data. Tried to read 6 bits when only 1 available.

Exception in thread Thread-2:LYSIS: 92.4%     BL_EL_RPU WRITING: 91.3%
Traceback (most recent call last):
  File "/usr/lib/python3.6/threading.py", line 916, in _bootstrap_inner
    self.run()
  File "bl_el_rpu_builder.py", line 175, in run
    self.read()
  File "bl_el_rpu_builder.py", line 163, in read
    self.get_nal_info(mm,length,global_offset)
  File "bl_el_rpu_builder.py", line 138, in get_nal_info
    nal_type = self.get_nal_type(mmap_obj[(nal_offset + 3):(nal_offset + 5)])
  File "bl_el_rpu_builder.py", line 128, in get_nal_type
    nuh_layer_id = b_stream.read('uint:6')
  File "~/.local/lib/python3.6/site-packages/bitstring.py", line 3902, in read
    value, self._pos = self._readtoken(name, self._pos, length)
  File "~/.local/lib/python3.6/site-packages/bitstring.py", line 2016, in _readtoken
    "Tried to read {0} bits when only {1} available.".format(int(length), self.length - pos))
bitstring.ReadError: Reading off the end of the data. Tried to read 6 bits when only 1 available.

BL ANALYSIS: 99.3%     EL ANALYSIS: 99.3%     BL_EL_RPU WRITING: 99.3%

did you ever get this working?
mrhollywood
Posts: 16
Joined: Thu May 02, 2019 7:01 pm

Re: Dolby Vision now possible through MP4 Mux.

Post by mrhollywood »

ATD555 wrote:
Tue Mar 10, 2020 2:37 pm
deadchip12 wrote:
Tue Mar 10, 2020 9:40 am
ATD555 wrote:
Tue Mar 10, 2020 4:18 am


Well what machine are you playing your videos on?
LG Oled C9 via external hdd.

One question though: Gemini man dolby vision does not play at the correct 60 fps using the original method (remux two HEVCs layers into an MP4 container using mp4muxer). Will it play correctly using the new method (remux two HEVCs layers into an .ts container using yusesope's tool)?
You should try using TSMuxer and just throw the original video file in it and remux to a .ts using this build of TSMuxer: https://drive.google.com/open?id=1Gq5TA ... B1io4OwHW9
I have a C9, and .ts files do not work (at least with the internal emby app)
Post Reply