使用ffmpeg删去第一章

使用ffmpeg删去第一章,ffmpeg,Ffmpeg,我正试图删除一个电视节目的第一章。我们的想法是有一些类似于netflix的东西,第一集将显示介绍,而连续几集则不显示 我一直在用ffprobe获取章节时间,然后用这个手动完成 for %%A IN (*.mp4) DO ffmpeg -ss <CHAPTERTIME> -i "%%A" -vcodec copy -acodec copy "tmp.mp4" && DEL "%%A" && RENAME "tmp.mp4" "%%A" 对于(*.mp4

我正试图删除一个电视节目的第一章。我们的想法是有一些类似于netflix的东西,第一集将显示介绍,而连续几集则不显示

我一直在用ffprobe获取章节时间,然后用这个手动完成

for %%A IN (*.mp4) DO ffmpeg -ss <CHAPTERTIME> -i "%%A" -vcodec copy -acodec copy "tmp.mp4" && DEL "%%A" && RENAME "tmp.mp4" "%%A"
对于(*.mp4)中的%%A,执行ffmpeg-ss-i“%%A”-vcodec副本-acodec副本“tmp.mp4”和&DEL“%%A”并重命名“tmp.mp4”%%A”
如何传递第一章的时间代码值,以便ffmepg知道在哪里查找

还希望使用相同的值来偏移字幕,以便它们在剪切后对齐


注意:我使用的切割机是windows,但如果更方便的话,我可以使用我的FreeBSD服务器。

这可能是最糟糕的方法,但至少它可以工作,仍然无法批量工作

@setlocal enableextensions enabledelayedexpansion
@echo off

for %%A IN (*.mp4) DO ffprobe -show_chapters -print_format flat "%%A" > out.txt

for /f "tokens=* delims=" %%a in ('findstr /C:"chapters.chapter.1.start_time=" out.txt') do (
set S=%%a
set S=!S:~30,20!
echo !S!
)

for %%A IN (*.mp4) DO ffmpeg -ss !S! -i "%%A" -vcodec copy -acodec copy "tmp.mp4" && DEL "%%A" && RENAME "tmp.mp4" "%%A"

endlocal