如何修改上传视频的时间和日期(图文)
修改上传视频的时间和日期可以从两个方面入手:修改视频文件本身的元数据和修改文件系统的时间戳。以下是详细的解决方案:
1. 修改视频文件的元数据时间
使用FFmpeg(推荐)
FFmpeg是最强大的多媒体处理工具之一。安装FFmpeg
bash
# Windows (使用Chocolatey) choco install ffmpeg # macOS (使用Homebrew) brew install ffmpeg # Ubuntu/Debian sudo apt update && sudo apt install ffmpeg # CentOS/RHEL sudo yum install epel-release && sudo yum install ffmpeg修改视频元数据日期
bash
# 修改视频的创建时间和修改时间 ffmpeg -i input.mp4 -c copy -metadata creation_time="2023-12-01T14:30:00" output.mp4 # 使用不同的日期格式 ffmpeg -i input.mp4 -c copy -metadata creation_time="2023-12-01 14:30:00" output.mp4 # 批量修改多个视频文件 for file in *.mp4; do ffmpeg -i "$file" -c copy -metadata creation_time="2023-12-01T14:30:00" "modified_$file" done保留原文件并修改日期
bash
# 修改日期并保持视频质量不变 ffmpeg -i input.mp4 -c:v copy -c:a copy -metadata creation_time="2023-12-01T14:30:00" output.mp4使用ExifTool
ExifTool是专门用于读取、写入和编辑媒体文件元数据的工具。安装ExifTool
bash
# Windows # 下载安装包: https://exiftool.org/ # macOS brew install exiftool # Ubuntu/Debian sudo apt install libimage-exiftool-perl修改视频元数据
bash
# 查看当前元数据 exiftool input.mp4 # 修改创建日期 exiftool -CreateDate="2023:12:01 14:30:00" input.mp4 # 修改修改日期 exiftool -ModifyDate="2023:12:01 14:30:00" input.mp4 # 同时修改多个日期字段 exiftool -CreationDate="2023:12:01 14:30:00" -CreateDate="2023:12:01 14:30:00" -ModifyDate="2023:12:01 14:30:00" input.mp4 # 批量处理 exiftool -ext mp4 -ext mov -ext avi -CreateDate="2023:12:01 14:30:00" ./videos/2. 修改文件系统时间戳
Windows PowerShell
powershell
# 修改单个视频文件的时间戳 $(Get-Item "video.mp4").LastWriteTime = "2023-12-01 14:30:00" $(Get-Item "video.mp4").CreationTime = "2023-12-01 14:30:00" # 批量修改多个视频文件 Get-ChildItem *.mp4 | ForEach-Object { $_.LastWriteTime = "2023-12-01 14:30:00" $_.CreationTime = "2023-12-01 14:30:00" }macOS/Linux
bash
# 修改单个视频文件的修改时间 touch -m -t 202312011430 video.mp4 # 修改访问时间和修改时间 touch -a -m -t 202312011430 video.mp4 # 批量修改 touch -m -t 202312011430 *.mp4 # 使用stat查看当前时间戳 stat video.mp43. Python脚本解决方案
python
import os import subprocess import time from datetime import datetime class VideoDateModifier: def __init__(self, video_path): self.video_path = video_path def modify_file_timestamp(self, new_datetime): """修改文件系统时间戳""" timestamp = new_datetime.timestamp() os.utime(self.video_path, (timestamp, timestamp)) print(f"文件时间戳已修改为: {new_datetime}") def modify_metadata_with_ffmpeg(self, output_path, new_datetime): """使用FFmpeg修改视频元数据""" date_string = new_datetime.strftime("%Y-%m-%dT%H:%M:%S") cmd = [ 'ffmpeg', '-i', self.video_path, '-c', 'copy', '-metadata', f'creation_time={date_string}', output_path ] try: result = subprocess.run(cmd, capture_output=True, text=True) if result.returncode == 0: print(f"视频元数据已修改: {output_path}") else: print(f"FFmpeg错误: {result.stderr}") except FileNotFoundError: print("错误: 未找到FFmpeg,请先安装FFmpeg") def modify_metadata_with_exiftool(self, new_datetime): """使用ExifTool修改视频元数据""" date_string = new_datetime.strftime("%Y:%m:%d %H:%M:%S") cmd = [ 'exiftool', f'-CreateDate={date_string}', f'-ModifyDate={date_string}', self.video_path ] try: result = subprocess.run(cmd, capture_output=True, text=True) if result.returncode == 0: print(f"视频元数据已修改: {self.video_path}") else: print(f"ExifTool错误: {result.stderr}") except FileNotFoundError: print("错误: 未找到ExifTool,请先安装ExifTool") # 使用示例 video_modifier = VideoDateModifier("input_video.mp4") # 设置新的日期时间 new_date = datetime(2023, 12, 1, 14, 30, 0) # 修改文件时间戳 video_modifier.modify_file_timestamp(new_date) # 修改视频元数据(需要FFmpeg) video_modifier.modify_metadata_with_ffmpeg("output_video.mp4", new_date) # 或者使用ExifTool修改元数据 # video_modifier.modify_metadata_with_exiftool(new_date)4. 批量处理脚本
Bash批处理脚本
bash
#!/bin/bash # 设置目标日期 TARGET_DATE="202312011430" # 处理当前目录下所有视频文件 for video in *.mp4 *.mov *.avi *.mkv; do if [ -f "$video" ]; then echo "处理文件: $video" # 修改文件时间戳 touch -m -t $TARGET_DATE "$video" # 修改视频元数据(需要FFmpeg) if command -v ffmpeg &> /dev/null; then output_file="modified_${video}" ffmpeg -i "$video" -c copy -metadata creation_time="2023-12-01T14:30:00" "$output_file" echo "已创建修改后的文件: $output_file" fi fi donePowerShell批处理脚本
powershell
# 设置目标日期 $TargetDate = "2023-12-01 14:30:00" $VideoExtensions = @(".mp4", ".mov", ".avi", ".mkv") # 获取当前目录下的所有视频文件 Get-ChildItem | Where-Object { $VideoExtensions -contains $_.Extension } | ForEach-Object { Write-Host "处理文件: $($_.Name)" # 修改文件时间戳 $_.LastWriteTime = $TargetDate $_.CreationTime = $TargetDate # 使用FFmpeg修改元数据(如果已安装) if (Get-Command ffmpeg -ErrorAction SilentlyContinue) { $OutputFile = "modified_$($_.Name)" ffmpeg -i $_.Name -c copy -metadata creation_time="2023-12-01T14:30:00" $OutputFile Write-Host "已创建修改后的文件: $OutputFile" } }5. 不同平台的特殊考虑
社交媒体平台
不同平台对视频元数据显示的支持不同:YouTube
bash
# 为YouTube优化的元数据 ffmpeg -i input.mp4 -c copy \ -metadata title="我的视频标题" \ -metadata creation_time="2023-12-01T14:30:00" \ -metadata description="视频描述" \ output.mp4Instagram/Facebook
这些平台通常使用上传时间而非文件元数据作为发布时间。6. 验证修改结果
检查文件时间戳
bash
# Linux/macOS stat video.mp4 # Windows PowerShell $(Get-Item "video.mp4") | Select-Object Name, CreationTime, LastWriteTime检查视频元数据
bash
# 使用FFprobe检查元数据 ffprobe -show_format -show_streams video.mp4 # 使用ExifTool查看详细信息 exiftool video.mp4注意事项
- 备份原文件: 在修改前务必备份原始视频文件
- 格式兼容性: 确保修改后的日期格式与播放器兼容
- 平台差异: 不同平台可能显示不同的时间信息
- 时区考虑: 注意UTC时间和本地时间的区别
- 权限问题: 确保有足够的权限修改文件

更新时间:2025-12-15 12:13:59
下一篇:网站上传时间怎么修改(图文)
