gpt4 book ai didi

batch-file - 分割成相等的部分并使用 ffmpeg 转换许多 mp4 视频

转载 作者:行者123 更新时间:2023-12-01 05:01:14 25 4
gpt4 key购买 nike

我有大量视频需要使用 ffmpeg 从 mp4 转换为 wmv 并将每个文件分成 10 分钟的片段,但我是一个完全的 cmd 脚本新手(事实上,我是一个脚本新手 :)

在花了六个小时试图找到答案之后,我想我会把它带给你们。

我的代码有点工作,但我需要能够读取来自命令行的数据并将其发送回脚本进行评估。我不确定 ffmpeg 在处理完视频文件后(当时间戳到达结束时)会吐出什么代码,但是即使视频结束,这个 FOR 循环也会继续尝试创建新的文件段。这是我在尝试创建新文件时看到的,所以我认为搜索它可能会起作用:

帧= 0 fps=0.0 q=0.0 Lsize= 1kB 时间=00:00:00.00 比特率=N/A

这是我到目前为止提出的代码(不要笑:)

@echo off
setlocal ENABLEEXTENSIONS
setlocal ENABLEDELAYEDEXPANSION

for %%a in ("*.mp4") do (
set hour=00

for /L %%i IN (1,1,10) do (
:Beginning
set /a start=%%i-1
set end=%%i
if !start! lss 10 set start=!start!0
if !end! lss 10 set end=!end!0
ffmpeg -ss !hour!:!start!:00 -i "%%a" -b:v 1500k -vcodec msmpeg4 -acodec wmav2 -t !hour!:!end!:00 "Converted\%%~na-!hour!-!start!-!end!.wmv"
if end==60 CALL :Increment
)
)

:Increment
set /a !hour!+1
set %%i=1
GOTO :Beginning
pause

基于阅读 this thread正在考虑这样的事情可能会出现在代码中,但不知道如何处理它:
set "dosstring=%*"

echo.!dosstring!|findstr /C:"frame= 0 fps=0.0 q=0.0 Lsize= 1kB time=00:00:00.00 bitrate=N/A" >nul 2>&1

非常感谢你的帮助!

最佳答案

更有效的方法是调用 ffmpeg每个文件只需一次并使用它的segmenting特征。

段将按顺序编号,因此如果您绝对需要在名称中包含时间戳,我们还将生成 CSV 格式的段时间戳列表:

tmp000.wmv,0.000000,60.281000
tmp001.wmv,60.281000,120.041000

然后解析它并重命名段。
@echo off

for %%a in (*.mp4) do (

ffmpeg -i "%%a" ^
-f segment -segment_time 10:00 -segment_list tmp.csv -reset_timestamps 1 ^
-b:v 1500k -vcodec msmpeg4 -acodec wmav2 converted\tmp%%03d.wmv

setlocal enableDelayedExpansion
for /f "delims=, tokens=1-3" %%b in (tmp.csv) do (
set sec=%%c & set sec=!sec:.*=!
set /a hour="sec / 3600"
set /a mins1="sec / 60 %% 60" & set mins1=0!mins1!
set sec=%%d & set sec=!sec:.*=!
set /a mins2="sec / 60 %% 60" & set mins2=0!mins2!

ren "converted\%%b" "%%~na-!hour!-!mins1:~-2!-!mins2:~-2!.*"
)
endlocal
del tmp.csv
)
pause

此示例不会使用 ! 重命名文件在名称中,因为我不想使代码过于复杂来解决这种情况。

关于batch-file - 分割成相等的部分并使用 ffmpeg 转换许多 mp4 视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32443815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com