用于合并由 Tesla dashcam 创建的视频文件的 Python 程序
项目描述
特斯拉行车记录仪
Python 程序,提供了一种将保存的 Tesla Dashcam 素材合并到单个视频中的简单方法。
保存 Tesla Dashcam 镜头时,会在 USB 驱动器上为每个事件创建一个文件夹,并在其中创建多个 MP4 视频文件。目前,行车记录仪利用四 (4) 个摄像头(前、后、左中继器和右中继器)并将为每个摄像头创建一个文件。每分钟也存储到一个单独的文件中。这意味着在保存行车记录仪镜头时,每 10 分钟共有 40 个文件视频文件,每个 10 分钟的事件被放入一个单独的文件夹中。
使用该程序,可以将一个事件的 40 个视频文件合并为一 (1) 个,并将多个事件的视频合并在一起。可以通过选择可用布局之一来确定结果视频中四 (4) 个不同摄像机的布局。
该程序有多个选项,为要处理的视频、要包含的摄像机、结果视频的布局、位置、格式、编码……提供高度的灵活性。请参阅下面的用法部分以了解所有可能性。
视频输入提供与源视频相关的选项。
触发监视器是在程序执行时不开始处理视频,而是基于触发器(即在 PC 中插入 USB/SD 卡)。
视频布局提供参数来定义生成的视频应该是什么样子。有 4 种不同的布局可供选择。然后可以通过使左/右摄像机处于透视或不透视来进一步调整。交换左/右或前/后摄像头,更改所有摄像头和/或某些摄像头的比例,使左/右/后看起来好像你在通过镜子观看它,或者好像你转过头看向后。
摄像机排除从生成的视频中排除某些摄像机。
时间戳选项允许您定义生成的视频中的时间戳应该是什么样子,或者根本不显示它。
时间戳限制提供了仅创建重要部分的视频的可能性。与其上传前 5 分钟无关紧要的视频,不如指定开始和结束时间戳以将视频缩短到重要部分。
事件偏移量允许您从每个事件的开始(和/或结束)跳过一部分。
视频输出然后进一步定义输出应该是什么样子。在没有发生任何事情的情况下快进 Sentry 视频,加快或减慢视频速度,...
高级编码设置允许您进一步定义其他编码设置
更新检查将确保您始终拥有最新版本。
查看本 README 的用法部分,以获取有关所有可用参数及其作用的更多信息。
二进制文件
可以从以下位置检索独立二进制文件:
视窗:https ://github.com/ehendrix23/tesla_dashcam/releases/latest/download/tesla_dashcam.zip
MacOS(OSX):https ://github.com/ehendrix23/tesla_dashcam/releases/latest/download/tesla_dashcam.dmg
ffmpeg包含在相应的软件包中。ffmpeg 是根据GNU Lesser General Public License (LGPL) 2.1 或更高版本单独许可的产品。FFmpeg 包含 GNU 通用公共许可证 (GPL) 版本 2 或更高版本涵盖的几个可选部分和优化。如果这些部分被使用,GPL 将适用于所有 FFmpeg。有关 ffmpeg 许可证的更多信息,请参阅:https ://www.ffmpeg.org/legal.html
ffmpeg 的 Windows 二进制文件下载自:https ://ffmpeg.zeranoe.com/builds/
ffmpeg 的 MacOS 二进制文件下载自:https ://www.osxexperts.net
笔记
4 个摄像头之间同一分钟的视频文件长度并不总是相同。如果它们的持续时间不同,则将显示视频在其他视频之前结束的摄像机的背景颜色(默认为黑色)(在一分钟内)。因此,可以在视频中查看其中一个摄像机的背景颜色,然后在该分钟过去后再次显示视频。
视频中显示的日期和时间来自保存的视频本身中嵌入的时间戳,而不是文件名。结果视频中显示的日期和时间将转换为运行它的 PC 上设置的时区。
要求
这个包依赖ffmpeg安装,这是一个免费的、开源的跨平台视频转换解决方案。为 Windows 和 MacOS 创建的可执行文件包括 ffmpeg 版本。
如果不使用可执行文件(Windows 和 MacOS),则需要Python 3.8.6 或更高版本。
安装
下载相应的捆绑包(Windows 为 ZIP,MacOS 为 DMG)并将其解压缩到您选择的位置就足以安装它。
如果下载源文件(即对于 Linux),则还必须安装 Python。在这种情况下,我建议使用 pip 从 pypi 安装包,以确保满足所有包要求(ffmpeg 除外)。
该软件包可从pypi获得。
从 pypi 安装是通过以下方式完成的:
python3 -m pip install tesla_dashcam
用法
usage: tesla_dashcam.py [-h] [--version] [--loglevel {DEBUG,INFO,WARNING,ERROR,CRITICAL}] [--temp_dir TEMP_DIR] [--no-notification] [--display_ts] [--skip_existing]
[--delete_source] [--exclude_subdirs] [--monitor] [--monitor_once] [--monitor_trigger MONITOR_TRIGGER]
[--layout {WIDESCREEN,FULLSCREEN,PERSPECTIVE,CROSS,DIAMOND}] [--perspective] [--scale CLIP_SCALE [CLIP_SCALE ...]] [--mirror] [--rear] [--swap] [--no-swap]
[--swap_frontrear] [--background BACKGROUND] [--title_screen_map] [--no-front] [--no-left] [--no-right] [--no-rear] [--no-timestamp]
[--halign {LEFT,CENTER,RIGHT}] [--valign {TOP,MIDDLE,BOTTOM}] [--font FONT] [--fontsize FONTSIZE] [--fontcolor FONTCOLOR]
[--text_overlay_fmt TEXT_OVERLAY_FMT] [--timestamp_format TIMESTAMP_FORMAT] [--start_timestamp START_TIMESTAMP] [--end_timestamp END_TIMESTAMP]
[--start_offset START_OFFSET] [--end_offset END_OFFSET] [--sentry_offset] [--sentry_start_offset START_OFFSET] [--sentry_end_offset END_OFFSET] [--output OUTPUT] [--motion_only] [--slowdown SLOW_DOWN] [--speedup SPEED_UP]
[--chapter_offset CHAPTER_OFFSET] [--merge [MERGE_GROUP_TEMPLATE]] [--merge_timestamp_format MERGE_TIMESTAMP_FORMAT] [--keep-intermediate] [--keep-events]
[--set_moviefile_timestamp {START,STOP,SENTRY,RENDER}] [--no-gpu] [--gpu] [--gpu_type {nvidia,intel,qsv,rpi,vaapi}] [--no-faststart]
[--quality {LOWEST,LOWER,LOW,MEDIUM,HIGH}] [--compression {ultrafast,superfast,veryfast,faster,fast,medium,slow,slower,veryslow}] [--fps FPS]
[--ffmpeg FFMPEG] [--encoding {x264,x265}] [--enc ENC] [--check_for_update] [--no-check_for_update] [--include_test]
[source [source ...]]
tesla_dashcam - Tesla DashCam & Sentry Video Creator
positional arguments:
source Folder(s) (events) containing the saved camera files. Filenames can be provided as well to manage individual clips. (default: None)
optional arguments:
-h, --help show this help message and exit
--version show program's version number and exit
--loglevel {DEBUG,INFO,WARNING,ERROR,CRITICAL}
Logging level. (default: INFO)
--temp_dir TEMP_DIR Path to store temporary files. (default: None)
--no-notification Do not create a notification upon completion. (default: True)
--display_ts Display timestamps on tesla_dashcam text output. DOES NOT AFFECT VIDEO OUTPUT. (default: False)
Video Input:
Options related to what clips and events to process.
--skip_existing Skip creating encoded video file if it already exist. Note that only existence is checked, not if layout etc. are the same. (default: False)
--delete_source Delete the processed files upon completion. (default: False)
--exclude_subdirs Do not search sub folders (events) for video files to process. (default: False)
Trigger Monitor:
Parameters for monitoring of insertion of TeslaCam drive, folder, or file existence.
--monitor Enable monitoring for drive to be attached with TeslaCam folder. (default: False)
--monitor_once Enable monitoring and exit once drive with TeslaCam folder has been attached and files processed. (default: False)
--monitor_trigger MONITOR_TRIGGER
Trigger file to look for instead of waiting for drive to be attached. Once file is discovered then processing will start, file will be deleted when
processing has been completed. If source is not provided then folder where file is located will be used as source. (default: None)
Video Layout:
Set what the layout of the resulting video should be
--layout {WIDESCREEN,FULLSCREEN,PERSPECTIVE,CROSS,DIAMOND}
Layout of the created video.
FULLSCREEN: Front camera center top, side cameras underneath it with rear camera between side camera.
WIDESCREEN: Front camera on top with side and rear cameras smaller underneath it.
PERSPECTIVE: Similar to FULLSCREEN but then with side cameras in perspective.
CROSS: Front camera center top, side cameras underneath, and rear camera center bottom.
DIAMOND: Front camera center top, side cameras below front camera left and right of front, and rear camera center bottom.
(default: FULLSCREEN)
--perspective Show side cameras in perspective. (default: False)
--scale CLIP_SCALE [CLIP_SCALE ...]
Set camera clip scale for all clips, scale of 1 is 1280x960 camera clip.
If provided with value then it is default for all cameras, to set the scale for a specific camera provide camera=<front, left, right,rear> <scale>
for example:
--scale 0.5 all are 640x480
--scale 640x480 all are 640x480
--scale 0.5 --scale camera=front 1 all are 640x480 except front at 1280x960
--scale camera=left .25 --scale camera=right 320x240 left and right are set to 320x240
Defaults:
WIDESCREEN: 1/2 (front 1280x960, others 640x480, video is 1920x1920)
FULLSCREEN: 1/2 (640x480, video is 1920x960)
CROSS: 1/2 (640x480, video is 1280x1440)
DIAMOND: 1/2 (640x480, video is 1920x976)
(default: None)
--mirror Video from side and rear cameras as if being viewed through the mirror. Default when not providing parameter --no-front. Cannot be used in combination with
--rear. (default: None)
--rear Video from side and rear cameras as if looking backwards. Default when providing parameter --no-front. Cannot be used in combination with --mirror. (default:
None)
--swap Swap left and right cameras in output, default when side and rear cameras are as if looking backwards. See --rear parameter. (default: None)
--no-swap Do not swap left and right cameras, default when side and rear cameras are as if looking through a mirror. Also see --mirror parameter (default: None)
--swap_frontrear Swap front and rear cameras in output. (default: False)
--background BACKGROUND
Background color for video. Can be a color string or RGB value. Also see --fontcolor. (default: black)
--title_screen_map Show a map of the event location for the first 3 seconds of the event movie, when merging events it will also create map with lines linking the events (default: False)
Camera Exclusion:
Exclude one or more cameras:
--no-front Exclude front camera from video. (default: False)
--no-left Exclude left camera from video. (default: False)
--no-right Exclude right camera from video. (default: False)
--no-rear Exclude rear camera from video. (default: False)
Text Overlay:
Options on how to show text in resulting video:
--no-timestamp Do not show timestamp in video (default: False)
--halign {LEFT,CENTER,RIGHT}
Horizontal alignment for timestamp (default: None)
--valign {TOP,MIDDLE,BOTTOM}
Vertical Alignment for timestamp (default: None)
--font FONT Fully qualified filename (.ttf) to the font to be chosen for timestamp. (default: /Library/Fonts/Arial Unicode.ttf)
--fontsize FONTSIZE Font size for timestamp. Default is scaled based on resulting video size. (default: None)
--fontcolor FONTCOLOR
Font color for timestamp. Any color is accepted as a color string or RGB value.
Some potential values are:
white
yellowgreen
yellowgreen@0.9
Red
: 0x2E8B57
For more information on this see ffmpeg documentation for color: https://ffmpeg.org/ffmpeg-utils.html#Color (default: white)
--text_overlay_fmt TEXT_OVERLAY_FMT
Format string for text overlay.
Valid format variables:
{clip_start_timestamp} - Local time the clip starts at
{clip_end_timestamp} - Local time the clip ends at
{local_timestamp_rolling} - Local time which continuously updates (shorthand for '%{{pts:localtime:{local_timestamp}:%x %X}}'), string
{event_timestamp} - Timestamp from events.json (if provided), string
{event_timestamp_countdown_rolling} - Local time which continuously updates (shorthand for '%{{hms:localtime:{event_timestamp}}}'), string
{event_city} - City name from events.json (if provided), string
{event_reason} - Recording reason from events.json (if provided), string
{event_latitude} - Estimated latitude from events.json (if provided), float
{event_longitude} - Estimated longitude from events.json (if provided), float
All valid ffmpeg 'text expansion' syntax is accepted here.
More info: http://ffmpeg.org/ffmpeg-filters.html#Text-expansion
(default: {local_timestamp_rolling})
--timestamp_format TIMESTAMP_FORMAT
Format for timestamps.
Determines how timestamps should be represented. Any valid value from strftime is accepted.Default is set '%x %X' which is locale's appropriate date and time representationMore info: https://strftime.org (default: %x %X)
Timestamp Restriction:
Restrict video to be between start and/or end timestamps. Timestamp to be provided in a ISO-8601 format (see https://fits.gsfc.nasa.gov/iso-time.html for examples)
--start_timestamp START_TIMESTAMP
Starting timestamp (default: None)
--end_timestamp END_TIMESTAMP
Ending timestamp (default: None)
Event offsets:
Start and/or end offsets for events
--start_offset START_OFFSET
Set starting time for resulting video. Default is 0 seconds, 60 seconds if --sentry_offset is provided. (default: None)
--end_offset END_OFFSET
Set ending time for resulting video. Default is 0 seconds, 30 seconds if --sentry_offset is provided. (default: None)
--sentry_offset start_offset and end_offset will be based on when timestamp of object detection occurred for Sentryevents instead of start/end of event. (default: False)
Legacy setting, will be removed in future.
--sentry_start_offset START_OFFSET
Set starting time for resulting video of Sentry events only based on object detected for Sentryevents. (default: None)
--sentry_end_offset END_OFFSET
Set ending time for resulting video of Sentry events only based on object detected for Sentryevents. (default: None)
Video Output:
Options related to resulting video creation.
--output OUTPUT Path/Filename for the new movie file. Event files will be stored in same folder.
(default: /Users/ehendrix/Movies/Tesla_Dashcam/)
--motion_only Fast-forward through video when there is no motion. (default: False)
--slowdown SLOW_DOWN Slow down video output. Accepts a number that is then used as multiplier, providing 2 means half the speed.
--speedup SPEED_UP Speed up the video. Accepts a number that is then used as a multiplier, providing 2 means twice the speed.
--chapter_offset CHAPTER_OFFSET
Offset in seconds for chapters in merged video. Negative offset is # of seconds before the end of the subdir video, positive offset if # of seconds after the
start of the subdir video. (default: 0)
--merge [MERGE_GROUP_TEMPLATE]
Merge the video files from different folders (events) into 1 big video file.
Optionally add a template string to group events in different video files based on the template.
Valid format variables:
{layout} - Layout of the created movie (see --layout)
{start_timestamp} - Local time the event started at
{end_timestamp} - Local time the event ends at
{event_timestamp} - Timestamp from events.json (if provided), string
{event_city} - City name from events.json (if provided), string
{event_reason} - Recording reason from events.json (if provided), string
{event_latitude} - Latitude from events.json (if provided), float
{event_longitude} - Longitude from events.json (if provided), float
--merge_timestamp_format MERGE_TIMESTAMP_FORMAT
Format for timestamps in merge_template.
Determines how timestamps should be represented within merge_template. Any valid value from strftime is accepted.Default is set '%Y-%m-%d_%H_%M'More info: https://strftime.org (default: %Y-%m-%d_%H_%M)
--keep-intermediate Do not remove the clip video files that are created (default: False)
--keep-events Do not remove the event video files that are created when merging events into a video file (see --merge) (default: False)
--set_moviefile_timestamp {START,STOP,SENTRY,RENDER}
Match modification timestamp of resulting video files to event timestamp. Use START to match with when the event started, STOP for end time of the event,
SENTRY for Sentry event timestamp, or RENDER to not change it. (default: START)
Advanced encoding settings:
Advanced options for encoding
--no-gpu Disable use of GPU acceleration. Default on Apple Silicon Mac and on Non-MACs.
--gpu Use GPU acceleration. Default on Intel Macs.
Note: ffmpeg currently seems to have issues on Apple Silicon with GPU acceleration, --no-gpu might need to be set to produce video.
--gpu_type has to be provided as well on Non-Macs when enabling this parameter (default: False)
--gpu_type {nvidia,intel,qsv,rpi,vaapi}
Type of graphics card (GPU) in the system. This determines the encoder that will be used.This parameter is mandatory if --gpu is provided on Non-Macs. (default: None)
--no-faststart Do not enable flag faststart on the resulting video files. Use this when using a network share and errors occur during encoding. (default: False)
--quality {LOWEST,LOWER,LOW,MEDIUM,HIGH}
Define the quality setting for the video, higher quality means bigger file size but might not be noticeable. (default: LOWER)
--compression {ultrafast,superfast,veryfast,faster,fast,medium,slow,slower,veryslow}
Speed to optimize video. Faster speed results in a bigger file. This does not impact the quality of the video, just how much time is used to compress it.
(default: medium)
--fps FPS Frames per second for resulting video. Tesla records at about 33fps hence going higher wouldn't do much as frames would just be duplicated. Default is 24fps
which is the standard for movies and TV shows (default: 24)
--ffmpeg FFMPEG Path and filename for ffmpeg. Specify if ffmpeg is not within path. (default: /Users/ehendrix-
personal/Documents_local/GitHub/tesla_dashcam/tesla_dashcam/ffmpeg)
--encoding {x264,x265}
Encoding to use for video creation.
x264: standard encoding, can be viewed on most devices but results in bigger file.
x265: newer encoding standard but not all devices support this yet.
--enc ENC Provide a custom encoder for video creation. Cannot be used in combination with --encoding.
Note: when using this option the --gpu option is ignored. To use GPU hardware acceleration specify an encoding that provides this.
Update Check:
Check for updates
--check_for_update Check for update and exit. (default: False)
--no-check_for_update
A check for new updates is performed every time. With this parameter that can be disabled (default: False)
--include_test Include test (beta) releases when checking for updates. (default: False)
位置论据
源没有特定的参数。只需提供要扫描和处理的文件夹。可以在此处提供文件夹和/或文件。Source 不是强制性的,如果未提供,则默认为 SavedClips 和 SentryClips。SavedClips 和 SentryClips 的路径搜索将取决于是否提供了 Trigger Monitor 参数。如果未提供源且未提供触发器监视器,则将使用 SavedClips 和 SentryClips 启用 –monitor_once。
可选参数
这些是其他一些可选参数,它们不会改变将要处理的内容、方式、布局、生成的视频文件等。
-h 或 --help
显示帮助信息并退出。
-版本
显示程序的版本号并退出。
--loglevel <级别>
额外输出的日志级别。目前仅用于 DEBUG,提供任何其他值都不会改变任何内容。
–temp_dir <路径>
存储临时(中间)剪辑视频文件的临时路径。处理时,在将不同摄像机组合在一起的事件文件夹中,每分钟都会创建一个临时视频文件。然后将这些临时视频文件合并在一起以生成最终的事件视频文件。默认情况下,临时剪辑视频文件将存储在与生成的视频文件存储位置相同的文件夹中。因此,使用此参数可以指定另一个文件夹。当生成的视频存储在网络共享上时可能特别有用,因为可以指定一个本地驱动器,这样可以更快地存储临时文件。
--无通知
完成后,屏幕上会提供处理完成的通知。使用此参数可禁用此通知。
--display_ts
将时间戳添加到产生的文本输出中。
视频输入
以下选项用于管理应处理的内容以及处理后的操作。
--skip_existing
默认值:假
默认情况下,如果生成的视频文件已经存在,那么它将被覆盖(使用 –monitor 除外)。如果生成的视频文件已经存在,则通过提供此参数,则不会重新创建它。请注意,这仅检查视频文件是否存在,而不检查该视频文件的布局等是否与当前选择匹配。
--delete_source
默认值:假
处理完成后,删除源上的剪辑(文件)和事件(文件夹)。
--exclude_subdirs
默认值:假
不要扫描为有效剪辑提供的源中的任何子文件夹。
触发监视器
当程序执行时,正在扫描提供源文件夹中的事件和剪辑文件,进行处理,然后程序退出。但是,使用这些参数可以在插入 SD 或 USB 之前启动程序并让它等待。然后可以将其设置为在第一次处理后再次等待或停止。
-监视器
默认值:假
监控要连接的驱动器,其根目录中有 TeslaCam 文件夹。如果还没有附加一个,则等到附加一个。附加了带有 TeslaCam 文件夹的驱动器后,将根据提供的源开始处理。如果未提供源,则将处理 SavedClips 和 SentryClips 中的所有事件。要让它处理所有 3 个文件夹,然后为源提供以下内容:
SavedClips SentryClips 最近的Clips
处理后,程序将等待驱动器从系统中弹出。弹出后,它将再次开始监视要连接的驱动器。这个循环将继续,直到用 CTRL-C 停止。
--monitor_once
默认值:假
这与 –monitor 相同,但是在处理程序后将停止,而不是等待驱动器被弹出。
–monitor_trigger <文件或文件夹>
监视文件夹(或文件)而不是带有 TeslaCam 文件夹的驱动器的存在。一旦文件(或文件夹)存在,就会开始处理。如果提供了源,那么它将用于扫描事件和剪辑。如果未提供源,则为此参数提供的路径将用作源。如果提供的源是相对路径(即 Tesla/MyVideos),那么它将是基于触发器文件/路径的位置的相对路径。
完成后,如果提供了触发器文件,则该文件将被删除,程序将再次等待,直到触发器文件再次存在。如果提供了触发器文件夹,则程序将等待该文件夹被删除。然后它将再次开始监视该文件夹是否存在。
视频布局
可以通过多个参数以多种方式调整生成视频的布局。参数 –layout 指定每个摄像机剪辑应放置在结果视频中的位置。(参见上面的例子)。
-布局
默认值:全屏
全屏:分辨率:1920x960
+---------------+----------------+----------------+ | | Front Camera | | +---------------+----------------+----------------+ | Left Camera | Rear Camera | Right Camera | +---------------+----------------+----------------+
视频示例:https ://youtu.be/P5k9PXPGKWQ
宽屏:分辨率:1920x1920
+---------------+----------------+----------------+ | Front Camera | +---------------+----------------+----------------+ | Left Camera | Rear Camera | Right Camera | +---------------+----------------+----------------+
视频示例:https ://youtu.be/nPleIhVxyhQ
交叉:分辨率:1280x1440
+---------------+----------------+----------------+ | | Front Camera | | +---------------+----------------+----------------+ | Left Camera | Right Camera | +---------------+----------------+----------------+ | | Rear Camera | | +---------------+----------------+----------------+
钻石:分辨率:1920x976
+---------------+----------------+----------------+ | | Front Camera | | +---------------+ +----------------+ | Left Camera |----------------| Right Camera | + + Rear Camera + + |---------------| |----------------| +---------------+----------------+----------------+
-看法
默认值:假
以透视模式显示侧面摄像机。
-规模
然后可以通过更改所有相机的比例或更改一个或多个相机的比例使它们比其他相机更小或更大来进一步调整。这是通过–scale 参数完成的。如果只是提供了一个数字,那么比例会根据该数字相乘。
例如,0.5 结果为 640x480,因为标准分辨率为 1280x960。或者也可以提供分辨率而不是比例。例如提供 640x480。也可以为特定的相机更改比例。这是通过在比例编号(或分辨率)前面加上 camera=<camera> 来完成的,其中 <camera> 可以是前、后、左或右。可以多次提供–scale 参数。
例如:
--scale 1 --scale camera=left .25 --scale camera=right 640x480
导致前后摄像头剪辑的大小为 1280x960,左摄像头为 320x240,右摄像头为 640x480。
–mirror 或 –rear
默认情况下,左、右和后置摄像头显示为好像一个人坐在车内并通过后视镜看。但是,如果不包括前置摄像头(带有选项 –no-front),那么这会发生变化,使其看起来好像是在向后看,而不是通过镜子。使用选项 –mirror 或 –rear 可以覆盖默认值。
因此,使用 –rear 可以使它显示为好像向后看但仍然显示前面的。同样,使用–mirror one 可以使视图看起来像是通过镜子而不显示前置摄像头。
–swap 或 –no-swap
默认情况下,当它们被视为向后看时(参见–rear)交换左右摄像头(左侧显示在视频的右侧,右侧显示在左侧)。使用 –no-swap 可以覆盖它。
类似地,当通过镜子观看时,默认设置是不交换左右摄像头。使用 –swap 可以覆盖它。
–swap_frontrear
默认值:假
使用它,您可以在布局中交换前置和后置摄像头。前置摄像头通常位于顶部,后置摄像头位于底部。这样,前置摄像头将显示在底部,后置摄像头将显示在顶部。
-背景
默认值:黑色
指定视频的背景颜色。默认为黑色。有关可能的值,请参见 –fontcolor。
–title_screen_map
默认值:假
显示活动前 3 秒的活动地点地图。合并多个事件时,将为电影的开头创建一个附加地图,显示电影中所有事件的位置,并与线条链接。请注意,如果合并电影中的多个事件,则地图将显示在该电影中每个事件的开头。
相机排除
默认情况下,所有 4 个摄像机的输出都显示在合并的视频中(如果存在)。使用这些参数可以从结果视频中排除一台或多台摄像机。
– 无正面
默认值:假
从生成的视频中排除前置摄像头。
– 不离开
默认值:假
从生成的视频中排除左侧摄像头。
-没有权利
默认值:假
从生成的视频中排除正确的相机。
– 无后
默认值:假
从生成的视频中排除后置摄像头。
文字叠加
以下参数用于更改添加到结果视频的文本的设置。
--text_overlay_fmt
默认值:{local_timestamp_rolling}
设置视频中覆盖的文本的格式字符串。使用 \n 指定换行符。有效的格式说明符:
{local_timestamp_rolling}:不断更新的本地时间,字符串
{local_timestamp}:不连续更新的本地时间,字符串
{event_timestamp}:来自 events.json 的时间戳(如果提供),字符串
{event_city}:来自 events.json 的城市名称(如果提供),字符串
{event_reason}:从 events.json 记录原因(如果提供),字符串
{event_latitude}:来自 events.json 的估计纬度(如果提供),float
{event_longitude}:来自 events.json 的估计经度(如果提供),float
--timestamp_format
默认值:%x %X
设置时间戳的格式。有关如何使用它的信息,请参阅https://strftime.org 。默认以当前语言环境的格式表示日期和时间。
--无时间戳
默认值:假
不要在生成的视频中显示时间戳。
--halign
默认值:中心
确定生成视频中时间戳的水平对齐方式。这通常的默认设置是在视频的中心显示时间戳。排除左或右摄像头时的 DIAMOND 布局例外,在这种情况下调整字体的水平位置,使其仍显示在前后摄像头之间。对齐可以被覆盖:
LEFT:将时间戳放在视频的左侧
CENTER:将时间戳放在视频的中心
RIGHT:将时间戳放在视频的右侧
--valign
默认值:底部
在生成的视频中设置时间戳的垂直对齐方式。默认位于视频的底部,但布局 DIAMOND 位于中间,放置在前后摄像头之间的空间中。
TOP:将时间戳放在视频顶部
MIDDLE:将时间戳放在视频中间
BOTTOM:在视频底部放置时间戳
--font <文件名>
覆盖时间戳的默认字体。此处提供的文件名/路径必须是字体文件 (.ttf) 的完全限定文件名。
--fontsize <大小>
时间戳的字体大小。默认字体大小根据生成的视频大小进行缩放,使用它来覆盖并提供固定字体大小。
--fontcolor <颜色
默认:白色
时间戳的颜色,作为颜色字符串或 RGB 值。关于如何提供颜色的更多信息可以在这里找到:https ://ffmpeg.org/ffmpeg-utils.html#Color
- 一些可能的值是:
白色的
黄绿色
红色的
0x2E8B57
时间戳限制
可以通过提供开始和/或结束时间戳来限制要处理并因此放入结果视频中的事件/剪辑。
提供的时间戳不需要匹配特定事件或特定剪辑的开始或结束时间戳。如果剪辑中的视频超出时间戳,则将跳过该视频。
默认情况下,时间戳将根据程序运行的 PC 的时区进行解释。然而,这可以被覆盖。
时间戳将根据 ISO-8601 格式提供(参见 https://fits.gsfc.nasa.gov/iso-time.html)以获取此格式的说明和示例。
通常,日期以 YYYY、YYYY-MM、YYYY-MM-DD、YYYY-Wxx、YYYY-ddd 格式提供
这里有些例子:
2019 年处理限制视频到 2019 年。
2019-09 为 2019 年 9 月。
2019-09-10 或 20190910 2019 年 9 月 10 日
2019 年第 37 周的 2019-W37(或 2019W37)
2019-W37-2(或 2019W372)表示 2019 年第 37 周的星期二(第 2 天)
2019-253(或 2019253)表示 2019 年第 253 天(即 2019 年 9 月 10 日)
要识别时间,可以使用 hh、hh:mm 或 hh:mm:ss。如果同时提供日期和时间,则使用字母 T 分隔:
2019-09-10T11:15:10 为 2019 年 9 月 10 日上午 11:15。
- 也可以提供时间戳的时区。
对于 UTC 时间,将字母 Z 添加到时间:2019 年 9 月 10 日上午 11:15 UTC 时间的 2019-09-10T11:15:10Z。
也可以使用 +hh:mm、+hhmm、+hh、-hh:mm、-hhmm、-hh 来使用不同的时区。
2019-09-10T11:15:10-0500 是美国东部标准时间 2019 年 9 月 10 日上午 11:15。
有关潜在价值的进一步指导,请参阅:https ://www.cl.cam.ac.uk/~mgk25/iso-time.html
--start_timestamp <时间戳>
包含在结果视频中的起始时间戳。将跳过此时间戳之前的任何内容(即使在包含起始时间戳的剪辑内)。
–end_timestamp <时间戳>
包含在结果视频中的结束时间戳。此时间戳之后的任何内容都将被跳过(即使在包含结束时间戳的剪辑内)。
事件偏移
这是在事件中向前跳或更早停止。跳过是针对每个事件(文件夹)单独完成的。例如,可以通过提供 –start_offset 300(300 秒 = 5 分钟)将其设置为跳过每个事件的前 5 分钟。提供的偏移量是在任何视频调整(例如加速、减速或仅运动)之前计算的。偏移量可以与时间戳限制结合使用,但偏移量将始终根据事件开始和结束时间戳计算。因此,如果开始时间戳设置为事件发生后 2 分钟,偏移量设置为 5 分钟,则生成的视频将在事件发生后 5 分钟(而不是事件发生后 7 分钟)开始。如果开始时间戳是事件的 3 分钟,并且开始偏移设置为 2 分钟,那么生成的视频将在 3 分钟开始。
启用 –sentry_offset 时,偏移量仅对因 Sentry 事件而记录的事件起作用。然后,偏移量基于事件时间戳(触发 Sentry 保存事件的时间戳),而不是事件的开始/结束时间戳。
偏移量可以是正值或负值。对于哨兵偏移量,偏移量被添加到哨兵事件时间戳。对于非哨兵,如果偏移量为正,则它将基于开始时间戳,如果为负,则基于结束时间戳。
偏移量按以下方式和顺序计算:
哨兵事件和哨兵时间戳可用于事件:
–sentry_<start|end>_offset 提供:哨兵时间戳 + sentry_<start|end>_offset
—sentry_offset 提供:哨兵时间戳 + <start|end>_offset。start_offset 默认为 60,end_offset 默认为 30
非哨兵事件,哨兵时间戳不可用于事件,或 <start|end> 尚未为哨兵设置偏移量:
- <开始|结束>_offset > 0:
事件开始时间戳 + <start|end>
- <开始|结束>_offset < 0:
事件结束时间戳 + <start|end>
如果生成的开始时间戳在结束时间戳之后,那么两者都将被交换。
如果开始时间戳在事件开始时间戳之前,那么它将被设置为事件开始时间戳
如果结束时间戳在事件结束时间戳之后,那么它将被设置为事件结束时间戳
- 例如:
- –sentry_start_offset=0 –sentry_end_offset=30 –start_offset=-30
对于哨兵事件,剪辑将从哨兵时间戳开始,并在哨兵时间戳后 30 秒结束。对于所有其他人,它将在结束时间前 30 秒开始剪辑
- –sentry_start_offset=-10 –end_offset=-20 –start_offset=-60
对于哨兵事件,将在哨兵时间戳前 10 秒开始剪辑,并在结束时间前 20 秒结束剪辑。对于所有其他人,它将在结束时间前 60 秒开始剪辑,并在结束时间前 20 秒结束
- –sentry_start_offset=-10 –sentry_end_offset=0 –end_offset=-20 –start_offset=-60
对于哨兵事件,将在哨兵时间戳前 10 秒开始剪辑并转到结尾。对于所有其他人,它将在结束时间前 60 秒开始剪辑,并在结束时间前 20 秒结束
- –start_offset=60 –end_offset=-20 –sentry_offset
对于哨兵事件,将在哨兵时间戳前 20 秒开始剪辑,并在哨兵时间戳后 60 秒结束剪辑(开始和结束时间戳在这里交换)。对于所有其他人,它将在开始时间后 60 秒开始剪辑,并在结束时间前 20 秒结束
--start_offset <偏移>
事件内的起始偏移量。<offset> 以秒为单位。
--end_offset <偏移量>
事件内的结束偏移量。<offset> 以秒为单位。
--senty_offset
默认值:假
–sentry_start_offset <偏移>
哨兵事件在事件内的起始偏移量。<offset> 以秒为单位。
–sentry_end_offset <偏移>
哨兵事件在事件中的结束偏移量。<offset> 以秒为单位。
视频输出
这些是与生成的视频创建相关的附加参数。
--output <路径/文件名>
生成的视频的路径/文件名。如果此处提供了文件名并设置了 –merge,则生成的合并视频将使用此文件名保存。活动视频将存储在同一文件夹中。要仅提供文件名,但保留基于平台的默认文件夹,请在名称中添加扩展名。例如,提供“event”将在文件夹 event 中创建文件,但提供“event.mp4”将在默认文件夹中创建电影文件 event.mp4。
–motion_only
默认值:假
生成的视频将显示没有运动或运动很少的任何部分的快进视频。这对于 Sentry 事件特别有用,因为这些事件是 10 分钟的事件,但通常只有几分钟(如果有的话)有用的活动会导致创建事件。
–slowdown <速度>
通过提供的乘数减慢生成的视频。例如,<speed> 为 2 意味着视频将是正常速度的一半。
--speedup <速度>
通过提供的乘数提高生成视频的速度。例如,值 2 表示视频将以正常速度的两倍播放。
--chapter_offset <秒>
为合并视频中的章节标记设置偏移量。默认情况下,在合并视频中每个事件的开头设置章节标记。使用这个可以在事件开始之前或之后设置章节标记 <seconds>。
在此处提供负值会导致在事件结束前 x 秒设置章节标记。
提供正值会导致章节标记在事件开始后设置 x 秒数。
-合并
默认值:假
为找到的每个事件(文件夹)创建一个视频文件。当提供参数 –merge 时,这些单独的事件视频文件将进一步合并为 1 个更大的视频文件。(可选)添加模板字符串以将事件组合在一起并创建多个视频文件。生成的视频文件名将基于此模板。有关格式变量,请参见 –text_overlay_fmt。
--merge_timestamp_format
默认值:%Y-%m-%d_%H_%M
确定应如何在为 –merge 提供的模板中表示时间戳。例如:
要合并按日期/小时分组的电影中的事件:
–merge “{event_timestamp}” –merge_timestamp_format “%Y-%m-%d_%H”
要合并按日期分组的电影中的事件:
–merge “{event_timestamp}” –merge_timestamp_format “%Y-%m-%d”
——保持中级
默认值:假
在事件处理期间正在创建临时视频文件。这些临时视频文件是 1 分钟的组合相机剪辑,因此通常会创建 10 个这些视频文件(每分钟一个)。一旦事件处理完毕并创建了事件视频文件,这些文件就会被删除。使用此参数来保留这些临时视频文件。请注意,根据事件的数量,将需要更多的存储空间。
--保持事件
默认值:假
设置事件时生成的视频文件在合并成视频文件后不会被删除(见–merge)。如果未设置,则事件视频文件将在成功创建合并视频文件后自动删除。
–set_moviefile_timestamp
默认值:开始
确定应在操作系统上为生成的视频文件设置什么修改时间戳。START 将其设置在事件的开始,STOP 设置为事件的结束,SENTY 设置为触发 SENTRY 事件的时间戳(如果没有 SENTRY 时间戳则将返回 START),或者 RENDER 不修改时间戳导致那是电影创作的时候。
高级编码设置
以下参数是更高级的设置,用于确定 ffmpeg 应如何编码视频。
–无GPU
禁用 GPU 加速。Intel Macs:GPU 加速默认开启,使用此参数可关闭。Apple Silicon Macs:由于 ffmpeg 的当前问题,默认情况下禁用 GPU 加速。非 Mac:默认情况下禁用 GPU 加速。
如果此参数与 –gpu 结合使用,则第一个将具有优先权。
注意:如果部署的 Python 是 Universal2 二进制文件或 tesla_dashcam 可执行文件适用于 Apple Silicon,我们只能检测到 Apple Silicon。如果在 Apple Silicon 上运行但使用 x64 可执行文件或 x64 Python,则 tesla_dashcam 将无法检测到它是否在 Apple Silicon 上运行。
-gpu
启用 GPU 加速。Intel Macs:默认情况下已经启用 Apple Silicon Macs:启用 GPU 加速。请注意,当前的 ffmpeg 在执行此操作时会产生损坏的视频,但新版本的 ffmpeg 可能会起作用。非 Mac:要启用 GPU 加速,还必须提供参数参数 –gpu_type 以识别硬件。
如果此参数与 –no-gpu 结合使用,则第一个将具有优先权。
注意:如果部署的 Python 是 Universal2 二进制文件或 tesla_dashcam 可执行文件适用于 Apple Silicon,我们只能检测到 Apple Silicon。如果在 Apple Silicon 上运行但使用 x64 可执行文件或 x64 Python,则 tesla_dashcam 将无法检测到它是否在 Apple Silicon 上运行。
--gpu_type
除 Mac 外的所有平台。提供系统中安装的 GPU 类型。可用选项取决于平台!
intel:如果安装了 INTEL GPU,则使用 qsv GPU 加速(Windows/Linux)
nvidia:如果安装了 NVIDIA GPU (Windows/Linux)
qsv:如果安装了 INTEL GPU 但将指定要使用的硬件设备 (/dev/dri/renderD128) 以避免在多个设备可用时默认设备初始化失败 (Linux)
rpi:在 Raspberry Pi 系统 (Linux) 上
vaapi:如果安装了较新的 INTEL GPU 并且提供的 ffmpeg 二进制文件具有 Intel VAAPI 支持。(Windows/Linux)
–无快速启动
默认值:假
默认情况下,ffmpeg 标志 faststart 已设置。这样做将确保将某些元数据放置在生成的视频的开头,从而改进流式传输(即 YouTube、网站……)。此参数用于禁用此功能,因此将元数据放置在视频文件的末尾(这是正常默认值)。这可以提高性能,因为视频文件在处理后不必重写以将元数据放在文件的开头,并且还可以防止视频文件位于网络共享上的问题。
-质量
默认值:较低
设置生成视频的整体质量。将此设置为更高的值可以提高质量(不保证),但很可能也会导致更大的文件大小。由此产生的改进可能并不明显。
有效值:LOWEST、LOWER、LOW、MEDIUM、HIGH
-压缩
默认值:中
定义应该花费多少时间来压缩生成的视频文件。较慢的速度可以提高视频文件的压缩率,从而缩小视频大小。但是,这也会导致更长的处理时间。
超快将导致压缩视频文件的处理时间最少,但视频大小最大。
veryslow 将产生最小的视频文件,但创建视频文件的时间最长。
请注意,增加或减少压缩时间不会影响最终视频的质量。只是生成的文件大小。
有效值:ultrafast, superfast,veryfast,faster,fast,medium,slow,slower,veryslow
–fps <帧>
<