FFmpeg 从文件“如果存在”中删除字幕

Posted

技术标签:

【中文标题】FFmpeg 从文件“如果存在”中删除字幕【英文标题】:FFmpeg remove subtitles from file "if exists" 【发布时间】:2020-05-19 10:56:33 【问题描述】:

我在一个文件夹中有一堆 mp4 文件,其中一些嵌入了字幕,我想删除它们(从文件中删除字幕),但问题是有些文件没有字幕,所以我正在寻找for 循环中的一些 if 语句:

for n in *.mp4; do ffmpeg -i n -map 0 -map -0:s -c copy n; done

这个命令适用于所有文件,但我只需要对有字幕的文件执行它。

【问题讨论】:

【参考方案1】:

首先测试是否存在字幕,然后执行 remux。

for n in *.mp4; do ffmpeg -i "$n" -map 0:s -c copy -f null - && ffmpeg -i "$n" -map 0 -map -0:s -c copy "out_$n"; done

【讨论】:

我不知道为什么我得到“in:没有这样的文件或目录”,即使我将“in”更改为“n”但仍然是同样的错误 我只是想向您展示一个文件的模板。但我现在已经切换到输入到 vars。 如果你看到这个,我如何用输出正确覆盖原始文件?我将“out_$n”更改为“$n”,然后 ffmpeg 要求我接受覆盖,但 ffmpeg 不推荐使用该文件并且不能播放。错误:FFmpg 文件与输入 #0 相同 - 退出 FFmpeg 无法就地编辑现有文件。 输出文件不能与输入相同;必须不同。

以上是关于FFmpeg 从文件“如果存在”中删除字幕的主要内容,如果未能解决你的问题,请参考以下文章

android 中使用ffmpeg,将视频加入字幕,用ass文件,在PC上可以,但在Android上一直不行

FFMPEG 更改音频和字幕的 fps 并合并 2 个文件

ffmpeg 将 hdmv pgs 字幕从 mkv 提取到 srt

android ffmpeg视频添加字幕和配音

ffmpeg - 添加和删除字幕而不更改视频

ffmpeg文档14-字幕解码器