Hi, but I'm a conCat
please consider the 2 attached input (clipA.MP4 and clipB.mp4)
but happen thisCode:ffmpeg64bit332.exe -y -f concat -i clipA.mp4 -i clipB.mp4 -vcodec copy -an output.mp4
but both files have the same resolution, codec and framerate. So where is the problem? please help a ***Code:ffmpeg version 3.3.2 Copyright (c) 2000-2017 the FFmpeg developers built with gcc 7.1.0 (GCC) configuration: --enable-gpl --enable-version3 --enable-cuda --enable-cuvid --enable-d3d11va --enable-dxva2 --enable-libmfx --enable-nvenc --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-lzma --enable-zlib libavutil 55. 58.100 / 55. 58.100 libavcodec 57. 89.100 / 57. 89.100 libavformat 57. 71.100 / 57. 71.100 libavdevice 57. 6.100 / 57. 6.100 libavfilter 6. 82.100 / 6. 82.100 libswscale 4. 6.100 / 4. 6.100 libswresample 2. 7.100 / 2. 7.100 libpostproc 54. 5.100 / 54. 5.100 clipA.mp4: Invalid data found when processing input
+ Reply to Thread
Results 1 to 30 of 39
-
-
"-f concat" tells ffmpeg the input will be a text file of the following pattern:
Code:# this is a comment file '/path/to/file1' file '/path/to/file2' file '/path/to/file3'
https://trac.ffmpeg.org/wiki/Concatenate -
Code:
v:\automazioneclip\core\ffmpeg64bit332.exe -y -f concat -safe 0 -i concatlist.txt -vcodec copy -an output.mp4
Code:file 'v:\s3\clipA.MP4' file 'v:\s3\clipB.MP4'
Code:ffmpeg version 3.3.2 Copyright (c) 2000-2017 the FFmpeg developers built with gcc 7.1.0 (GCC) configuration: --enable-gpl --enable-version3 --enable-cuda --enable-cuvid --enable-d3d11va --enable-dxva2 --enable-libmfx --enable-nvenc --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-lzma --enable-zlib libavutil 55. 58.100 / 55. 58.100 libavcodec 57. 89.100 / 57. 89.100 libavformat 57. 71.100 / 57. 71.100 libavdevice 57. 6.100 / 57. 6.100 libavfilter 6. 82.100 / 6. 82.100 libswscale 4. 6.100 / 4. 6.100 libswresample 2. 7.100 / 2. 7.100 libpostproc 54. 5.100 / 54. 5.100 [mov,mp4,m4a,3gp,3g2,mj2 @ 000000000228c340] Auto-inserting h264_mp4toannexb bitstream filter Input #0, concat, from 'concatlist.txt': Duration: N/A, start: -0.005333, bitrate: 32191 kb/s Stream #0:0(und): Audio: ac3 (ac-3 / 0x332D6361), 48000 Hz, stereo, fltp, 320 kb/s Metadata: handler_name : SoundHandler Stream #0:1(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 31871 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc Metadata: handler_name : VideoHandler Output #0, mp4, to 'output.mp4': Metadata: encoder : Lavf57.71.100 Stream #0:0(und): Video: h264 (High) ([33][0][0][0] / 0x0021), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 31871 kb/s, 25 fps, 25 tbr, 12800 tbn, 12800 tbc Metadata: handler_name : VideoHandler Stream mapping: Stream #0:1 -> #0:0 (copy) Press [q] to stop, [?] for help [mov,mp4,m4a,3gp,3g2,mj2 @ 000000000228c340] Auto-inserting h264_mp4toannexb bitstream filter frame= 198 fps=0.0 q=-1.0 Lsize= 12600kB time=00:00:26.02 bitrate=3966.2kbits/s speed= 520x video:12597kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.022225%
and image of output.mp4 is "freezed" of 26 seconds
-
Report to ffmpeg team.
Until it's fixed try "concat protocol".
https://trac.ffmpeg.org/wiki/Concatenate#protocol -
The concat option with the list of files on the command line looks like:
Code:ffmpeg.exe -i "concat:file1.ts|file2.ts" -c copy output.ts
Code:copy /b file1.ts+file2.ts output.ts
Last edited by jagabo; 25th Jul 2017 at 09:16.
-
The "file list" (aka "concat demuxer") doesn't seem to work in this case for some reason. That's why I suggested he reports it to ffmpeg team and linked to the documentation which shows a simple workaround: convert mp4 to ts first. Then you can use the "concat protocol" because - like you said - it works for ts input.
-
[Attachment 42421 - Click to enlarge]
but I'm a cat, not a conCat (a conplicated cat)
How I can do ? -
-
I was able to join the 2 segments using a trick that often works for me. Just copy the video with copy codec and then join them with concatenate.
Code:ffmpeg -i clipA.mp4 -c copy c:\newfolder\clipAA.mp4 ffmpeg -i clipB.mp4 -c copy c:\newfolder\clipBB.mp4
On Windows Command-line:
Code:(for %i in (*.mp4) do @echo file '%i') > mylist.txt
Code:(for %%i in (*.mp4) do @echo file '%%i') > mylist.txt
Code:ffmpeg -f concat -safe 0 -i mylist.txt -c copy output.mp4
-
The problem with the two files was that the video in clipA.mp4 was stream 2 and the audio was stream 1, whereas the video in clipB.mp4 was stream 1 and the audio was stream 2. When Budman1 remuxed the files the number of the streams in ClipAA.mp4 was reversed, making it possible for concatenate them without specifying the individual streams.
-
Jagabo... Very good information! Thank you for the explanation.
-
oh, jagabo please consider the MXF source clipA.MXF and clipB.MXF
https://www.dropbox.com/s/hjd72fs0ce68i5y/clipA.MXF?dl=0
https://www.dropbox.com/s/h223mnxt93dgrcr/clipB.MXF?dl=0
where clipA.MXF is a 1920x1080 xdcamhd 422 video file
meanwhile clipB.MXF is a 1440x1080 xdcam hd 35 video file
What is the correct commandline for both that generate rispectively an h264 output file so that the streams are suitable to concatenate both output? thanksLast edited by marcorocchini; 1st Aug 2017 at 17:14.
-
You need to convert so you have the same dimensions, framerate, chroma sampling . The audio specifics have to match too (channels, sampling etc...) if you're using audio in container
It's probably better to join before encoding (e.g. avisynth , as uncompressed frameserved streams before encoding); it reduces your risk of errors
If you want to join after, you should add --stitchable if using x264, it reduces the chance of malunion . I can't recall if libx264 supports it, but it would be called with either -x264opts or -x264params -
Code:
Set "AudioVolume=1.0" Set "ffEXT=ts" @rem unless otherwise specified for debugging reasons turn echo off @if "%EMode%"=="" Set EMode=ON @ECHO %EMode% @ECHO off SetLocal DisableDelayedExpansion Set "EXTLIST=*.*" Set "DoPop=0" Set "ARGLVL=0" Set "FileName-DQ=" set "DestFolder=." Set "WorkFolder=%DestFolder%" rem process the arguments one by one :ARGS color rem if there are no further arguments then exit the batch. if [%1]==[] ( if "%ARGLVL%"=="0" ( CALL :GetTargetName EndLocal pause ) goto :eof ) rem wildcard processing Set "FileName=%~1" if "%FileName%"=="" ( SHIFT goto :ARGS ) rem if the argument doesn't exist in the file system in any form skip it. if NOT EXIST %1 ( SHIFT goto :ARGS ) if NOT [%1]==[] if NOT "%FileName:^*=%%FileName:^?=%"=="%FileName%%FileName%" ( for %%w in (%1) DO ( Set /a ARGLVL+=1 CALL :ARGS "%%~fw" Set /a ARGLVL-=1 ) SHIFT goto :ARGS ) Set "FileName=" rem Set search/recursion variables Set "Pattern=%EXTLIST%" Set "STARTLVL=0" Set "FOUNDLVL=1024" rem if the argument is the current directory then process everything in it. if "%~f1"=="%CD%" ( rem echo Processing Directory "%CD%" CALL :START %1 SHIFT goto :ARGS ) rem Test if the argument is a directory, if it is move to it then process everything in it, if not then move to the file's parent directory and process the file. Then return to starting directory. Type NUL pushd "%~f1" 2> nul if NOT "%errorlevel%"=="0" ( if NOT "%CD%\"=="%~dp1" ( pushd "%~dp1" Set "DoPop=1" ) Set Pattern="%~nx1" ) else ( rem echo Processing Directory "%~f1" Set "DoPop=1" ) CALL :START %1 if "%DoPop%"=="1" ( popd Set "DoPop=0" ) SHIFT goto :ARGS :START <CURRENT_ARG> color rem Count is superseded by FOUNDLVL but may still be useful for renaming purposes Set "Count=0" rem Process all files in the current directory fitting the arguments search pattern. for /f "delims=" %%y in ('dir %Pattern% /b /od /a-d') do ( if /I NOT "%%~y"=="File Not Found" CALL :Process_File "%%~fy" ) rem if it didn't find anything search all directories instead goto :eof if "%Count%"=="0" if %STARTLVL% LSS %FOUNDLVL% ( for /d %%b in (*) do ( pushd "%%~fb" rem echo Processing Directory "%%~fb" Set /a STARTLVL+=1 CALL :START "%%~fb" Set /a STARTLVL-=1 popd ) ) goto :eof :Process_File <FILENAME> color IF EXIST "%cd%\tempFFMPEG\%~n1.%ffEXT%" goto :eof timeout /t 1 if NOT EXIST "v:\automazioneclip\system\empty.wav" ( echo v:\automazioneclip\system\empty.wav not Found! pause ) Set "TokenS=0" Set "lnkError=0" IF "%~x1"==".LNK" Set "TokenS=1" IF "%~x1"==".lnk" Set "TokenS=1" if "%Tokens%"=="1" ( echo ERRORE! non inserire collegamenti .lnk come input! timeout /5 goto :eof ) Set "TokenS=0" Set "Filter=0" IF "%~x1"==".MXF" Set "TokenS=1" IF "%~x1"==".mxf" Set "TokenS=1" IF "%~x1"==".AVI" Set "TokenS=1" IF "%~x1"==".avi" Set "TokenS=1" IF "%~x1"==".MP4" Set "TokenS=1" IF "%~x1"==".mp4" Set "TokenS=1" IF "%~x1"==".MOV" Set "TokenS=1" IF "%~x1"==".mov" Set "TokenS=1" IF "%~x1"==".MKV" Set "TokenS=1" IF "%~x1"==".mkv" Set "TokenS=1" IF "%~x1"==".MPEG" Set "TokenS=1" IF "%~x1"==".mpeg" Set "TokenS=1" IF "%~x1"==".VOB" Set "TokenS=1" IF "%~x1"==".vob" Set "TokenS=1" IF "%~x1"==".MPG" Set "TokenS=1" IF "%~x1"==".mpg" Set "TokenS=1" IF "%~x1"==".MPE" Set "TokenS=1" IF "%~x1"==".mpe" Set "TokenS=1" IF "%~x1"==".FLV" Set "TokenS=1" IF "%~x1"==".flv" Set "TokenS=1" IF "%~x1"==".FLC" Set "TokenS=1" IF "%~x1"==".flc" Set "TokenS=1" IF "%~x1"==".FLI" Set "TokenS=1" IF "%~x1"==".fli" Set "TokenS=1" IF "%~x1"==".SWF" Set "TokenS=1" IF "%~x1"==".swf" Set "TokenS=1" IF "%~x1"==".WMV" Set "TokenS=1" IF "%~x1"==".wmv" Set "TokenS=1" IF "%~x1"==".3GP" Set "TokenS=1" IF "%~x1"==".3gp" Set "TokenS=1" IF "%~x1"==".3gpp" Set "TokenS=1" IF "%~x1"==".3GPP" Set "TokenS=1" IF "%~x1"==".DV" Set "TokenS=1" IF "%~x1"==".dv" Set "TokenS=1" IF "%~x1"==".TS" Set "TokenS=1" IF "%~x1"==".ts" Set "TokenS=1" IF "%~x1"==".QT" Set "TokenS=1" IF "%~x1"==".qt" Set "TokenS=1" IF "%~x1"==".ASF" Set "TokenS=1" IF "%~x1"==".asf" Set "TokenS=1" IF "%~x1"==".AMV" Set "TokenS=1" IF "%~x1"==".amv" Set "TokenS=1" IF "%~x1"==".OGM" Set "TokenS=1" IF "%~x1"==".ogm" Set "TokenS=1" If "%TokenS%"=="1" Set "Filter=1" Set "TokenS=0" Set "isMXF=0" IF "%~x1"==".MXF" Set "TokenS=1" IF "%~x1"==".mxf" Set "TokenS=1" If "%TokenS%"=="1" Set "isMXF=1" If NOT "%Filter%"=="1" ( echo *** input file non MXF o non MP4 o non nei formati .MOV .AVI .MKV .MPEG .VOB .MPG .MPE .FLV .FLI .FLC .SWF .WMV .3GP .DV .TS .QT .ASF .AMV .OGM .3gpp *** goto :eof ) Set "SetMemoryMaxValue=16" echo volume audio uguale a %audiovolume% Set /a Count+=1 Set "FOUNDLVL=%STARTLVL%" SetLocal DisableDelayedExpansion if exist "%~dpn1.wav" ( set "Audio=%~dpn1.wav" ) else ( set "Audio=v:\automazioneclip\system\empty.wav") rem Find TimeCode Info Set AUCount=0; for /f "tokens=1,2 delims=^=" %%g in ('v:\automazioneclip\virtualdub\FFProbe -hide_banner -loglevel fatal -pretty -select_streams v:0 -show_streams -show_entries stream^=codec_type^,r_frame_rate^,width^,height^,sample_aspect_ratio:stream_disposition^=:format_tags^=timecode^,company_name^,product_name^,product_version "%~1" 2^>^&1') DO ( if "%%~g"=="TAG:company_name" set "T_Company_Name=%%~h" if "%%~g"=="TAG:product_name" set "T_Product_Name=%%~h" if "%%~g"=="TAG:product_version" set "T_Product_Version=%%~h" if "%%~g"=="TAG:timecode" set "TIMECODE=%%~h" if "%%~g"=="r_frame_rate" set "Frame_Rate=%%~h" if "%%~g"=="width" set "V_Width=%%~h" if "%%~g"=="height" set "V_Height=%%~h" if "%%~g"=="sample_aspect_ratio" set "V_PAR=%%~h" if "%%~g"=="codec_type" if "%%~h"=="audio" set /a AUCount+=1 ) for /f "tokens=1,2 delims=^=" %%g in ('v:\automazioneclip\virtualdub\FFProbe -hide_banner -loglevel fatal -pretty -select_streams v:0 -show_streams "%~1"') DO ( if "%%~g"=="duration_ts" set "NumberOfFrame=%%~h") echo the variabile T_Company_Name assume this value "%T_Company_Name%" echo the variabile T_Product_Name assume this value "%T_Product_Name%" echo the variabile T_Product_Version assume this value "%T_Product_Version%" echo the variabile TIMECODE assume this value "%TIMECODE%" echo the variabile Frame_Rate assume this value "%Frame_Rate%" echo the variabile V_Width assume this value "%V_Width%" echo the variabile V_Height assume this value "%V_Height%" echo the variabile V_PAR assume this value "%V_PAR%" set /a "forVirtualDubAddRangeWhenDoubleFrameRate"=%NumberOfFrame%/2 echo the variabile NumberOfFrame assume this value "%NumberOfFrame%" so half is echo "%forVirtualDubAddRangeWhenDoubleFrameRate%" rem #### SEARCH for durations: advanced #### Set AUCount=0; Set VDCount=0; Set STCount=0; Set "V_Number_Of_Frames=" for /f "tokens=1,2 delims=^=" %%g in ('v:\automazioneclip\virtualdub\FFProbe -hide_banner -loglevel fatal -pretty -show_format -show_streams "%~1" 2^>^&1') DO ( CALL :Process_Item "%%~g" "%%~h" ) if "%V_Time_Base%"=="" ( echo ERROR: V_Time_Base not found, impossibile rilevare il FrameRate ) if NOT "%V_Time_Base%"=="" ( for /F "tokens=1,2 delims=/" %%g in ("%V_Time_Base%") do ( set "V_Time_Base_Denom=%%~g" set /a "V_Time_Base_Num=%%~h*10000" ) ) if "%V_Frame_Rate%"=="" ( echo ERROR: V_Frame_Rate, impossibile rilevare il FrameRate ) if NOT "%V_Frame_Rate%"=="" ( for /F "tokens=1,2 delims=/" %%g in ("%V_Frame_Rate%") do ( set /a "V_Frame_Rate_Pure=%%~g" set "V_Frame_Rate_Denom_cat=%%~h*100" set /a "V_Frame_Rate_Num=%%~g*10000" set "V_Frame_Rate_Denom=%%~h" ) ) if "%V_Number_Of_Frames%"=="" Set /a "V_Number_Of_Frames=V_Duration/((V_Time_Base_Num/V_Time_Base_Denom)/(V_Frame_Rate_Num/V_Frame_Rate_Denom))" set /a "FPSforVirtualdubX2=%V_Number_Of_Frames%" set /a "FPSforVirtualdubdiv2=%V_Number_Of_Frames%/2" set "FPSforVirtualdub=%V_Number_Of_Frames%" echo numero frame con procedura advanced is %V_Number_Of_Frames% rem #### calculate realFPS with 2 fps calculators echo WScript.Echo Eval^(WScript.Arguments^(0^)^)>"%~dp1FPScalculator1.vbs" echo Result=Replace^(Result,",","."^)>>"%~dp1FPScalculator1.vbs" echo WScript.Echo Result>>"%~dp1FPScalculator1.vbs" IF NOT "%V_Frame_Rate_Pure%"=="" IF NOT "%V_Frame_Rate_Denom%"=="" for /f %%n in ('cscript //nologo "%~dp1FPScalculator1.vbs" "%V_Frame_Rate_Pure%/%V_Frame_Rate_Denom%"') do (set RealFPS2temp=%%n) echo %RealFPS2temp%>"%~dp1RealFPS2temp.txt" v:\automazioneclip\system\fart.exe "%~dp1RealFPS2temp.txt" , "." set /p RealFPS2=<"%~dp1RealFPS2temp.txt" echo Numerator = WScript.Arguments^(0^)>"%~dp1FPScalculator2.vbs" echo Denom = WScript.Arguments^(1^)>>"%~dp1FPScalculator2.vbs" echo Result=Numerator/Denom>>"%~dp1FPScalculator2.vbs" echo WScript.Echo Result>>"%~dp1FPScalculator2.vbs" echo Result=Replace^(Result,",","."^)>>"%~dp1FPScalculator2.vbs" echo WScript.Echo Result>>"%~dp1FPScalculator2.vbs" echo Result=Round^(Numerator/Denom,2^)>>"%~dp1FPScalculator2.vbs" echo Result=Replace^(Result,",","."^)>>"%~dp1FPScalculator2.vbs" echo WScript.Echo Result>>"%~dp1FPScalculator2.vbs" setlocal ENABLEDELAYEDEXPANSION set fcount=1 IF NOT "%V_Frame_Rate_Pure%"=="" IF NOT "%V_Frame_Rate_Denom%"=="" FOR /F "tokens=* USEBACKQ" %%F IN (`cscript /nologo "%~dp1FPScalculator2.vbs" %V_Frame_Rate_Pure% %V_Frame_Rate_Denom%`) DO (set var!fcount!=%%F set /a fcount=!fcount!+1 ) rem echo %var1% rem echo %var2% rem echo %var3% echo %var2%>"%~dp1RealFPStemp.txt" endlocal set /p RealFPS=<"%~dp1RealFPStemp.txt" echo RealFPS is %RealFPS% echo RealFPS2 is %RealFPS2% if exist "%~dp1FPScalculator1.vbs" del "%~dp1FPScalculator1.vbs" if exist "%~dp1FPScalculator2.vbs" del "%~dp1FPScalculator2.vbs" if exist "%~dp1RealFPStemp.txt" del "%~dp1RealFPStemp.txt" if exist "%~dp1RealFPS2temp.txt" del "%~dp1RealFPS2temp.txt" if "%V_Width%"=="" ( echo ERROR: Video Width NOT FOUND! timeout /t 3 goto :eof ) if "%V_Height%"=="" ( echo ERROR: Video Height NOT FOUND! pause goto :eof ) if "%Frame_Rate%"=="" ( echo ERROR: Frame_Rate NOT FOUND! ) if "%V_PAR%"=="" ( echo ERROR: Video PAR NOT FOUND! pause ) if %V_Width% GTR 801 if %V_Height% GTR 609 set "V_Q=HD" if %V_Width% LEQ 800 if %V_Height% LEQ 601 Set "V_Q=SD" if "%V_Width%"=="720" if "%V_Height%"=="608" Set "V_Q=XDCAM_IMX" echo Using %V_Q% Mode echo PAR = %V_PAR% set "ALPHA=0" rem *** check if file is MXF Set "TokenS=0" Set "isMXF=0" IF "%~x1"==".MXF" Set "TokenS=1" IF "%~x1"==".mxf" Set "TokenS=1" If "%TokenS%"=="1" Set "isMXF=1" IF exist "%DestFolder%\unicodefile.txt" DEL "%DestFolder%\unicodefile.txt" IF exist "%DestFolder%\mediainfo.txt" DEL "%DestFolder%\mediainfo.txt" v:\automazioneclip\virtualdub\mediainfo.exe "%~dpnx1" dumpinfo:unicodefile.txt TYPE unicodefile.txt>mediainfo.txt findstr /c:"Codec ID : 0D01030102020201-0401020202010200" "mediainfo.txt" IF NOT ERRORLEVEL 1 (set "dvcam=1") set "PROGRESSIVE=0" findstr /c:"Scan type : Progressive" "mediainfo.txt" IF NOT ERRORLEVEL 1 (set "PROGRESSIVE=1") set "doubleframrate=0" findstr /c:"Frame rate : 50.000 fps" "mediainfo.txt" IF NOT ERRORLEVEL 1 (set "doubleframrate=1") findstr /c:"Codec ID : YUY2" "mediainfo.txt" IF NOT ERRORLEVEL 1 (set "UNCOMPRESSED=1") set "fullHDinterlace=0" set "xdcamhd422=unknown" set "fps=unknown" set "ch_sub=unknown" set "scanInterlace=unknown" findstr /c:"Format profile : 4:2:2@High" "mediainfo.txt" IF NOT ERRORLEVEL 1 (set "xdcamhd422=yes") findstr /c:"Frame rate : 25.000 fps" "mediainfo.txt" IF NOT ERRORLEVEL 1 (set "fps25=yes") findstr /c:"Chroma subsampling : 4:2:2" "mediainfo.txt" IF NOT ERRORLEVEL 1 (set "ch_sub=yes") findstr /c:"Scan type : Interlaced" "mediainfo.txt" IF NOT ERRORLEVEL 1 (set "scanInterlace=yes") findstr /c:"Scan type : Progressive" "mediainfo.txt" IF NOT ERRORLEVEL 1 (set "scanProgressive=yes") findstr /c:"Scan type : MBAFF" "mediainfo.txt" IF NOT ERRORLEVEL 1 (set "scanMBAFF=1") findstr /c:"Height : 1 088" "mediainfo.txt" IF NOT ERRORLEVEL 1 (set "height1088=1") findstr /c:"Original height : 1 088 pixels" "mediainfo.txt" IF NOT ERRORLEVEL 1 (set "Morgan1088=1") if "%xdcamhd422%"=="yes" if "%fps25%"=="yes" if "%ch_sub%"=="yes" if "%scanInterlace%"=="yes" set "fullHDinterlace=1" if "%xdcamhd422%"=="yes" if "%fps25%"=="yes" if "%ch_sub%"=="yes" if "%scanProgressive%"=="yes" set "fullHDprogressive=1" set "IMX=0" findstr /c:"Commercial name : IMX" "mediainfo.txt" IF NOT ERRORLEVEL 1 (set "IMX=1") set "MXFXDCAMHQorSP25fpsinterlaced=0" set "MXFXDCAMHQorSP25fpsProgressive=0" set "fps25=unknown" set "ch_sub420=unknown" set "IMXorDVCAM=no" findstr /c:"Commercial name : XDCAM HD 35" "mediainfo.txt" IF NOT ERRORLEVEL 1 (set "xdcamhd35=yes") findstr /c:"Commercial name : XDCAM HD 25" "mediainfo.txt" IF NOT ERRORLEVEL 1 (set "xdcamhd25=yes") findstr /c:"Format : MPEG Video" "mediainfo.txt" IF NOT ERRORLEVEL 1 (set "mpegvideoF335=yes") findstr /c:"Commercial name : HDV 1080i" "mediainfo.txt" IF NOT ERRORLEVEL 1 (set "HDV1080i=yes") findstr /c:"Commercial name : HDV 1080p" "mediainfo.txt" IF NOT ERRORLEVEL 1 (set "HDV1080p=yes") findstr /c:"Frame rate : 25.000 fps" "mediainfo.txt" IF NOT ERRORLEVEL 1 (set "fps25=yes") findstr /c:"Frame rate : 50.000 fps" "mediainfo.txt" IF NOT ERRORLEVEL 1 (set "fps50=yes") findstr /c:"Frame rate : 25.000 fps" "mediainfo.txt" IF NOT ERRORLEVEL 1 (set "fps25tag=1") findstr /c:"Chroma subsampling : 4:2:0" "mediainfo.txt" IF NOT ERRORLEVEL 1 (set "ch_sub420=yes") findstr /c:"Scan type : Interlaced" "mediainfo.txt" IF NOT ERRORLEVEL 1 (set "scanInterlace=yes") findstr /c:"Scan type : Progressive" "mediainfo.txt" IF NOT ERRORLEVEL 1 (set "scanProgressive420=yes") findstr /c:"Width : 720" "mediainfo.txt" IF NOT ERRORLEVEL 1 (set "IMXorDVCAM=yes") findstr /c:"Width : 1 920" "mediainfo.txt" IF NOT ERRORLEVEL 1 (set "H1920=yes") findstr /c:"Height : 1 080" "mediainfo.txt" IF NOT ERRORLEVEL 1 (set "V1080=yes") findstr /c:"Scan order : Bottom Field First" "mediainfo.txt" IF NOT ERRORLEVEL 1 (set "ScanBottom=1") findstr /c:"Rotation : 90ø" "mediainfo.txt" IF NOT ERRORLEVEL 1 (set "rotation=1") findstr /c:"Color space : RGBA" "mediainfo.txt" IF NOT ERRORLEVEL 1 (set "ALPHACHANNEL=1") rem *** check FOR MP4 *** Set "isMP4=0" Set "TokenS=0" IF "%~x1"==".MP4" Set "TokenS=1" IF "%~x1"==".mp4" Set "TokenS=1" If "%TokenS%"=="1" Set "isMP4=1" rem *** check FOR MP4 *** if "%xdcamhd35%"=="yes" if "%fps25%"=="yes" if "%ch_sub420%"=="yes" if "%scanInterlace%"=="yes" set "MXFXDCAM3525fpsinterlaced=1" if "%HDV1080i%"=="yes" if "%fps25%"=="yes" if "%ch_sub420%"=="yes" if "%scanInterlace%"=="yes" set "MXFXDCAMHDV1080i25fpsinterlaced=1" if "%mpegvideoF335%"=="yes" if "%fps25%"=="yes" if "%ch_sub420%"=="yes" if "%scanInterlace%"=="yes" set "MXFXDCAMF335interlaced=1" set "MXFXDCAMHQorSP25fpsinterlaced=0" if "%MXFXDCAM3525fpsinterlaced%"=="1" set "MXFXDCAMHQorSP25fpsinterlaced=1" if "%MXFXDCAMHDV1080i25fpsinterlaced%"=="1" set "MXFXDCAMHQorSP25fpsinterlaced=1" if "%MXFXDCAMF335interlaced%"=="1" set "MXFXDCAMHQorSP25fpsinterlaced=1" if "%xdcamhd35%"=="yes" if "%fps25%"=="yes" if "%ch_sub420%"=="yes" if "%scanProgressive420%"=="yes" set "MXFXDCAM3525fpsProgressive=1" if "%xdcamhd35%"=="yes" if "%ch_sub420%"=="yes" if "%scanProgressive420%"=="yes" if "%doubleframrate%"=="1" set "MXFXDCAM35_50fps_Progressive=1" if "%xdcamhd25%"=="yes" if "%ch_sub420%"=="yes" if "%scanProgressive420%"=="yes" if "%doubleframrate%"=="1" set "MXFXDCAM25_50fps_Progressive=1" if "%MXFXDCAM35_50fps_Progressive%"=="1" set "MXFXDCAM35or25_50fps_Progressive=1" if "%MXFXDCAM25_50fps_Progressive%"=="1" set "MXFXDCAM35or25_50fps_Progressive=1" if "%HDV1080p%"=="yes" if "%fps25%"=="yes" if "%ch_sub420%"=="yes" if "%scanProgressive420%"=="yes" set "MXFXDCAMHDV1080p25fpsProgressive=1" set "MXFXDCAMHQorSP25fpsProgressive=0" if "%MXFXDCAM3525fpsProgressive%"=="1" set "MXFXDCAMHQorSP25fpsProgressive=1" if "%MXFXDCAMHDV1080p25fpsProgressive%"=="1" set "MXFXDCAMHQorSP25fpsProgressive=1" set "dvcamPal=0" if "%dvcam%"=="1" if "%fps25tag%"=="1" Set "dvcamPal=1" set "fullHD=0" if "%H1920%"=="yes" if "%V1080%"=="yes" Set "fullHD=1" rem ***debugecho xdcamhd35interlacciato uguale a "%MXFXDCAM3525fpsinterlaced%" rem ***debug echo HDV1080iinterlacciato uguale a "%MXFXDCAMHDV1080i25fpsinterlaced%" rem ***debug echo MXFXDCAMHQorSP25fpsinterlaced "%MXFXDCAMHQorSP25fpsinterlaced%" rem ***debug echo MXFXDCAM3525fpsProgressive "%MXFXDCAM3525fpsProgressive%" rem ***debug echo MXFXDCAMHDV1080p25fpsProgressive "%MXFXDCAMHDV1080p25fpsProgressive%" rem ***debug echo MXFXDCAMHQorSP25fpsProgressive "%MXFXDCAMHQorSP25fpsProgressive%" Set "TokenS=0" Set "ScanProgressive25fps=0" if "%fps25%"=="yes" if "%scanProgressive%"=="yes" Set "ScanProgressive25fps=1" echo fps25 is %fps25% echo scanProgressive %scanProgressive% echo ScanProgressive25fps is %ScanProgressive25fps% Set "TokenS=0" Set "H1088=0" if "%H1920%"=="yes" if "%height1088%"=="1" Set "H1088=1" if "%H1920%"=="yes" if "%Morgan1088%"=="1" Set "H1088=1" Set "TokenS=0" Set "ScanBottomORdvcam=0" if "%ScanBottom%"=="1" Set "TokenS=1" if "%dvcam%"=="1" Set "TokenS=1" IF "%TokenS%"=="1" Set "ScanBottomORdvcam=1" rem *** check if file is MXF non-PAL*** Set "TokenS=0" Set "fps25OR50=0" Set "MXFnonPAL=0" if "%fps25%"=="yes" Set "TokenS=1" if "%fps50%"=="yes" Set "TokenS=1" if "%TokenS%"=="1" Set "fps25OR50=1" Set "TokenS=0" Set "isMXF=0" IF "%~x1"==".MXF" Set "TokenS=1" IF "%~x1"==".mxf" Set "TokenS=1" If "%TokenS%"=="1" Set "isMXF=1" If "%isMXF%"=="1" if NOT "%fps25OR50%"=="1" Set "MXFnonPAL=1" rem *** check if file is MXF and - at the same time - any HD *** Set "TokenS=0" Set "isMXF=0" set "HDformat=0" set "mxfHD422=0" set "mxfHD420=0" set "Ch_Sub422=unknown" set "Ch_Sub420=unknown" if %V_Height% GEQ 720 (Set "HDformat=1") IF "%~x1"==".MXF" Set "TokenS=1" IF "%~x1"==".mxf" Set "TokenS=1" If "%TokenS%"=="1" Set "isMXF=1" findstr /c:"Chroma subsampling : 4:2:2" "mediainfo.txt" IF NOT ERRORLEVEL 1 (set "Ch_Sub422=yes") findstr /c:"Chroma subsampling : 4:2:0" "mediainfo.txt" IF NOT ERRORLEVEL 1 (set "Ch_Sub420=yes") Set "ScanTypeProgressive=0" Set "ScanTypeInterlaced=0" findstr /c:"Scan type : Progressive" "mediainfo.txt" IF NOT ERRORLEVEL 1 (set "ScanTypeProgressive=1") findstr /c:"Scan type : Interlaced" "mediainfo.txt" IF NOT ERRORLEVEL 1 (set "ScanTypeInterlaced=1") rem *** check if is an .avi mjpeg input file Set "TokenS=0" Set "isAVI=0" IF "%~x1"==".AVI" Set "TokenS=1" IF "%~x1"==".avi" Set "TokenS=1" If "%TokenS%"=="1" Set "isAVI=1" Set "TokenS=0" IF "%isAVI%"=="1" (v:\automazioneclip\virtualdub\mediainfo.exe "%~dp1%~n1.avi" dumpinfo:unicodefile.txt TYPE unicodefile.txt>mediainfo.txt) findstr /c:"Codec ID : MJPG" "mediainfo.txt" IF NOT ERRORLEVEL 1 (set "AVImjpeg=1") Set "TokenS=0" Set "AVIMJPEG_OR_AVIUNCOMPRESSED"=0" IF "%isAVI%"=="1" if "%AVImjpeg%"=="1" Set "TokenS=1" IF "%isAVI%"=="1" if "%UNCOMPRESSED%"=="1" Set "TokenS=1" If "%TokenS%"=="1" Set "AVIMJPEG_OR_AVIUNCOMPRESSED=1" rem if "%AVImjpeg%"=="1" (CALL :Make_File_AVImjpeg "%WorkFolder%\%~n1.vcf" "%WorkFolder%\%~n1.avs" "%WorkFolder%\%~n1.avi" "%~f1") rem if "%UNCOMPRESSED%"=="1" (CALL :Make_File_AVImjpeg "%WorkFolder%\%~n1.vcf" "%WorkFolder%\%~n1.avs" "%WorkFolder%\%~n1.avi" "%~f1") IF NOT "%ScanTypeProgressive%"=="1" IF NOT "%ScanTypeInterlaced%"=="1" Set "ScanTypeProgressive=1" IF "%scanMBAFF%"=="1" set "ScanTypeInterlaced=1" IF "%scanMBAFF%"=="1" Set "ScanTypeProgressive=0" if exist "unicodefile.txt" del "unicodefile.txt" if exist "ascii.txt" del "ascii.txt" if exist "mediainfo.txt" del "mediainfo.txt" if exist "%DestFolder%\tempFFMPEG\tempVideoAudioFile.MP4" del "%DestFolder%\tempFFMPEG\tempVideoAudioFile.MP4" rem *** redirect to generic CONFI or MAIN procedure If "%Filter%"=="1" if "%fullHDinterlace%"=="1" (CALL :Make_File_CONFI "%WorkFolder%\%~n1.vcf" "%WorkFolder%\%~n1.avs" "%WorkFolder%\%~n1.avi" "%~f1") If "%Filter%"=="1" IF NOT "%fullHDinterlace%"=="1" (CALL :Make_File_MAIN "%WorkFolder%\%~n1.vcf" "%WorkFolder%\%~n1.avs" "%WorkFolder%\%~n1.avi" "%~f1") echo FATTO echo. echo --------------------------------------------- echo. EndLocal goto :eof :Process_Item <item_field> <item_data> color if "%~2"=="N/A" goto :eof if "%~1"=="[/STREAM]" ( set "CType=" goto :eof ) if "%~1"=="[/FORMAT]" ( set "CType=" goto :eof ) if "%~1"=="[FORMAT]" ( set "CType=FORMAT" goto :eof ) if "%~1"=="index" Set "cur_index=%~2" if "%~1"=="codec_name" Set "cur_codec=%~2" if "%~1"=="codec_type" ( if "%~2"=="audio" ( set /a AUCount+=1 set "CType=audio" ) if "%~2"=="video" if NOT "%cur_codec%"=="mjpeg" ( Set /a VDCount+=1 set "CType=video" ) if "%~2"=="subtitle" ( Set /a STCount+=1 set "CType=subtitle" ) goto :eof ) if "%CType%"=="FORMAT" ( if "%~1"=="TAG:company_name" set "T_Company_Name=%~2" if "%~1"=="TAG:product_name" set "T_Product_Name=%~2" if "%~1"=="TAG:product_version" set "T_Product_Version=%~2" if "%~1"=="TAG:timecode" set "TIMECODE=%~2" goto :eof ) if "%CType%"=="video" ( if %VDCount% GTR 1 ( echo Multiple Video Streams!!!! pause ) if "%~1"=="time_base" set "V_Time_Base=%~2" if "%~1"=="r_frame_rate" set "V_Frame_Rate=%~2" if "%~1"=="duration_ts" set "V_Duration=%~2" if "%~1"=="width" set "V_Width=%~2" if "%~1"=="height" set "V_Height=%~2" if "%~1"=="sample_aspect_ratio" set "V_PAR=%~2" if "%~1"=="nb_frames" set "V_Number_Of_Frames=%~2" goto :eof ) goto :eof :Make_File_CONFI <VCF_FILENAME> <AVS_FILENAME> <FILENAME> <ORG_FILENAME> IF EXIST "%cd%\tempFFMPEG\%~n1.%ffEXT%" goto :eof color a REM ************************************************************************************************** FFMPEG CONFI SESSION ************************************************************************************************** if not exist "%cd%\tempFFMPEG" MD "%cd%\tempFFMPEG" if exist "%cd%\tempFFMPEG\tempVideoAudioFile.%ffEXT%" del "%cd%\tempFFMPEG\tempVideoAudioFile.%ffEXT%" v:\automazioneclip\core\ffmpeg64bit332.exe -y -threads 12 -i %4 -filter_complex "[0:1] [0:2] amerge" -s 1920x1080 -r 25 -f mp4 -vf scale=interl=1,format=pix_fmts=yuv420p -pix_fmt yuv420p -c:v libx264 -profile:v main -level:v 4.1 -x264-params me_range=4:subme=1:rc_lookahead=1:chroma_qp_offset=0:8x8dct=1 -g 100 -bf 2 -crf 22.8 -flags +ildct+ilme -top 1 -c:a ac3 -b:a 320k -ar 48000 -aspect 16:9 "%cd%\tempFFMPEG\tempVideoAudioFile.%ffEXT%" ren "%cd%\tempFFMPEG\tempVideoAudioFile.%ffEXT%" "%~n1.%ffEXT%" REM ************************************************************************************************************************************************************************************************************************** if exist "unicodefile.txt" del "unicodefile.txt" if exist "ascii.txt" del "ascii.txt" if exist "mediainfo.txt" del "mediainfo.txt" IF exist "%cd%\tempFFMPEG\tempVideoAudioFile.%ffEXT%" del "%cd%\tempFFMPEG\tempVideoAudioFile.%ffEXT%" if exist "%cd%\tempFFMPEGAudio\%~n1.wav" del "%cd%\tempFFMPEGAudio\%~n1.wav" color f goto :eof :Make_File_MAIN <VCF_FILENAME> <AVS_FILENAME> <FILENAME> <ORG_FILENAME> IF EXIST "%cd%\tempFFMPEG\%~n1.%ffEXT%" goto :eof color e IF "%AudioVolume%"=="" ( echo ERRORE !!! per qualche motivo non è stata definita la variabile AudioVolume !!! pause ) ) echo ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ echo ³ ³ echo ³ MAIN ³ echo ³ ³ echo ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ echo. Set "TokenS=0" Set "fps25OR50=0" if "%fps25%"=="yes" Set "TokenS=1" if "%fps50%"=="yes" Set "TokenS=1" if "%TokenS%"=="1" Set "fps25OR50=1" if NOT "%fps25OR50%"=="1" color c rem ********** TRY to extract audio from input source ********** if exist "%~dp1TESTonly.wav" del "%~dp1TESTonly.wav" rem *** procedura 1 sembra per ALTRI TIPI di files *** if not "%isMXF%"=="1" v:\automazioneclip\core\ffmpeg.exe -y -loglevel fatal -i %4 -ss 00:00:00 -t 00:00:10 -af "pan=stereo:c0=c0:c1=c1,volume=1.0" -c:a pcm_s16le -ar 48000 "%~dp1TESTonly.wav" for %%v in ("TESTonly.wav") do ( if %%~zv LSS 128 ( del "%WorkFolder%\TESTonly.wav" ) ) rem *** procedura 2 per MXF IMX *** if "%isMXF%"=="1" if "%IMX%"=="1" v:\automazioneclip\core\ffmpeg.exe -y -loglevel fatal -i %4 -ss 00:00:00 -t 00:00:10 -map_channel 0.1.0 -map_channel 0.1.1 -c:a pcm_s16le -ar 48000 "%~dp1TESTonly.wav" for %%v in ("TESTonly.wav") do ( if %%~zv LSS 128 ( del "%WorkFolder%\TESTonly.wav" ) ) rem *** procedura 3 per MXF HD e DVCAM *** if "%isMXF%"=="1" if NOT "%IMX%"=="1" v:\automazioneclip\core\ffmpeg.exe -y -loglevel fatal -i %4 -ss 00:00:00 -t 00:00:10 -filter_complex "[0:1] [0:2] amerge,volume=1.0" -c:a pcm_s16le -ar 48000 "%~dp1TESTonly.wav" for %%v in ("TESTonly.wav") do ( if %%~zv LSS 128 ( del "%WorkFolder%\TESTonly.wav" ) ) Set "NoAudioInsideInputFile=0" rem if NOT exist "%~dp1TESTonly.wav" xcopy /y v:\automazioneclip\system\empty.wav "%~dp1" if NOT exist "%~dp1TESTonly.wav" Set "AudioSource=v:\automazioneclip\system\empty.wav" if NOT exist "%~dp1TESTonly.wav" Set "NoAudioInsideInputFile=1" if exist "%~dp1TESTonly.wav" Set "AudioSource=%4" echo audioSource assume %AudioSource% rem ren "%~dp1empty.wav" "%~n1_HD.wav" if exist "%~dp1empty.wav" del "%~dp1empty.wav" if exist "%~dp1TESTonly.wav" del "%~dp1TESTonly.wav" cls echo PROCESSING %4 echo isMP4 assume %isMP4% echo Ch_Sub422 assume %Ch_Sub422% echo progressive assume %PROGRESSIVE% echo fullHD assume %fullHD% echo IMXorDVCAM assume %IMXorDVCAM% rem ***Make The .avs Script File *** if exist "%~n1_HD.avs" del "%~n1_HD.avs" echo SetMemoryMax^(%SetMemoryMaxValue%^)>"%~n1_HD.avs" echo Import^("v:\automazioneclip\avisynth\plugins\IResize.avsi"^)>>"%~n1_HD.avs" echo LoadPlugin^("v:\automazioneclip\avisynth\plugins\LSMASHSource.dll"^)>>"%~n1_HD.avs" echo LoadCPlugin("v:\automazioneclip\avisynth\plugins\yadif.dll")>>"%~n1_HD.avs" IF "%isMP4%"=="1" echo LSMASHVideoSource^(%4^)>>"%~n1_HD.avs" IF NOT "%isMP4%"=="1" echo LWLibavVideoSource^(%4^)>>"%~n1_HD.avs" if "%PROGRESSIVE%"=="1" echo ConvertToYUY2^(interlaced=false^)>>"%~n1_HD.avs" IF NOT "%PROGRESSIVE%"=="1" echo ConvertToYUY2^(interlaced=true^)>>"%~n1_HD.avs" if "%IMXorDVCAM%"=="yes" echo colorMatrix^(mode="Rec.601->Rec.709"^)>>"%~n1_HD.avs" IF "%IMX%"=="1" echo crop^(0,32,0,0^)>>"%~n1_HD.avs" if NOT "%fullHD%"=="1" if NOT "%PROGRESSIVE%"=="1" if not "%H1088%"=="1" echo IResize^(1920,1080^)>>"%~n1_HD.avs" if NOT "%fullHD%"=="1" if "%PROGRESSIVE%"=="1" if not "%H1088%"=="1" echo LanczosResize^(1920,1080^)>>"%~n1_HD.avs" if "%ScanBottomORdvcam%"=="1" echo ReverseFieldDominance^(^)>>"%~n1_HD.avs" IF "%H1088%"=="1" echo crop^(0,0,1920,1080^)>>"%~n1_HD.avs" echo ### ATTENZIONE l'uso dei filtri ColorYUV rende difficile il playback in realtime ###>>"%~n1_HD.avs" echo #ColorYUV^(levels="PC->TV"^)>>"%~n1_HD.avs" echo #ColorYUV^(gamma_y=-7, gamma_u=-7, gamma_v=-7^)>>"%~n1_HD.avs" echo #TurnLeft^(^)>>"%~n1_HD.avs" echo #TurnRight^(^)>>"%~n1_HD.avs" IF "%rotation%"=="1" echo Turn180^(^)>>"%~n1_HD.avs" if NOT "%fps25OR50%"=="1" if NOT "%PROGRESSIVE%"=="1" echo yadif^(1,1^)>>"%~n1_HD.avs" if NOT "%fps25OR50%"=="1" echo SmoothFPS2^(50000,1000^)>>"%~n1_HD.avs" if NOT "%fps25OR50%"=="1" echo AssumeTFF().SeparateFields().SelectEvery(4, 0, 3).Weave()>>"%~n1_HD.avs" if "%fps50%"=="yes" echo AssumeTFF().SeparateFields().SelectEvery(4, 0, 3).Weave()>>"%~n1_HD.avs" echo AssumeFPS^(25^)>>"%~n1_HD.avs" Set "TokenS=0" if "%MXFnonPAL%"=="1" set "TokenS=1" if "%fps25OR50%"=="1" set "TokenS=1" if NOT "%fps25OR50%"=="1" set "TokenS=1" if "%TokenS%"=="1" set "MXFnonPAL_OR_fps25OR50_OR_NOT25or50=1" echo MXFnonPAL_OR_fps25OR50_OR_NOT25or50 assume %MXFnonPAL_OR_fps25OR50_OR_NOT25or50% rem *** audio processing for MXF IMX 25 or 50 FPS*** if not exist "%cd%\tempFFMPEGAudio" MD "%cd%\tempFFMPEGAudio" IF NOT EXIST "%cd%\tempFFMPEGAudio\%~n1.wav" if "%isMXF%"=="1" if "%fps25OR50%"=="1" IF "%IMX%"=="1" v:\automazioneclip\core\ffmpeg.exe -y -loglevel fatal -i %AudioSource% -af "pan=stereo:c0=c0:c1=c1,volume=%AudioVolume%" -c:a pcm_s16le -ar 48000 "%cd%\tempFFMPEGAudio\%~n1.wav" rem *** audio processing for MXF HD & DVCAM files 25 or 50 FPS *** IF NOT EXIST "%cd%\tempFFMPEGAudio\%~n1.wav" if "%isMXF%"=="1" if "%fps25OR50%"=="1" IF NOT "%IMX%"=="1" v:\automazioneclip\core\ffmpeg.exe -y -loglevel fatal -i %AudioSource% -filter_complex "[0:1] [0:2] amerge,volume=%AudioVolume%" -c:a pcm_s16le -ar 48000 "%cd%\tempFFMPEGAudio\%~n1.wav" rem #### check duration of .avi gen file #### if exist aviGenDuration.txt del aviGenDuration.txt if NOT "%fps25OR50%"=="1" v:\automazioneclip\core\FFProbe2016 -show_entries format=duration -v quiet -of csv="p=0" -sexagesimal "%~n1_HD.avs" >aviGenDuration.txt if NOT "%fps25OR50%"=="1" set /p aviGenDuration=<aviGenDuration.txt rem ************************************** AUDIO PARTICULAR processing ********************************************************************************************************************************************************** IF NOT EXIST "%cd%\tempFFMPEGAudio\%~n1.wav" if "%isMXF%"=="1" IF NOT "%IMX%"=="1" if NOT "%fps25OR50%"=="1" v:\automazioneclip\core\ffmpeg.exe -y -loglevel fatal -i %AudioSource% -filter_complex "[0:1] [0:2] amerge,volume=1.0,apad" -shortest -t %aviGenDuration% -c:a pcm_s16le -ar 48000 "%cd%\tempFFMPEGAudio\%~n1.wav" IF NOT EXIST "%cd%\tempFFMPEGAudio\%~n1.wav" if "%isMXF%"=="1" IF "%IMX%"=="1" if NOT "%fps25OR50%"=="1" v:\automazioneclip\core\ffmpeg.exe -y -loglevel fatal -i %AudioSource% -af "pan=stereo:c0=c0:c1=c1,volume=1.0,apad" -shortest -t %aviGenDuration% -c:a pcm_s16le -ar 48000 "%cd%\tempFFMPEGAudio\%~n1.wav" IF NOT EXIST "%cd%\tempFFMPEGAudio\%~n1.wav" if not "%isMXF%"=="1" if NOT "%fps25OR50%"=="1" v:\automazioneclip\core\ffmpeg.exe -y -loglevel fatal -i %AudioSource% -af "pan=stereo:c0=c0:c1=c1,volume=1.0,apad" -shortest -t %aviGenDuration% -c:a pcm_s16le -ar 48000 "%cd%\tempFFMPEGAudio\%~n1.wav" IF NOT EXIST "%cd%\tempFFMPEGAudio\%~n1.wav" if "%NoAudioInsideInputFile%"=="1" IF NOT EXIST "%~n1.wav" v:\automazioneclip\core\ffmpeg.exe -y -loglevel fatal -i %AudioSource% -af "pan=stereo:c0=c0:c1=c1,volume=1.0,apad" -shortest -t %aviGenDuration% -c:a pcm_s16le -ar 48000 "%cd%\tempFFMPEGAudio\%~n1.wav" rem ************************************** AUDIO PARTICULAR processing ********************************************************************************************************************************************************* rem *** audio processing for NON-MXF FILES 25 or 50 fps *** for /f "tokens=1,2 delims=^=" %%g in ('v:\automazioneclip\virtualdub\FFProbe -hide_banner -loglevel fatal -pretty -select_streams v:0 -show_streams -show_entries stream^=codec_type^,duration^,r_frame_rate^,width^,height^,sample_aspect_ratio:stream_disposition^=:format_tags^=timecode^,company_name^,product_name^,product_version "%~n1_HD.avs" 2^>^&1') DO ( if "%%~g"=="duration" set "aviDuration=%%~h" ) IF NOT EXIST "%cd%\tempFFMPEGAudio\%~n1.wav" if NOT "%isMXF%"=="1" if "%fps25OR50%"=="1" v:\automazioneclip\core\ffmpeg.exe -y -loglevel fatal -i %AudioSource% -af "pan=stereo:c0=c0:c1=c1,volume=1.0,apad" -shortest -t %aviDuration% -c:a pcm_s16le -ar 48000 "%cd%\tempFFMPEGAudio\%~n1.wav" IF NOT EXIST "%cd%\tempFFMPEGAudio\%~n1.wav" if "%NoAudioInsideInputFile%"=="1" v:\automazioneclip\core\ffmpeg.exe -y -loglevel fatal -i %AudioSource% -af "pan=stereo:c0=c0:c1=c1,volume=1.0,apad" -shortest -t %aviDuration% -c:a pcm_s16le -ar 48000 "%cd%\tempFFMPEGAudio\%~n1.wav" IF NOT EXIST "%cd%\tempFFMPEGAudio\%~n1.wav" if NOT "%NoAudioInsideInputFile%"=="1" v:\automazioneclip\core\ffmpeg.exe -y -loglevel fatal -i "%~n1.avi" -af "pan=stereo:c0=c0:c1=c1,volume=1.0" -c:a pcm_s16le -ar 48000 "%cd%\tempFFMPEGAudio\%~n1.wav" IF NOT EXIST "%cd%\tempFFMPEGAudio\%~n1.wav" if "%NoAudioInsideInputFile%"=="1" IF EXIST "%~n1.wav" v:\automazioneclip\core\ffmpeg.exe -y -loglevel fatal -i "%~n1.wav" -af "pan=stereo:c0=c0:c1=c1,volume=1.0" -c:a pcm_s16le -ar 48000 "%cd%\tempFFMPEGAudio\%~n1.wav" IF NOT EXIST "%cd%\tempFFMPEGAudio\%~n1.wav" if "%NoAudioInsideInputFile%"=="1" IF NOT EXIST "%~n1.wav" v:\automazioneclip\core\ffmpeg.exe -y -loglevel fatal -i %AudioSource% -af "pan=stereo:c0=c0:c1=c1,volume=1.0,apad" -shortest -t %aviDuration% -c:a pcm_s16le -ar 48000 "%cd%\tempFFMPEGAudio\%~n1.wav" REM ************************************************************************************************** FFMPEG MAIN SESSION ************************************************************************************************** if not exist "%cd%\tempFFMPEG" MD "%cd%\tempFFMPEG" if exist "%cd%\tempFFMPEG\tempVideoAudioFile.%ffEXT%" del "%cd%\tempFFMPEG\tempVideoAudioFile.%ffEXT%" v:\automazioneclip\core\ffmpeg.exe -y -i "%~n1_HD.avs" -i "%cd%\tempFFMPEGAudio\%~n1.wav" -s 1920x1080 -r 25 -f mp4 -vf scale=interl=1,format=pix_fmts=yuv420p -pix_fmt yuv420p -c:v libx264 -profile:v main -level:v 4.1 -x264-params me_range=4:subme=1:rc_lookahead=1:chroma_qp_offset=0:8x8dct=1 -g 100 -bf 2 -crf 22.8 -flags +ildct+ilme -top 1 -c:a ac3 -b:a 320k -ar 48000 -aspect 16:9 "%cd%\tempFFMPEG\tempVideoAudioFile.%ffEXT%" ren "%cd%\tempFFMPEG\tempVideoAudioFile.%ffEXT%" "%~n1.%ffEXT%" REM ************************************************************************************************************************************************************************************************************************* if exist "unicodefile.txt" del "unicodefile.txt" if exist "ascii.txt" del "ascii.txt" if exist "mediainfo.txt" del "mediainfo.txt" IF exist "%cd%\tempFFMPEG\tempVideoAudioFile.%ffEXT%" del "%cd%\tempFFMPEG\tempVideoAudioFile.%ffEXT%" if exist "%~n1_HD.avs" del "%~n1_HD.avs" del *.lwi if exist "%cd%\tempFFMPEGAudio\%~n1.wav" del "%cd%\tempFFMPEGAudio\%~n1.wav" goto :eof :GetTargetName color Set "FileName=" rem Set /p FileName=InputFileName rem Add or remove double-quotes if necessary if NOT DEFINED FileName ( Set "FileName-DQ=" goto :DQSkip ) Set "FileName-DQ=%FileName:"=%" if NOT DEFINED FileName-DQ ( Set "FileName=" Set "FileName-DQ=" goto :DQSkip ) if EXIST "%FileName-DQ%" ( if "%FileName-DQ%"=="%FileName-DQ: =%" ( Set "FileName=%FileName-DQ%" ) else ( Set FileName="%FileName-DQ%" ) ) :DQSkip color if /I "%FileName-DQ%"=="" Set FileName="%CD%" if /I "%FileName-DQ%"=="CD" Set FileName="%CD%" if /I "%FileName-DQ%"=="EXIT" goto :eof if /I "%FileName-DQ%"=="NOEXIT" goto :GetTargetName if DEFINED FileName ( Set /a ARGLVL+=1 CALL :ARGS %FileName% Set /a ARGLVL-=1 ) goto :GetTargetName
-
Hi , below my tries :
Supposing a directory e:\temp in witch are
_ Batch.bat
_ clipA.MP4
_ clipB.MP4
+
_clip.txt
+
_ ClipA1.mp4
_ClipB1.mp4
+ result
2_Clip.mp4
===
clip.txt
Code:file 'e:\temp\ClipA1.mp4' file 'e:\temp\ClipB1.mp4'
===
Batch.bat
Code:@echo on "...\ffmpeg.exe" -i clipA.MP4 -map 0:1 -map 0:0 -vcodec libx264 -acodec libmp3lame -aq 5 -ac 2 -qmax 25 -b:v 9060 ClipA1.mp4 pause "...\ffmpeg.exe" -i clipB.MP4 -vcodec libx264 -acodec libmp3lame -aq 5 -ac 2 -qmax 25 -b:v 9060 ClipB1.mp4 pause "...\ffmpeg.exe" -f concat -i clip.txt -c copy "2_Clip.mp4" pause :fin
NOTE : only shorts sound !?!?!?
Cheers .JE SUIS CHARLIE !!! -
-
Man, you really do a ridiculous amount of right turns trying to avoid doing a left turn. Rube Goldberg, much?
I know you won't listen to me this time either, since you haven't the multitude of times before, but if you just bit the bullet and upgraded to an NLE from this CENTURY, you would be able to smoothly and almost automatically do half of the things you come here asking help for. Saving you lots of precious time.
Not averse to helping, but until you wake up and upgrade, and until you get over your fixation with felines, this is the only kind of comment you'll get from me.
Scott -
-
thank you but in this way you re-code, if possible I don't want recode: consider that the .mp4 are encoded starting from the "original" .MXF file and I try to understand if there is a way to do a batch that for all .mxf files that are in a directory, generate a correspondant .mp4 files that are, finally, concatenable using ffmpeg
-
-
mmm maybe but, if possible, I try to do a way that for all "universal" formats [ideed the format included in the "filter" section that the format managed by the LSMASHsource] in a watched directory --> take an output .mp4 (with a target output parameters, in my case an Interlaced HD 4:2:0 ) that are alwais conCATenable.
Maybe it's an experimentLast edited by marcorocchini; 31st Jul 2017 at 10:31.
-
Hi ,
====
In your post https://forum.videohelp.com/threads/384431-FFMPEG-why-I-cannot-f-concat-this-2-video-f...es#post2492154
you can read :
---
Input #0, concat, from 'concatlist.txt':
Duration: N/A, start: -0.005333, bitrate: 32191 kb/s
Stream #0:0(und): Audio: ac3 (ac-3 / 0x332D6361), 48000 Hz, stereo, fltp, 320 kb/s
Metadata:
handler_name : SoundHandler
Stream #0:1(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 31871 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc
Metadata:
handler_name : VideoHandler
---
=> Stream #0:0(und): Audio
=> Stream #0:1(und): Video
====
====
You can find , with : ffmpeg -i your-vid
====
====
For changing ffmpeg -i your-vid -map 0:1 -map 0:0 .....
=> Stream #0:0(und): Video
=> Stream #0:1(und): Audio
====
!!! NOTE : you must recode the quality of streams are not equal . !!!
Cheers.JE SUIS CHARLIE !!! -
please consider my MXF source clipA.MXF
https://www.dropbox.com/s/hjd72fs0ce68i5y/clipA.MXF?dl=0
that have 8 mono track audio channel.
Usually I use something like this:
Code:ffmpeg.exe -y -i clipA.mxf -filter_complex "[0:1] [0:2] amerge" -c:v libx264 -profile:v main -level:v 4.1 [...] -c:a ac3 -b:a 320k -ar 48000 -aspect 16:9 output.mp4
The results become something like this:
Code:General Complete name : V:\S\clipA_cat.mp4 Format : MPEG-4 Format profile : Base Media Codec ID : isom File size : 10.6 MiB Duration : 3s 200ms Overall bit rate : 27.7 Mbps Writing application : Lavf57.71.100 Video ID : 2 Format : AVC Format/Info : Advanced Video Codec Format profile : High@L4.1 Format settings, CABAC : Yes Format settings, ReFrames : 4 frames Codec ID : avc1 Codec ID/Info : Advanced Video Coding Duration : 3s 200ms Bit rate : 27.3 Mbps Width : 1 920 pixels Height : 1 080 pixels Display aspect ratio : 16:9 Frame rate mode : Constant Frame rate : 25.000 fps Color space : YUV Chroma subsampling : 4:2:0 Bit depth : 8 bits Scan type : MBAFF Bits/(Pixel*Frame) : 0.527 Stream size : 10.4 MiB (99%) Writing library : x264 core 152 r2851 ba24899 Encoding settings : cabac=1 / ref=3 / deblock=1:0:0 / analyse=0x3:0x113 / me=hex / subme=1 / psy=1 / psy_rd=1.00:0.00 / mixed_ref=1 / me_range=4 / chroma_me=1 / trellis=1 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=0 / threads=12 / lookahead_threads=2 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=tff / bluray_compat=0 / constrained_intra=0 / bframes=2 / b_pyramid=2 / b_adapt=1 / b_bias=0 / direct=1 / weightb=1 / open_gop=0 / weightp=0 / keyint=100 / keyint_min=10 / scenecut=40 / intra_refresh=0 / rc_lookahead=1 / rc=crf / mbtree=1 / crf=22.8 / qcomp=0.60 / qpmin=0 / qpmax=69 / qpstep=4 / ip_ratio=1.40 / aq=1:1.00 Audio ID : 1 Format : AC-3 Format/Info : Audio Coding 3 Mode extension : CM (complete main) Format settings, Endianness : Big Codec ID : ac-3 Duration : 3s 200ms Bit rate mode : Constant Bit rate : 320 Kbps Channel(s) : 2 channels Channel positions : Front: L R Sampling rate : 48.0 KHz Bit depth : 16 bits Compression mode : Lossy Delay relative to video : 80ms Stream size : 125 KiB (1%)
Please is there a way to have this?
Similar Threads
-
FFMPEG in concat mode Error: Unsafe file name ... Operation not permitted?
By marcorocchini in forum Newbie / General discussionsReplies: 1Last Post: 26th Feb 2017, 11:59 -
FFMPEG -F Concat Video, Audio Sync Issue
By Shohag_ifas in forum EditingReplies: 2Last Post: 30th Nov 2016, 01:31 -
(Help Needed with ffmpeg) how do i batch merge audio files to video files
By wander799 in forum Newbie / General discussionsReplies: 5Last Post: 20th Nov 2016, 14:40 -
ffmpeg trim + concat = Non-monotonous DTS errors
By TorBru in forum Video ConversionReplies: 9Last Post: 27th Dec 2015, 05:33 -
ffmpeg "concat" question
By wallywalters in forum Video ConversionReplies: 3Last Post: 11th Jul 2015, 20:10