(04.06.2019, 16:25)Selur Wrote: [ -> ]Quote:Hybird doesn't support the sup file and it will automatically convert sup to idx/sub
For clarification:
When using Avisynth and embedding .sup file (assuming .Net is installed), Hybrid should create something along the lines of:
Code:
LoadCPlugin("I:\Hybrid\32bit\AVISYN~1\ffms2.dll")
LoadPlugin("I:\Hybrid\32bit\AVISYN~1\SupTitle.dll")
SetFilterMTMode("DEFAULT_MT_MODE", MT_MULTI_INSTANCE)
# loading source: F:\TestClips&Co\files\test.avi
# input color sampling YV12
# input luminance scale tv
FFVideoSource("F:\TESTCL~1\files\test.avi",cachefile="E:\Temp\avi_078c37f69bb356e7b5fa040c71584c40_853323747_1_0.ffindex",fpsnum=25)
# current resolution: 640x352
# filtering
# embedding subtitles
Preroll(video=10, audio=0)
# Loading subtitle: E:\Output\00005.track_4608_lang_und.4a3535dbb7070f889ca5f92f88a54966.sup
SupTitle("E:\Output\00005.track_4608_lang_und.4a3535dbb7070f889ca5f92f88a54966.sup")
PreFetch(8)
return last
When using Vapoursynth and embedding .sup file, Hybrid should create something along the lines of:
Code:
# Imports
import vapoursynth as vs
core = vs.get_core()
# Loading Plugins
core.std.LoadPlugin(path="I:/Hybrid/64bit/vsfilters/SourceFilter/FFMS2/ffms2k.dll")
# Loading F:\TestClips&Co\files\test.avi using FFMS2K
clip = core.ffms2.Source(source="F:/TESTCL~1/files/test.avi",cachefile="E:/Temp/avi_078c37f69bb356e7b5fa040c71584c40_853323747.ffindex",format=vs.YUV420P8,alpha=False)
# making sure input color matrix is set as unspec
clip = core.resize.Point(clip, matrix_in_s="unspec",range_s="limited")
# making sure frame rate is set to 25/1
clip = core.std.AssumeFPS(clip, fpsnum=25, fpsden=1)
# Setting color range to TV (limited) range.
clip = core.std.SetFrameProp(clip=clip, prop="_ColorRange", intval=1)
# Loading image based subtitle E:\Output\00005.track_4608_lang_und.4a3535dbb7070f889ca5f92f88a54966.sup using Subtitle
def rgba(r, g, b, a=255):
if r < 0 or r > 255 or g < 0 or g > 255 or b < 0 or b > 255 or a < 0 or a > 255:
raise vs.Error("Colours must be in the range [0, 255].")
return (a << 24) + (r << 16) + (g << 8) + b
unused = 1 << 42
subs = core.sub.ImageFile(clip=clip, file="E:/Output/00005.track_4608_lang_und.4a3535dbb7070f889ca5f92f88a54966.sup", palette=[rgba(0, 0, 0), rgba(255, 255, 255), rgba(0, 0, 0), rgba(0, 0, 0)])
alpha = core.std.PropToClip(subs)
subs = core.resize.Bicubic(subs, width=clip.width, height=clip.height, format=clip.format.id, matrix_s="unspec", matrix_in_s="unspec", range_s="limited")
gray_format = core.register_format(vs.GRAY, clip.format.sample_type, clip.format.bits_per_sample, 0, 0)
alpha = core.resize.Bicubic(alpha, width=clip.width, height=clip.height, format=gray_format.id, range_s="limited")
clip = core.std.MaskedMerge(clip, subs, alpha)
# adjusting output color from: RGB24 to YUV420P8 for x264Model (i420)
clip = core.resize.Bicubic(clip=clip, format=vs.YUV420P8, matrix_s="unspec", range_s="limited")
# Output
clip.set_output()
When neither Avisynth nor Vapoursynth is available Hybrid converts the video to idx/sub since afaik ffmpeg doesn't support embedding .sup-subtitles.
Quote:Now I don't know how to make it happen again, 'cause everytime I import the AVS file it just says "Didn't find a 'Frame rate' info node! -› stream will be ignored".
Not knowing the script you use, I can't really help.
Cu Selur
I can preview the script of
Avisynth only
the first time previewing the video. After that, even it displays the .ass subtitle as I expect(.ass file), there will be an error such as
"Avisynth preview error: ntent of C:\User\??????\AppData\Local\Temp\tempPreviewAvisynthFile00_07_47_856.avs" all the time and Hybird even shuts itself down sometimes. However, I can still burn the .ass subtitle well with
Avisynth. When I import the .sup subtitle, it can't display the subtitle(pictures of .sup file) neither with
Avisynth nor with
Vapoursynth, so I can only give the script of
Vapoursynth below:
Code:
# Imports
import vapoursynth as vs
core = vs.get_core()
# Loading Plugins
core.std.LoadPlugin(path="C:/Program Files/Hybrid/64bit/vsfilters/SourceFilter/LSmashSource/vslsmashsource.dll")
# Loading G:\TLOTR3.ts using LWLibavSource
clip = core.lsmas.LWLibavSource(source="G:/TLOTR3.ts", format="YUV420P8", cache=0)
# making sure input color matrix is set as unspec
clip = core.resize.Point(clip, matrix_in_s="unspec",range_s="limited")
# making sure frame rate is set to 24000/1001
clip = core.std.AssumeFPS(clip, fpsnum=24000, fpsden=1001)
# Setting color range to TV (limited) range.
clip = core.std.SetFrameProp(clip=clip, prop="_ColorRange", intval=1)
original = clip
# Loading image based subtitle G:\TLOTR.The.Return.of.the.King.2003.Extended.BluRay.1080p.DTSES6.1.x264-CHD.sup using Subtitle
def rgba(r, g, b, a=255):
if r < 0 or r > 255 or g < 0 or g > 255 or b < 0 or b > 255 or a < 0 or a > 255:
raise vs.Error("Colours must be in the range [0, 255].")
return (a << 24) + (r << 16) + (g << 8) + b
unused = 1 << 42
subs = core.sub.ImageFile(clip=clip, file="G:/TLOTR.The.Return.of.the.King.2003.Extended.BluRay.1080p.DTSES6.1.x264-CHD.sup", palette=[rgba(0, 0, 0), rgba(255, 255, 255), rgba(0, 0, 0), rgba(0, 0, 0)])
alpha = core.std.PropToClip(subs)
subs = core.resize.Bicubic(subs, width=clip.width, height=clip.height, format=clip.format.id, matrix_s="unspec", matrix_in_s="unspec", range_s="limited")
gray_format = core.register_format(vs.GRAY, clip.format.sample_type, clip.format.bits_per_sample, 0, 0)
alpha = core.resize.Bicubic(alpha, width=clip.width, height=clip.height, format=gray_format.id, range_s="limited")
clip = core.std.MaskedMerge(clip, subs, alpha)
# adjusting output color from: RGB24 to YUV420P8 for x264Model (i420)
clip = core.resize.Bicubic(clip=clip, format=vs.YUV420P8, matrix_s="unspec", range_s="limited")
# adjusting for FilterView
if original.format.id != clip.format.id:
if (original.format.color_family == vs.RGB and clip.format.color_family != vs.RGB):
original = core.resize.Bicubic(original, format=clip.format.id, matrix_s="709", range_s="limited")
elif (original.format.color_family == clip.format.color_family):
original = core.resize.Bicubic(original, format=clip.format.id, range_s="limited")
else:
original = core.resize.Bicubic(original, format=clip.format.id, matrix_in_s="709", range_s="limited")
stacked = core.std.StackHorizontal([original,clip])
# Output
stacked.set_output()
Actually, I can't see a text window of
Vapoursynth either, so I just copy the text from the .vpy file. The following script is what I used before:
Code:
LoadPlugin("D:\BaiduNetdiskDownload\MeGUI_r2905\MeGUI\tools\ffms\ffms2.dll")
FFVideoSource("G:\TLOTR3.ts", fpsnum=24000, fpsden=1001, threads=1, colorspace="YUV420P8")
#deinterlace
#crop
#resize
LoadPlugin("D:\BaiduNetdiskDownload\MeGUI_r2905\MeGUI\tools\avisynth_plugin\FluxSmooth.dll")
FluxSmoothST(7,7) # Medium Noise
LoadPlugin("C:\Program Files\Hybrid\32bit\avisynthPlugins\SupTitle.dll")
SupTitle("G:\TLOTR.The.Return.of.the.King.2003.Extended.BluRay.1080p.DTSES6.1.x264-CHD.sup")