gpt4 book ai didi

python-3.x - 如何使用帧单元制作 TIME 字幕(.srt、.smi 等)

转载 作者:行者123 更新时间:2023-12-04 23:32:35 32 4
gpt4 key购买 nike

我想创建一个制作字幕的 Python 脚本(滴答声 时间码 )。

我有一个 h.264 binary file在每一帧中都有时间戳。所以我想解析这个时间戳并用它制作字幕。

这是我在下面尝试使用 ffmpeg 的方法。

ffmpeg -y -i video.avi -vf "drawtext=fontfile=C:\Windows\Fonts\consolab.ttf: fontsize=12:fontcolor=yellow: box=1:boxcolor=black@0.4: text='TIME\: %{pts\:gmtime\:1561939200}':x=(w-tw)/2:y=(h-th)/2" test.avi

输出 .avi时间戳没问题,但是我需要重新编码源视频文件,这需要很长时间。
所以,我想用一种不同的方式,那就是创建字幕。

问题是,有没有办法用帧时间制作字幕?或有用的信息来填写我?

当前结果:



预计 结果:

最佳答案

您可以通过定义开始时间直接使用 Timecode :

ffmpeg -i source_file -c:v libx264 -vf drawtext="fontfile=C\\:/Windows/Fonts/arial.ttf:fontsize=45:timecode='10\:00\:00\:00':fontcolor='white':box=1:boxcolor='black':rate=25:x=(w-text_w)/2:y=h/1.2" -c:a aac -f mp4 output_with_TC.mp4

您还可以使用 ffprobe 从文件中获取时间码并在批处理文件中使用它
@echo off

cd C:\bin

set file=%1

For %%A in ("%file%") do (
Set Folder=%%~dpA
Set Name=%%~nA

)

set "CommandLine=ffprobe -i %file% -show_entries format_tags=timecode -of default=noprint_wrappers=1"
setlocal EnableDelayedExpansion
for /F "delims=" %%I in ('!CommandLine!') do set "TC=%%I"

echo.File is: %file%
echo.TC is: %TC%

set hours=%TC:~13,2%
set minutes=%TC:~16,2%
set seconds=%TC:~19,2%
set frames=%TC:~22,2%

set h=!hours: =!
set m=!minutes: =!
set s=!seconds: =!
set f=!frames: =!

set final_TC=%h%:%m%:%s%:%f%

echo.final_TC is : %final_TC%

ffmpeg -i %file% -c:v libx264 -vf drawtext="fontfile=C\\:/Windows/Fonts/arial.ttf:fontsize=45:timecode=\'%final_TC%\':fontcolor='white':box=1:boxcolor='black@0.4':rate=25:x=1600:y=30" -c:a aac -f mp4 output_%Name%.mp4 -y

endlocal


关于python-3.x - 如何使用帧单元制作 TIME 字幕(.srt、.smi 等),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57684061/

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