View Single Post
Old 14th February 2018, 11:03   #16  |  Link
hydra3333
Registered User
 
Join Date: Oct 2009
Location: crow-land
Posts: 540
Thank you. I got a tad "brute forcey" with it and this seemed to work, transferring the input file (eg vp9.2) 4k/HDR 10-bit colour characteristics over to the output file when transcoding into h.265 ...

Its a slow as a wet whistle even with ultrafast preset

Code:
@echo off
@setlocal ENABLEDELAYEDEXPANSION
@setlocal enableextensions

REM Drop a media file on this, eg a .webm file

set logfile=%~1.log
set ffprobe_inputfile=%~1.ffprobe.log
set outputmp4=%~1.h265.mp4
set outputwebm=%~1.h265.webm

set nvencc_x64=C:\SOFTWARE\NVEncC\NVEncC64.exe
set ffmpeg_x64=C:\SOFTWARE\ffmpeg\0-homebuilt-x64\built_for_generic_opencl\x64_10bit\ffmpeg.exe
set ffprobe_x64=C:\SOFTWARE\ffmpeg\0-homebuilt-x64\built_for_generic_opencl\x64_10bit\ffprobe.exe
set mp4box_x64=C:\SOFTWARE\ffmpeg\0-homebuilt-x64\built_for_generic_opencl\x64_10bit\MP4Box.exe
set x264_x64=C:\SOFTWARE\ffmpeg\0-homebuilt-x64\built_for_generic_opencl\x64_10bit\x264.exe
set x265_x64=C:\SOFTWARE\ffmpeg\0-homebuilt-x64\built_for_generic_opencl\x64_10bit\x265.exe
set mediainfo_x64=c:\software\mediainfo\mediainfo.exe
set mkvinfo_x64=C:\SOFTWARE\mkvtoolnix\mkvinfo.exe
set muxer_x64=C:\SOFTWARE\ffmpeg\0-homebuilt-x64\muxer.exe
set remuxer_x64=C:\SOFTWARE\ffmpeg\0-homebuilt-x64\remuxer.exe
set rtmpdump_x64=C:\SOFTWARE\ffmpeg\0-homebuilt-x64\rtmpdump.exe

REM probe the file characteristics

if exist "%logfile%" del "%logfile%"
if exist "%ffprobe_inputfile%" del "%ffprobe_inputfile%"

@echo on
"%ffprobe_x64%" -prefix -unit -show_streams -report -i "%~1" > "%ffprobe_inputfile%" 2>&1
@echo off

REM get the characteristics we are interested in into DOS variables 
@echo off
REM set defaults first
set vmax_average=1000"
set vmax_content=400"
set vwidth=
set vheight=
set vcoded_width=
set vcoded_height=
set vhas_b_frames=
set vsample_aspect_ratio=
set vdisplay_aspect_ratio=
set vpix_fmt=
set vlevel=
set vcolor_range=
set vcolor_space=
set vcolor_transfer=
set vcolor_primaries=
set vr_frame_rate=
set vavg_frame_rate=
set vside_data_type=
set vmax_content=
set vmax_average=
set vside_data_type=
set vred_x=
set vred_y=
set vgreen_x=
set vgreen_y=
set vblue_x=
set vblue_y=
set vwhite_point_x=
set vwhite_point_y=
set vmin_luminance=
set vmax_luminance=
@echo off
for /f "tokens=1,2 delims==" %%a in (' find "=" ^< "%ffprobe_inputfile%" ') do (
   set "var="
   for %%c in (%%~a) do set "var=!var!,%%~c"
   set var=!var:~1!
   set "val="
   for %%d in (%%~b) do set "val=!val!,%%~d"
   set val=!val:~1!
   REM @echo on
   REM echo .!var!.=.!val!.
   IF "!var!" == "width" set v!var!=!val!
   IF "!var!" == "height" set v!var!=!val!
   IF "!var!" == "coded_width" set v!var!=!val!
   IF "!var!" == "coded_height" set v!var!=!val!
   IF "!var!" == "has_b_frames" set v!var!=!val!
   IF "!var!" == "sample_aspect_ratio" set v!var!=!val!
   IF "!var!" == "display_aspect_ratio" set v!var!=!val!
   IF "!var!" == "pix_fmt" set v!var!=!val!
   IF "!var!" == "level" set v!var!=!val!
   IF "!var!" == "color_range" set v!var!=!val!
   IF "!var!" == "color_space" set v!var!=!val!
   IF "!var!" == "color_transfer" set v!var!=!val!
   IF "!var!" == "color_primaries" set v!var!=!val!
   IF "!var!" == "r_frame_rate" set v!var!=!val!
   IF "!var!" == "avg_frame_rate" set v!var!=!val!
   IF "!var!" == "max_content" set v!var!=!val!
   IF "!var!" == "max_average" set v!var!=!val!
   IF "!var!" == "side_data_type" set v!var!=!val!
   IF "!var!" == "red_x" set v!var!=!val!
   IF "!var!" == "red_y" set v!var!=!val!
   IF "!var!" == "green_x" set v!var!=!val!
   IF "!var!" == "green_y" set v!var!=!val!
   IF "!var!" == "blue_x" set v!var!=!val!
   IF "!var!" == "blue_y" set v!var!=!val!
   IF "!var!" == "white_point_x" set v!var!=!val!
   IF "!var!" == "white_point_y" set v!var!=!val!
   IF "!var!" == "min_luminance" set v!var!=!val!
   IF "!var!" == "max_luminance" set v!var!=!val!
   REM @echo off
)
REM split off trailing "/" etc from some of them
for /f "tokens=1,2 delims=/" %%a in ("%vwidth%") do (set vwidth=%%a)
for /f "tokens=1,2 delims=/" %%a in ("%vheight%") do (set vheight=%%a)
for /f "tokens=1,2 delims=/" %%a in ("%vcoded_width%") do (set vcoded_width=%%a)
for /f "tokens=1,2 delims=/" %%a in ("%vcoded_height%") do (set vcoded_height=%%a)
for /f "tokens=1,2 delims=/" %%a in ("%vhas_b_frames%") do (set vhas_b_frames=%%a)
for /f "tokens=1,2 delims=/" %%a in ("%vsample_aspect_ratio%") do (set vsample_aspect_ratio=%%a)
for /f "tokens=1,2 delims=/" %%a in ("%vdisplay_aspect_ratio%") do (set vdisplay_aspect_ratio=%%a)
for /f "tokens=1,2 delims=/" %%a in ("%vpix_fmt%") do (set vpix_fmt=%%a)
for /f "tokens=1,2 delims=/" %%a in ("%vlevel%") do (set vlevel=%%a)
for /f "tokens=1,2 delims=/" %%a in ("%vcolor_range%") do (set vcolor_range=%%a)
for /f "tokens=1,2 delims=/" %%a in ("%vcolor_space%") do (set vcolor_space=%%a)
for /f "tokens=1,2 delims=/" %%a in ("%vcolor_transfer%") do (set vcolor_transfer=%%a)
for /f "tokens=1,2 delims=/" %%a in ("%vcolor_primaries%") do (set vcolor_primaries=%%a)
for /f "tokens=1,2 delims=/" %%a in ("%vr_frame_rate%") do (set vr_frame_rate=%%a)
for /f "tokens=1,2 delims=/" %%a in ("%vavg_frame_rate%") do (set vavg_frame_rate=%%a)
for /f "tokens=1,2 delims=/" %%a in ("%vmax_content%") do (set vmax_content=%%a)
for /f "tokens=1,2 delims=/" %%a in ("%vmax_average%") do (set vmax_average=%%a)
for /f "tokens=1,2 delims=/" %%a in ("%vside_data_type%") do (set vside_data_type=%%a)
for /f "tokens=1,2 delims=/" %%a in ("%vred_x%") do (set vred_x=%%a)
for /f "tokens=1,2 delims=/" %%a in ("%vred_y%") do (set vred_y=%%a)
for /f "tokens=1,2 delims=/" %%a in ("%vgreen_x%") do (set vgreen_x=%%a)
for /f "tokens=1,2 delims=/" %%a in ("%vgreen_y%") do (set vgreen_y=%%a)
for /f "tokens=1,2 delims=/" %%a in ("%vblue_x%") do (set vblue_x=%%a)
for /f "tokens=1,2 delims=/" %%a in ("%vblue_y%") do (set vblue_y=%%a)
for /f "tokens=1,2 delims=/" %%a in ("%vwhite_point_x%") do (set vwhite_point_x=%%a)
for /f "tokens=1,2 delims=/" %%a in ("%vwhite_point_y%") do (set vwhite_point_y=%%a)
for /f "tokens=1,2 delims=/" %%a in ("%vmin_luminance%") do (set vmin_luminance=%%a)
for /f "tokens=1,2 delims=/" %%a in ("%vmax_luminance%") do (set vmax_luminance=%%a)
REM not transforms
REM IF /I "%vcolor_range%" == "tv" set vcolor_range=limited
REM IF /I NOT "%vcolor_range%" == "limited" set vcolor_range=full
REM
echo vwidth=%vwidth%
echo vheight=%vheight%
echo vcoded_width=%vcoded_width%
echo vcoded_height=%vcoded_height%
echo vhas_b_frames=%vhas_b_frames%
echo vsample_aspect_ratio=%vsample_aspect_ratio%
echo vdisplay_aspect_ratio=%vdisplay_aspect_ratio%
echo vpix_fmt=%vpix_fmt%
echo vlevel=%vlevel%
echo vcolor_range=%vcolor_range%
echo vcolor_space=%vcolor_space%
echo vcolor_transfer=%vcolor_transfer%
echo vcolor_primaries=%vcolor_primaries%
echo vr_frame_rate=%vr_frame_rate%
echo vavg_frame_rate=%vavg_frame_rate%
echo vmax_content=%vmax_content%
echo vmax_average=%vmax_average%
echo vside_data_type=%vside_data_type%
echo vred_x=%vred_x%
echo vred_y=%vred_y%
echo vgreen_x=%vgreen_x%
echo vgreen_y=%vgreen_y%
echo vblue_x=%vblue_x%
echo vblue_y=%vblue_y%
echo vwhite_point_x=%vwhite_point_x%
echo vwhite_point_y=%vwhite_point_y%
echo vmin_luminance=%vmin_luminance%
echo vmax_luminance=%vmax_luminance%
rem

@ECHO ON

set ffpreset=medium

"%ffmpeg_x64%" -hide_banner -i "%~1" -an -c:v libx265 -pix_fmt "%vpix_fmt%" -preset %ffpreset% -color_trc %vcolor_transfer% -color_primaries %vcolor_primaries% -colorspace %vcolor_space% -color_range %vcolor_range% -x265-params "profile=main10:level-idc=5.1:crf=15:no-open-gop=1:aq-mode=1:range=%vcolor_range%:colorprim=%vcolor_primaries%:transfer=%vcolor_transfer%:colormatrix=%vcolor_space%:master-display=G(%vgreen_x%,%vgreen_y%)B(%vblue_x%,%blue_y%)R(%vred_x%,%vred_y%)WP(%vwhite_point_x%,%vwhite_point_y%)L(%vmax_luminance%,%vmin_luminance%):max-cll=%vmax_content%,%vmax_average%:hdr" -profile:v main10 -level:v 5.1 -crf 15 -movflags faststart -f mp4 -y "%outputwebm%"
"%ffprobe_x64%" -prefix -unit -show_streams -report -i "%outputwebm%" > "%outputwebm%.ffprobe.log" 2>&1

"%ffmpeg_x64%" -hide_banner -i "%~1" -an -c:v libx265 -pix_fmt "%vpix_fmt%" -preset %ffpreset% -color_trc %vcolor_transfer% -color_primaries %vcolor_primaries% -colorspace %vcolor_space% -color_range %vcolor_range% -x265-params "profile=main10:level-idc=5.1:crf=15:no-open-gop=1:aq-mode=1:range=%vcolor_range%:colorprim=%vcolor_primaries%:transfer=%vcolor_transfer%:colormatrix=%vcolor_space%:master-display=G(%vgreen_x%,%vgreen_y%)B(%vblue_x%,%blue_y%)R(%vred_x%,%vred_y%)WP(%vwhite_point_x%,%vwhite_point_y%)L(%vmax_luminance%,%vmin_luminance%):max-cll=%vmax_content%,%vmax_average%:hdr" -profile:v main10 -level:v 5.1 -crf 15 -movflags faststart -f mp4 -y "%outputmp4%"
"%ffprobe_x64%" -prefix -unit -show_streams -report -i "%outputmp4%" > "%outputmp4%.ffprobe.log" 2>&1

pause
exit

Last edited by hydra3333; 14th February 2018 at 11:05.
hydra3333 is offline   Reply With Quote