AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1676740
Accepted
Su-47
Su-47
Asked: 2021-09-18 04:43:19 +0800 CST2021-09-18 04:43:19 +0800 CST 2021-09-18 04:43:19 +0800 CST

是否可以批量转换视频文件(不同格式)并使用 ffmpeg 删除元数据?

  • 772

我有很多我家人的视频文件。我在 Windows 上,视频格式不同:

视频文件:

在此处输入图像描述

DVD 目录包含:

在此处输入图像描述

DVD 目录中的文件是用 DVD 刻录机录制的,然后从 DVD 复制到我的计算机硬盘上。

假设上面的目录D:\ffmpeg是我的工作目录ffmpeg。这意味着所有视频文件都存储在那里。

我的愿望是将每个文件转换为mp4和mkv(用于测试目的)。例如,输入文件test.avi应该给出两个输出文件test.mp4和test.mkv. 输出文件应具有与输入文件相同的属性。对我来说重要的是屏幕尺寸、纵横比和帧速率。视频和音频质量应保持几乎相同,以使差异难以察觉。音频编解码器应仅满足音频质量,例如aac、或。我不知道是否可以从输出文件的源文件中获取音频/视频质量(kb per s)设置。视频编解码器应该是mp3flacvorbisffmpegh.265,如果可能的话。应删除 DVD(如果存在)文件的菜单,并将 DVD 源文件合并到一个输出文件中。

到目前为止,我从未与ffmpeg. 我只阅读了当前常见的音频/视频编解码器和视频文件格式。为什么我想走这条路?许多 gui 视频编辑程序超载且价格昂贵。免费的 gui 程序也许不能做这样的事情。重要的是ffmpeg我可以完全控制将要做什么。

顺便说一句,应该删除输出文件中的所有可删除元数据。

所以,现在我从这里ffmpeg下载了二进制文件,将其复制到上面的目录中,需要输入如下内容:

ffmpeg [--option1 ... --optionN] [source files list in the current directory] [output files list]

是否可以只运行一次来​​解决我的任务?如果没有,我自然欢迎为每种文件格式或不同的东西提供解决方案,如果它更有意义的话。ffmpeg如果总体上有助于解决此任务,您自然可以自由地建议其他有用的选项设置。

我希望我对任务的描述足够清楚。如果没有,请告诉我。

请不要回答“阅读ffmpeg手册”或“改用程序xyz”。

提前感谢您的帮助和努力!

ffmpeg batch
  • 2 2 个回答
  • 1662 Views

2 个回答

  • Voted
  1. moi
    2021-09-25T15:39:01+08:002021-09-25T15:39:01+08:00

    使用批处理脚本调用 ffmpeg。将脚本放在包含文件的文件夹中。确保 ffmpeg 在您的路径中。

    set /a fname=0
    for %%f in (*.avi) do (
      ffmpeg -i "%%~f" -c:v libx265 "!fname!.mp4"
      set /a fname=!fname!+1
    )
    

    fname是一个计数器,它将用唯一的名称命名您的文件。

    实际转换是使用默认值完成的 - ffmpeg -i "%%~f" -c:v libx265 "!fname!.mp4"

    或者,使用任何基于 ffmpeg 的 GUI。一些包括: -

    快门编码器 - https://www.shutterencoder.com/en/或 YAG - https://sourceforge.net/projects/ffmpegyag/

    • 4
  2. Best Answer
    FeRD
    2021-09-27T22:06:10+08:002021-09-27T22:06:10+08:00

    是的,这是可能的ffmpeg。但是,作为命令行工具,预计任何处理都将被脚本化。虽然可以一次在多个文件上运行它,但ffmpeg单独在每个文件上运行更加容易和清洁。从 Linux 手册页:

           ffmpeg reads from an arbitrary number of input "files" (which can be
           regular files, pipes, network streams, grabbing devices, etc.),
           specified by the "-i" option, and writes to an arbitrary number of
           output "files", which are specified by a plain output url. Anything
           found on the command line which cannot be interpreted as an option is
           considered to be an output url.
    [...]
    
           As a general rule, options are applied to the next specified file.
           Therefore, order is important, and you can have the same option on the
           command line multiple times. Each occurrence is then applied to the
           next input or output file.  Exceptions from this rule are the global
           options (e.g. verbosity level), which should be specified first.
    
           Do not mix input and output files -- first specify all input files,
           then all output files. Also do not mix options which belong to
           different files. All options apply ONLY to the next input or output
           file and are reset between files.
    

    此外,当给定多个输入文件时,默认情况下 ffmpeg 将自动尝试“最佳”映射它们之间的流——如果你想要线性映射输入:输出,你必须自己指定它。

    因此,除非您想像这样构建命令行:

    ffmpeg -i file1.avi -i file2.avi -i file3.avi \
           -map 0:a -map 0:v -c:v h265 -c:a aac file1.mp4 \
           -map 1:a -map 1:v -c:v h265 -c:a aac file2.mp4 \
           -map 2:a -map 2:v -c:v h265 -c:a aac file3.mp4
    

    你最好只运行三个单独的ffmpeg命令:

    ffmpeg -i file1.avi -c:v h265 -c:a aac file1.mp4
    ffmpeg -i file2.avi -c:v h265 -c:a aac file2.mp4
    ffmpeg -i file3.avi -c:v h265 -c:a aac file3.mp4
    

    这很简单,实际上更短,而且更容易编写脚本。

    多格式

    同时创建mp4和mkv文件有点多余,因为它们只是容器格式——如果您使用相同的编解码器对这两个文件进行编码,它们将包含完全相同的音频和视频数据。因此,如果这就是您所说的“测试目的”,那么质量或内容或任何东西都不会有可检测的差异。

    如果您正在测试这两个容器以衡量与不同播放设备或其他东西的兼容性,那是另一回事,但我建议只创建一对或两对两种格式的转换,而不是浪费时间做所有这些。

    如果您想同时创建它们以节省编码时间,则必须考虑过滤图和拆分的复杂性。您最好编码为一种输出格式,然后使用以下方法重新混合到另一种格式:

    ffmpeg -i file1.mp4 -codec copy file1.mkv
    

    这至少会非常快,并且它强调了文件包含完全相同的音频和视频流数据这一事实,使整个练习变得毫无意义。

    DVD

    对于您的 DVD 内容,ffmpeg当然可以读取VOB文件,但它不能分析它们的目录,只挑选主要内容,然后选择将哪些片段一起编码成输出文件。你必须自己做那个发现。

    如前所述,HandBrake 确实是一款非常出色的工具,可以处理所有这些废话。无论如何,它ffmpeg都会进行处理,因此您仍在使用它。(你很难找到不使用 ffmpeg 或至少它的库的免费/开源视频/音频处理工具。哎呀,大多数商业工具也使用它。)

    或者,mkvmerge-gui(MKVToolNix的一部分,也是一个免费工具)可以将VOB文件列表作为序列化的输入段,并将它们重新编码为单个.mkv文件非常轻松。(我实际上比 HandBrake 更喜欢 MKVToolNix,因为只是直接转码,但我仍然必须手动确定.VOB我希望它处理哪些部分。)

    • 3

相关问题

  • 最低比特率 ffmpeg 输出的编解码器和设置

  • 如何用ffmpeg 2.0.2保存TS视频流?

  • 快速提取 I 帧到图像

  • 压缩视频可以解码回未压缩的原始格式吗?

  • Python 的“pass”参数的批处理等价物是什么?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    Saaru Lindestøkke 为什么使用 Python 的 tar 库时 tar.xz 文件比 macOS tar 小 15 倍? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 为什么通过电缆(同轴电缆)的千兆位/秒 Internet 连接不能像光纤一样提供对称速度? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve