batch-file - ffmpeg 与输出文件相同的输入(需要临时文件但如何?)

标签 batch-file ffmpeg

我对 .bat 文件或 ffmpeg 了解不多,最后一个小时在互联网上搜索如何解决我的问题,但没有找到任何东西。
我想制作 .bat 文件,该文件删除视频的音频并将其替换为无音频版本。我已经用我的 .bat 文件和 ffmpeg 创建了一个文件夹,并在上下文菜单中添加了一个选项来打开我的 .bat 文件。
这是我目前的 .bat 文件:

ffmpeg -i %1 -an -vcodec copy %1
但是 ffmpeg 不能覆盖它当前正在读取的文件。如果有人帮助我如何创建一个没有音频的临时文件,然后用临时文件替换输入文件,那就太好了。
提前非常感谢!

最佳答案

在 FFmpeg 中静音视频的一种简单方法是

ffmpeg -i input.mp4 -filter:a "volume=0.0" output.mp4
音量 = 0.0 将音频设置为 0
我建议使用 Python 进行编码,因为您需要从文件夹中获取所有文件并将它们全部静音。我将分享一个示例代码
这是一个 .bat 文件,你可以写它,当你点击它时它会运行 python 文件
#!/bin/bash
function edit_2x()
{
    python file_name.py
    TIMEOUT 10
}
文件名.py
import os
Folder_Path = r'K:\\to_mute\\'
Output_Folder_Path = r'K:\\muted_videos\\'

fileNames = os.listdir(Folder_Path)

for fileName in fileNames:
    if 'Done' not in fileName:
        print("File Name :"+fileName ) 
        os.system("ffmpeg -i "+fileName+" -filter:a 'volume=0.0' "+fileName);
        os.rename(Video_Path+fileNamee,Video_Path+"Done "+fileNamee)
对代码的一个简单解释是,它获取所有文件名并将它们存储在一个列表中,您将获取一个文件并将它们静音并将它们存储在另一个文件夹中,并使用 Done 更新原始文件名,这样就不会再造成混淆。
希望它清楚

关于batch-file - ffmpeg 与输出文件相同的输入(需要临时文件但如何?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65586493/

相关文章:

batch-file - 将 SID 存储在变量中

powershell - INI文件逐行获取节

Linux 视频转换

ffmpeg - 在 FFmpeg 中使用 -filter_complex amerge 时混合流

file - 用于/f 处理带空格的文件名

file - 从url下载数据的批处理文件

java - 如何使用批处理文件无限循环需要参数的 jar 文件?

Python:mp3 到 alsaaudio 通过 ffmpeg 管道和 wave.open(f ,'r')

php - 从命令行运行 PHP

c++ - 如何在 ffmpeg 的 h264 解码器中获取 pps 和 sps