Skip to content

Instantly share code, notes, and snippets.

@abakum
Last active August 2, 2022 19:56
Show Gist options
  • Save abakum/7d2acab509cff10a5245c96af48f6570 to your computer and use it in GitHub Desktop.
Save abakum/7d2acab509cff10a5245c96af48f6570 to your computer and use it in GitHub Desktop.
Convert mvc to yt=sbsl rl=sbsr sbs=sbs2l rlq=sbs2r tab=ab2l ba=abr baq=ab2r ab=abl frameseq=alt lines=row arcd hdmi
SetLocal EnableExtensions EnableDelayedExpansion
:main
echo Convert mvc to yt=sbsl rl=sbsr sbs=sbs2l rlq=sbs2r tab=ab2l ba=abr baq=ab2r ab=abl frameseq=alt lines=row arcd hdmi
echo Run "mvc2x.bat" without parameters to place it in "%UserProfile%\SendTo"
echo Send "c:\d\" to "mvc2x"
echo or drop it to "mvc2x.bat"
echo "c:\d\film\BD\BDMV\STREAM\00001.m2ts" and "c:\d\film\BD\BDMV\STREAM\00002.m2ts" will be used as mvc source
echo "c:\d\film\d.mkv" will be used as sound and metadata source
echo Then look at "c:\d\x\d.mkv" where x is you choose
if "%~1"=="" (
if NOT EXIST "%UserProfile%\SendTo\%~n0.lnk" (
if DEFINED ChocolateyInstall (
"%ChocolateyInstall%\tools\shimgen" -o "%UserProfile%\SendTo\%~n0.exe" -p "%~f0"
) else (
copy /b "%~f0" "%UserProfile%\SendTo\%~nx0"
)
echo "%~f0" is placed in "%UserProfile%\SendTo"
)
pause
goto :EOF
)
set pFRIM=y:\PortableApps\FRIM\
set pFFmpeg=y:\PortableApps\ffmpeg64\bin\
set pMKVToolNix=y:\PortableApps\mkvToolNix64\
set cFFmpeg=-profile:v high -level 51 -b:v 8M -maxrate 16M -bufsize 11M -g 25 -bf 0 -slices 4 -refs 0
set cFRIM= -profile high -level 5.1 -vbr 8000 16000 -cpbsize 11000 -gop 25 1 0 C -l 4 -rf 0
:choice
echo y~t R~l s~bs r~lq t~ab B~a b~aq A~b f~rameseq l~ines a~rcd h~dmi
choice /cs /c yRsrtBbAflah
goto :%ERRORLEVEL%
:0
echo yt=sbsl rl=sbsr sbs=sbs2l rlq=sbs2r tab=ab2l ba=abr baq=ab2r ab=abl frameseq=alt lines=row arcd hdmi
set /p m=^>
if NOT DEFINED m goto :choice
:1
set m=yt
goto :loop
:2
set m=rl
goto :loop
:3
set m=sbs
goto :loop
:4
set m=rlq
goto :loop
:5
set m=tab
goto :loop
:6
set m=ba
goto :loop
:7
set m=baq
goto :loop
:8
set m=ab
goto :loop
:9
set m=frameseq
goto :loop
:10
set m=lines
goto :loop
:11
set m=arcd
goto :loop
:12
set m=hdmi
:loop
if "%~1"=="" (
echo Thanks videofan3d https://sites.google.com/site/videofan3d/software/frim-encoder
echo Thanks Moritz Bunkus https://mkvtoolnix.download
echo Thanks Chocolatey https://chocolatey.org
echo Thanks FFmpeg https://ffmpeg.org
pause
goto :EOF
)
cd /d "%~1"
call :doit "%~n1"
shift
goto :loop
:doit
set l="film\BD\BDMV\STREAM\00001.m2ts"
if NOT EXIST %l% goto :EOF
set r="film\BD\BDMV\STREAM\00002.m2ts"
if NOT EXIST %r% goto :EOF
set s="film\%~1.mkv"
if NOT EXIST %s% goto :EOF
set h264=%temp%\%m%.264
set mka=%temp%\%m%.mka
set mkv="%m%\%~1.mkv"
for /f usebackq %%i in (`%pFFmpeg%ffprobe -v 0 %s% -select_streams v:0 -show_entries "stream=height,width,r_frame_rate" -of "default=noprint_wrappers=1"`) do set %%i
set /a f=%r_frame_rate%
set ef=%f%
set cv=libx264
set cv=
set enc=vf
set enc=complex
set enc=frim
call :%m%
goto :tc
:sbsl
:yt
:lr
set sm=sbs
set o=-o -
set /a ew=%width%*2
set eh=%height%
set stereo3d=sbsl
set framepack=[l][r]framepack=sbs
set stereo-mode=side_by_side_left_first
goto :EOF
:sbsr
:rl
set sm=sbs
set o=-swaplr -o -
set /a ew=%width%*2
set eh=%height%
set stereo3d=sbsr
set framepack=[r][l]framepack=sbs
set stereo-mode=side_by_side_right_first
goto :EOF
:sbs2l
:sbs
:lrq
set sm=sbs
set /a hw=%width%/2
set o=-o - -dstsize %hw% %height% -dstarea 0 0 %hw% %height%
set ew=%width%
set eh=%height%
set stereo3d=sbs2l
set framepack=[l][r]framepack=sbs
set stereo-mode=side_by_side_left_first
goto :EOF
:sbs2r
:rlq
set sm=sbs
set /a hw=%width%/2
set o=-swaplr -o - -dstsize %hw% %height% -dstarea 0 0 %hw% %height%
set ew=%width%
set eh=%height%
set stereo3d=sbs2r
set stereo_mode=right_left
set framepack=[r][l]framepack=sbs
set stereo-mode=side_by_side_right_first
goto :EOF
:ab2l
:tab
set sm=tab
set /a hh=%height%/2
set o=-o - -dstsize %width% %hh% -dstarea 0 0 %width% %hh%
set ew=%width%
set eh=%height%
set stereo3d=ab2l
set framepack=[l][r]framepack=tab
set stereo-mode=top_bottom_left_first
goto :EOF
:abr
:ba
set sm=tab
set o=-swaplr -o -
set ew=%width%
set /a eh=%height%*2
set stereo3d=abr
set framepack=[r][l]framepack=tab
set stereo-mode=top_bottom_right_first
goto :EOF
:ab2r
:baq
set sm=tab
set /a hh=%height%/2
set o=-swaplr -o - -dstsize %width% %hh% -dstarea 0 0 %width% %hh%
set ew=%width%
set eh=%height%
set stereo3d=ab2r
set framepack=[r][l]framepack=tab
set stereo-mode=top_bottom_right_first
goto :EOF
:abl
:ab
set sm=tab
set o=-o -
set ew=%width%
set /a eh=%height%*2
set stereo3d=abl
set framepack=[l][r]framepack=tab
set stereo-mode=top_bottom_left_first
goto :EOF
:frameseq
:alt
:al
set sm=alt
set o=-o -
set ew=%width%
set eh=%height%
set /a ef=%f%*2
set stereo3d=al
set framepack=[l][r]framepack=frameseq,settb=1/%ef%,setpts=N
set stereo-mode=both_eyes_laced_left_first
goto :EOF
:arcd
set sm=sbs
set o=-o -
set /a ew=%width%*2
set eh=%height%
set stereo3d=sbsl:arcd
set framepack=
set stereo-mode=anaglyph_cyan_red
set enc=complex
goto :EOF
:lines
:row
set sm=tab
set /a hh=%height%/2
set o=-o - -dstsize %width% %hh% -dstarea 0 0 %width% %hh%
set ew=%width%
set eh=%height%
set stereo3d=ab2l
set framepack=[l][r]framepack=lines
set stereo-mode=row_interleaved_left_first
set enc=complex
goto :EOF
:hdmi
set sm=tab
set o=-o -
set ew=%width%
set /a eh=%height%*2
set stereo3d=abl:hdmi
set framepack=
set stereo-mode=
goto :EOF
:hw
if "%enc%"=="frim" goto :EOF
set cv=%1
if "%1"=="libx264" goto :EOF
%pFFmpeg%ffmpeg -v 0 -f lavfi -i color=s=%ew%x%eh% -c:v %cv% -r %ef% %cFFmpeg% -frames:v 1 -y %h264%
if "%ERRORLEVEL%"=="0" goto :EOF
shift
goto :hw
:tc
set FRIMDecode=%pFRIM%FRIMDecode64 -ts -i:mvc %l% %r% -%sm% %o%
: -length 100
if not DEFINED cv call :hw h264_qsv h264_nvenc h264_amf libx264
set Encode=%pFFmpeg%ffmpeg -v 0 -f rawvideo -s %ew%x%eh% -r %ef% -pix_fmt yuv420p -i - -filter_complex stereo3d=%stereo3d%,setdar=%width%/%height% -c:v %cv% -r %ef% %cFFmpeg% -pix_fmt yuv420p -y %h264%
if DEFINED framepack set Encode=%pFFmpeg%ffmpeg -v 0 -f rawvideo -s %ew%x%eh% -r %ef% -pix_fmt yuv420p -i - -filter_complex split[ml][mr],[ml]stereo3d=%stereo3d%:ml[l],[mr]stereo3d=%stereo3d%:mr[r],%framepack%,setdar=%width%/%height% -c:v %cv% -r %ef% %cFFmpeg% -pix_fmt yuv420p -y %h264%
if "%enc%"=="frim" set Encode=%pFRIM%FRIMEncode64 -i - -o:h264 %h264% -%sm% 2 -size %ew% %eh% -dar %width%:%height% -f %ef% %cFRIM%
if "%enc%"=="vf" set Encode=%pFFmpeg%ffmpeg -v 0 -f rawvideo -s %ew%x%eh% -r %ef% -pix_fmt yuv420p -i - -vf setdar=%width%/%height% -c:v %cv% -r %ef% %cFFmpeg% -pix_fmt yuv420p -y %h264%
if NOT DEFINED stereo-mode set Encode=%pFFmpeg%ffplay -f rawvideo -video_size %ew%x%eh% -pixel_format yuv420p -i - -vf stereo3d=%stereo3d%,setdar=%width%/%height% -af amovie=%s% -fs -x 1920 -y 2205 -autoexit
%FRIMDecode%|%Encode%
if NOT DEFINED stereo-mode goto :del
%pFFmpeg%ffprobe -v 0 -i %s% -select_streams a:0 -show_entries stream=codec_name -of default=noprint_wrappers=1:nokey=1|find "pcm"
if NOT ERRORLEVEL 1 ffmpeg -v 0 -i %s% -map_metadata -1 -map_metadata:s:a -1 -c:a flac -map 0:a -map_chapters -1 -y %mka%
set fmka=-D
if EXIST %mka% set fmka= =%mka% -A -D
set mkvmerge=%pMKVToolNix%mkvmerge -o %mkv% --stereo-mode 0:%stereo-mode% --disable-track-statistics-tags -A -S -B -M -T --no-global-tags --no-chapters =%h264% %fmka% =%s%
%mkvmerge%
:del
del %h264% %mka%
echo %FRIMDecode%
echo %Encode%
echo %mkvmerge%
@abakum
Copy link
Author

abakum commented Jul 25, 2022

To see in 3D video encoded with line-by-line alternation of angles (lines=row), select the 2D->3D mode in LG 3D TV
HDMI mode do not convert mvc to hdmi%1.mkv but play it over hdmi plugged 3D TV via FFplay

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment