我有很多我家人的视频文件。我在 Windows 上,视频格式不同:
视频文件:
DVD 目录包含:
DVD 目录中的文件是用 DVD 刻录机录制的,然后从 DVD 复制到我的计算机硬盘上。
假设上面的目录D:\ffmpeg
是我的工作目录ffmpeg
。这意味着所有视频文件都存储在那里。
我的愿望是将每个文件转换为mp4
和mkv
(用于测试目的)。例如,输入文件test.avi
应该给出两个输出文件test.mp4
和test.mkv
. 输出文件应具有与输入文件相同的属性。对我来说重要的是屏幕尺寸、纵横比和帧速率。视频和音频质量应保持几乎相同,以使差异难以察觉。音频编解码器应仅满足音频质量,例如aac
、或。我不知道是否可以从输出文件的源文件中获取音频/视频质量(kb per s)设置。视频编解码器应该是mp3
flac
vorbis
ffmpeg
h.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。将脚本放在包含文件的文件夹中。确保 ffmpeg 在您的路径中。
fname
是一个计数器,它将用唯一的名称命名您的文件。实际转换是使用默认值完成的 -
ffmpeg -i "%%~f" -c:v libx265 "!fname!.mp4"
或者,使用任何基于 ffmpeg 的 GUI。一些包括: -
快门编码器 - https://www.shutterencoder.com/en/或 YAG - https://sourceforge.net/projects/ffmpegyag/
是的,这是可能的
ffmpeg
。但是,作为命令行工具,预计任何处理都将被脚本化。虽然可以一次在多个文件上运行它,但ffmpeg
单独在每个文件上运行更加容易和清洁。从 Linux 手册页:此外,当给定多个输入文件时,默认情况下 ffmpeg 将自动尝试“最佳”映射它们之间的流——如果你想要线性映射输入:输出,你必须自己指定它。
因此,除非您想像这样构建命令行:
你最好只运行三个单独的
ffmpeg
命令:这很简单,实际上更短,而且更容易编写脚本。
多格式
同时创建
mp4
和mkv
文件有点多余,因为它们只是容器格式——如果您使用相同的编解码器对这两个文件进行编码,它们将包含完全相同的音频和视频数据。因此,如果这就是您所说的“测试目的”,那么质量或内容或任何东西都不会有可检测的差异。如果您正在测试这两个容器以衡量与不同播放设备或其他东西的兼容性,那是另一回事,但我建议只创建一对或两对两种格式的转换,而不是浪费时间做所有这些。
如果您想同时创建它们以节省编码时间,则必须考虑过滤图和拆分的复杂性。您最好编码为一种输出格式,然后使用以下方法重新混合到另一种格式:
这至少会非常快,并且它强调了文件包含完全相同的音频和视频流数据这一事实,使整个练习变得毫无意义。
DVD
对于您的 DVD 内容,
ffmpeg
当然可以读取VOB
文件,但它不能分析它们的目录,只挑选主要内容,然后选择将哪些片段一起编码成输出文件。你必须自己做那个发现。如前所述,HandBrake 确实是一款非常出色的工具,可以处理所有这些废话。无论如何,它
ffmpeg
都会进行处理,因此您仍在使用它。(你很难找到不使用 ffmpeg 或至少它的库的免费/开源视频/音频处理工具。哎呀,大多数商业工具也使用它。)或者,
mkvmerge-gui
(MKVToolNix的一部分,也是一个免费工具)可以将VOB
文件列表作为序列化的输入段,并将它们重新编码为单个.mkv
文件非常轻松。(我实际上比 HandBrake 更喜欢 MKVToolNix,因为只是直接转码,但我仍然必须手动确定.VOB
我希望它处理哪些部分。)