我正在尝试使用ffmpeg编写批处理文件,自动化工作中每天冗余的任务,该任务是将以4GB块记录在大多数DSLR相机和GoPro中的镜头拆分为2GB文件以进行流媒体传输。 我的想法是让脚本检查外部驱动器FOOTAGE的@import文件夹,并在2GB后拆分文件(由于最大大小为4GB,因此这将减轻需要拆分的文件数量)。
我还尝试修改拆分文件的文件名,使得如果FILE1为4GB,则将其拆分成分别为2GB的FILE1_1和FILE1_2。 但是,我尝试过的所有方法都只是将原始文件复制到两个新的完全相同的文件中 - 没有拆分或任何其他操作。
在进行了一些谷歌搜索并阅读了这里的一些答案之后,我发现了这篇文章,但它基于持续时间而不是大小(在不同质量级别下记录视频镜头使其无意义):Split into equal parts and convert many mp4 videos using ffmpeg
我还尝试修改拆分文件的文件名,使得如果FILE1为4GB,则将其拆分成分别为2GB的FILE1_1和FILE1_2。 但是,我尝试过的所有方法都只是将原始文件复制到两个新的完全相同的文件中 - 没有拆分或任何其他操作。
在进行了一些谷歌搜索并阅读了这里的一些答案之后,我发现了这篇文章,但它基于持续时间而不是大小(在不同质量级别下记录视频镜头使其无意义):Split into equal parts and convert many mp4 videos using ffmpeg
有人能帮我解决这个问题吗?我还没有找到可用的解决方案,利用我所理解的方法,使用-fs limit_size,我真的想了解这是如何工作的。
更新:我也发现了这个,但它已经四年没有更新了,我没有看到任何关于分割的内容,这将证明有用:
FFMPEG_ARGS
(第三个参数)。如果不传递任何内容,ffmpeg将根据输出容器自动选择设置,这很可能意味着它将重新压缩内容,导致不必要的CPU负载和质量损失。因此,建议将-c copy
至少作为该脚本的第三个参数传递,因为这将指示ffmpeg复制视频和音频数据而不是重新编码它。这使转换速度更快(唯一的限制是硬盘驱动器速度),同时保持原始质量。 - LukeLRffprobe
命令获取的持续时间对于源文件和第一部分文件是相同的。因此,while 循环只执行了一次。 - rusty