求助:使用树莓派(Raspberry Pi)搭配摄像头录制带时间戳的视频
嘿,这个需求我帮很多人解决过,给你分享两个在树莓派上实测有效的方法,一个是命令行快速搞定,一个是用Python自定义性更强:
方法一:用raspivid + FFmpeg(命令行快速实现)
如果不想写代码,这个方法最快,直接用树莓派自带的摄像头工具加FFmpeg滤镜实现时间戳。
- 先安装FFmpeg(如果没装的话):
sudo apt update && sudo apt install ffmpeg
- 执行录制命令(按Ctrl+C停止录制):
raspivid -t 0 -w 1280 -h 720 -fps 30 -o - | ffmpeg -i - -vf "drawtext=fontfile=/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf: text='%Y-%m-%d %H:%M:%S': x=10: y=10: fontsize=24: fontcolor=white: shadowcolor=black: shadowx=2: shadowy=2" -c:v libx264 -crf 23 -preset fast -c:a aac -b:a 128k output_with_timestamp.mp4
参数解释:
raspivid -t 0:无限录制(替换成具体毫秒数比如-t 30000就是录30秒),-w/-h是分辨率,-fps是帧率- FFmpeg的
-vf drawtext:添加文字滤镜,fontfile指定字体路径(确保这个字体存在,找不到的话用fc-list命令查看系统字体),text里的%Y-%m-%d %H:%M:%S是时间格式,x/y是时间戳的位置(这里是左上角),fontsize/fontcolor设置样式,阴影让文字更清晰
方法二:用Python + picamera库(自定义性更强)
如果需要把录制功能整合到你的Python项目里,这个方法更灵活,能自定义时间戳的样式和位置。
- 安装picamera库:
sudo apt install python3-picamera
- 编写Python脚本(比如命名为
record_with_timestamp.py):
from picamera import PiCamera from datetime import datetime import time # 初始化摄像头 camera = PiCamera() camera.resolution = (1280, 720) camera.framerate = 30 # 预热摄像头(避免初始画面模糊) camera.start_preview() time.sleep(2) # 开始录制 camera.start_recording('raw_recording.h264') print("录制中,按Ctrl+C停止...") try: while True: # 获取当前时间并格式化 current_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S') # 设置时间戳样式 camera.annotate_text = current_time camera.annotate_text_size = 24 # 字体大小(范围6-160) camera.annotate_foreground = (255, 255, 255) # 白色文字 camera.annotate_background = (0, 0, 0) # 黑色背景 # 可选:设置时间戳位置,默认顶部居中,改成左上角的话用下面这句 # camera.annotate_align = (0, 0) time.sleep(0.1) except KeyboardInterrupt: # 停止录制并清理 camera.stop_recording() camera.stop_preview() print("录制已停止") # 可选:把H264格式转成通用的MP4(需要先安装gpac) # sudo apt install gpac # 执行命令:MP4Box -add raw_recording.h264 output_with_timestamp.mp4
- 运行脚本:
python3 record_with_timestamp.py
一些实用提示
- 字体问题:如果方法一里的DejaVu字体找不到,替换成系统里有的,比如
/usr/share/fonts/truetype/freefont/FreeSansBold.ttf,用fc-list命令可以列出所有可用字体 - 性能优化:树莓派2或更早的型号,建议降低分辨率(比如800x600)和帧率(比如24fps),避免卡顿
- 时间戳位置:方法一里要改到右上角的话,把
x=10改成x=1280-200(根据文字长度调整数值);方法二里用camera.annotate_align可以调整对齐方式
内容的提问来源于stack exchange,提问作者Genesis
相关产品推荐
相关产品推荐

