Это вопрос больше для телевизионщиков.
Однажды возникла необходимость укоротить титры в конце фильма, по скольку для вещания по тв, во время просмотра титров зритель переключает канал, на что-то более динамичное и интересное.
При наличии множества фильмов делать подрезку титров в ручную достаточно проблематично. Поэтому был написан скрипт для FFmpeg выполняющий такую задачу достаточно быстро. Нужно только узнать длительность фиьлма, и время в которое начинаются титры. Скорость работы ограничивается скоростью чтения/записи диска.
Вот содержимое CMD файла:
set "infile=Film.mp4"
set "T=02:06:37"
set "D=02:13:57"
set "spd=setpts=0.5*PTS,setpts=0.5*PTS,setpts=0.5*PTS,setpts=0.5*PTS"
mkdir speedup
ffmpeg -y -fflags +genpts -i "%infile%" -map 0 -c copy -t %D% -f segment -segment_format mp4 -segment_time %T% -segment_list video.ffcat -reset_timestamps 1 -v error chunk-%%03d.mp4
ffmpeg -y -i chunk-001.mp4 -filter:v "%spd%" -s 160x90 -b:v 10k -an endNOsnd.mp4
FOR /F "tokens=* USEBACKQ" %%F IN (`ffprobe -i endNOsnd.mp4 -v error -show_entries "format=duration" -of "default=noprint_wrappers=1:nokey=1" -sexagesimal `) DO (
SET dur=%%F
)
ffmpeg -y -i chunk-001.mp4 -filter:v "%spd%" -t %dur% endsnd.mp4
ffmpeg -y -i endsnd.mp4 -sseof -1 -copyts -i endsnd.mp4 -filter_complex " anullsrc,atrim=0:2[at];[0][at]acrossfade=d=2[a]" -map 0:0 -map "[a]" chunkEND.mp4
del endNOsnd.mp4
del endsnd.mp4
del chunk-001.mp4
ren chunkEND.mp4 chunk-001.mp4
ffmpeg -y -fflags +genpts -v error -i video.ffcat -map 0 -reset_timestamps 1 -c copy "speedup\%infile%"
del chunk-000.mp4
del chunk-001.mp4
del video.ffcat
Однажды возникла необходимость укоротить титры в конце фильма, по скольку для вещания по тв, во время просмотра титров зритель переключает канал, на что-то более динамичное и интересное.
При наличии множества фильмов делать подрезку титров в ручную достаточно проблематично. Поэтому был написан скрипт для FFmpeg выполняющий такую задачу достаточно быстро. Нужно только узнать длительность фиьлма, и время в которое начинаются титры. Скорость работы ограничивается скоростью чтения/записи диска.
Вот содержимое CMD файла:
set "infile=Film.mp4"
set "T=02:06:37"
set "D=02:13:57"
set "spd=setpts=0.5*PTS,setpts=0.5*PTS,setpts=0.5*PTS,setpts=0.5*PTS"
mkdir speedup
ffmpeg -y -fflags +genpts -i "%infile%" -map 0 -c copy -t %D% -f segment -segment_format mp4 -segment_time %T% -segment_list video.ffcat -reset_timestamps 1 -v error chunk-%%03d.mp4
ffmpeg -y -i chunk-001.mp4 -filter:v "%spd%" -s 160x90 -b:v 10k -an endNOsnd.mp4
FOR /F "tokens=* USEBACKQ" %%F IN (`ffprobe -i endNOsnd.mp4 -v error -show_entries "format=duration" -of "default=noprint_wrappers=1:nokey=1" -sexagesimal `) DO (
SET dur=%%F
)
ffmpeg -y -i chunk-001.mp4 -filter:v "%spd%" -t %dur% endsnd.mp4
ffmpeg -y -i endsnd.mp4 -sseof -1 -copyts -i endsnd.mp4 -filter_complex " anullsrc,atrim=0:2[at];[0][at]acrossfade=d=2[a]" -map 0:0 -map "[a]" chunkEND.mp4
del endNOsnd.mp4
del endsnd.mp4
del chunk-001.mp4
ren chunkEND.mp4 chunk-001.mp4
ffmpeg -y -fflags +genpts -v error -i video.ffcat -map 0 -reset_timestamps 1 -c copy "speedup\%infile%"
del chunk-000.mp4
del chunk-001.mp4
del video.ffcat