+ Reply to Thread
Results 31 to 45 of 45
No. there is nothing that automatically does what you want.
Mpv also has an option to set the screen background color, ex: gray160
mpv --background=0.627 "video.mp4"
A few colors seem to work quite well.
On my setup with non-daylight non-video-optimized monitor/windows settings, I've found that black16 (limited black) gives better results than the default black0 (tested with old black&white films).
Off topic again: you can do what you want, and you might prefer it otherwise, but because:
1. Detail & contrast are best preserved when there is something to contrast them against. IOW, you get the most out of your image when the image is set up properly on the display AND the background & environment are as close to totally BLACK as possible.
2. It has been psychologically proven that, when letterboxing/pillarboxing is the same as the background environment, it is the least distracting. In absence of being exactly the same, BLACK (absence of light) is the next least distracting. Of course, if you follow #1, BLACK = background environment, so the best of both alternatives.
There's opinion, and you can have a different opinion of whatever you like.
And there's fact. The above are facts. Empirically/experimentally & formulaically provable and repeatable scientific facts.
But have fun finding a player to do what you want. Personally, I think you'll have the easiest time (w/o re-encoding) by going the AVISynth script route.
Print "Good luck with that!"
End"Well, my days of not taking you seriously are certainly coming to a middle."
@Cornucopia: What you state are valid theoretical considerations. But the issue in practice is that PC monitors can be quite poor at displaying black0.
Outside of movie watching, least distracting is not necessarily desired also.
@jagabo: are you using the FrostyBorders script ?
PotPlayer doesn't allow (as far as I could tell) the script to enlarge the frame. So I had to keep the original 720x480 frame (4:3 DAR) of the AVI source. To get it to display as 16:9 I had to force the DAR in the player.
potplayer_source() Crop(8,0,-8,-0) Overlay(Spline36Resize(16,12).Spline36Resize(width,height).ColorYUV(gain_y=-50), Spline36Resize(width*3/4, height), x=(width-(width*3/4))/2, y=0)
I just noticed the black border at the right edge of the frame and saw the bug in the script:
src = potplayer_source() Crop(src, 8,0,-8,-0) Overlay(Spline36Resize(16,12).Spline36Resize(src.width,src.height).ColorYUV(gain_y=-50), Spline36Resize(width*3/4, height), x=(src.width-(width*3/4))/2, y=0)
Last edited by jagabo; 1st Dec 2020 at 21:00.
According to the changelog, this avisynth directshow filter: https://github.com/CrendKing/avisynth_filter now has the ability to resize the frame.
EDIT: From what I understand, your script doesn't use a gaussian blur, but instead relies on downscaling to a low resolution of (16x12, ratio of 40). There are some artifacts but it's very fast. The result has much more artifacts if a higher downscaled resolution is used, w=16, h=12 have some restrictions(must be mod-2, lower values causes crashes).
I was thinking of using a soft cubic method (bspline) to resize the background, which may be preferable ?
src.BicubicResize(w, h, b=1, c=0).BicubicResize(src.width, src.height, b=1, c=0)
Last edited by butterw; 2nd Dec 2020 at 05:48.
Note that this script is running within PotPlayer. It's not an external script. That allows the script to be applied to whatever video PotPlayer is playing. Hence, the problem isn't that AviSynth can't change the frame size, it's that PotPlayer still uses the frame size of the video it's playing. If you enlarge the frame from 720x480 to 856x480 in AviSynth Potplayer will only use the left 720x480 and you will lose the right edge of the picture.
You can use whatever downscale size you want. You can combine downscaling with blurring to get faster processing than blurring the full frame. For example: Spline36Resize(32,24).Blur(1.4).Blur(1.4).Blur(1.4 ).Spline36Resize(src.width,src.height) delivers less artifacts but is still fast.
Instead of using a fixed downscaled frame size you can use a size relative to the source: Spline36Resize(width/16*2,height/16*2). Note that "/16*2" assures that you will get a mod2 frame size that's about1/8 the original. If you really want to use odd frame sizes you can convert to YV24 or RGB first, then back to YV12 later.
src = potplayer_source() Crop(src, 8,0,-8,-0) Overlay(Spline36Resize(width/16*2,height/16*2).Blur(1.4).Blur(1.4).Blur(1.4).Spline36Resize(src.width,src.height).ColorYUV(gain_y=-50), Spline36Resize(width*3/4, height), x=(src.width-(width*3/4))/2, y=0)
[Attachment 56043 - Click to enlarge]
Even with a 1440x1080 source I'm only getting 2 percent CPU usage.
In any case, this was a proof-of-concept example. You can do whatever processing you want. I would never do this.
To avoid blocking/posterization artifacts (with the live-updated blurred background):
- use a higher downscaled resolution
w, h: src resolution/4*2
or w, h = 256
- use bspline resizer (smooth cubic)
- use external plugins Fastblur and Addgrain (used by FrostyBorders)
Fastblur is a stronger adjustable gaussian blur + it also has a dithering option.
Addgrain noise helps mask artifacts.
bg = src.BicubicResize(w, h, b=1, c=0).ColorYUV(gain_y=-30).FastBlur(8, iterations=3, dither=yes).BicubicResize(1920, 1080, b=1, c=0).AddGrain(var=2.0)
From my testing Portrait mode video would benefit most from this type of blurred background.
If a moving background is undesirable, a high quality static blurred image could be used instead:
bg = ImageSource("blurred_image", 0, src.FrameCount-1)