7 ffmpeg
我从命令行使用 ffmpeg 使用以下命令从网络摄像头捕获到文件:
ffmpeg -y -rtbufsize 702000k -f dshow -s 320x240 -r 25 -i video="<device name>" -t 10 -vcodec mjpeg -q:v 2 out.mp4
Run Code Online (Sandbox Code Playgroud)
执行命令和开始捕获之间有轻微的延迟(~0.5 秒)。我试图找到一种方法来准确确定捕获的开始时间 (UTC/GMT)。
我最初的想法是使用文件创建时间,因为这可能会准确反映第一帧的编码时间(而不是执行命令的时间)。不幸的是,文件创建时间只精确到秒,这不够精确(而且我不确定这是否会给出准确的结果)。
我的下一个想法是使用 ffmpegs 时间戳选项。根据文档(http://www.ffmpeg.org/ffmpeg.html):
'-时间戳时间(输出)'
Run Code Online (Sandbox Code Playgroud)Set the recording timestamp in the container. The syntax for time is: now|([(YYYY-MM-DD|YYYYMMDD)[T|t| ]]((HH:MM:SS[.m...])|(HHMMSS[.m...]))[Z|z])如果值为“now”,则表示当前时间。时间是本地时间,除非附加了“Z”或“z”,在这种情况下,它被解释为 UTC。如果未指定年月日部分,则采用当前年月日。
所以我添加了选项:
ffmpeg -y -rtbufsize 702000k -f dshow -s 320x240 -r 25 -i video="<device name>" -t 10 -vcodec mjpeg -q:v 2 -timestamp now out.mp4
Run Code Online (Sandbox Code Playgroud)
不幸的是 ffmpeg 似乎不喜欢这样:
选项时间戳(设置录制时间戳(“现在”以设置当前时间))不能应用于输出文件 out.mp4 - 您正在尝试将输入选项应用于输出文件,反之亦然。将此选项移动到它所属的文件之前。
解析输出文件 out.mp4 的选项时出错。
打开输出文件时出错:发生错误号 -22
文档说 -timestamp 是一个输出选项,它似乎应用于输出文件,所以我对这个错误感到困惑。
任何人都可以提出一种准确确定捕获开始时间的方法吗?
有谁知道为什么 -timestamp 选项会出错?
小智 -1
YYYYmmdd将您的 PC 操作系统时间设置为像时间一样显示,hhmmss这样可以更轻松地获取批处理文件中的时间并将其分配给第一帧,然后使用帧编号除以帧速率将每个帧添加到原始时间戳。这是我能够获得流水帐户以在视频中显示时间的唯一方法。
REM ## GETTIME ##
SET DTG1=Reserved
SET DT1=%DATE%%TIME%
IF "%DT1:~8,1%" EQU " " (SET DTG1=%DT1:~0,8%_0%DT1:~9,5%UTC) ELSE (SET DTG1=%DT1:~0,8%_%DT1:~8,6%UTC)
REM ## END GETTIME ##
@START /I /MIN /REALTIME c:\ff\FFmpeg.exe -y -loglevel error -rtbufsize 2.0e+009 -f dshow -r:v 10.000 -s 1920x1080 -vcodec mjpeg -i "video=Logitech HD Pro Webcam C920" -vf "fps=10.000,drawtext=fontfile=ocra.ttf:text=%DTG1%+%%{n}/10sec:fontsize=24:fontcolor=orange:x=999:y=19:box=0:boxcolor=black" -q 0 -f image2 B:\(%%d).jpg 1> nul 2> nul
@TIMEOUT /T 3 /NOBREAK 1> nul 2> nul
@START /I /MIN /REALTIME /W FFmpeg.exe -y -loglevel error -f dshow -ac 2 -r:a 44100 -i "audio=Line In (VIA HD Audio)" -f s16le -fs 63504000 B:\a.raw 1> nul 2> nul
@TASKKILL /F /IM FFmpeg.exe /T 1> nul 2> nul
@TASKKILL /F /IM FFmpeg.exe /T 1> nul 2> nul
Run Code Online (Sandbox Code Playgroud)
至少我是这样做的。
| 归档时间: |
|
| 查看次数: |
3462 次 |
| 最近记录: |