以下是我用于从一组按顺序命名的JPEG文件创建时间推移视频的代码:
home="/home/pi/webcam"
log="$home/webcam.log"
file="$home/arch/test/kamvideo.mp4" ## name of video file to create
vpath="$home/arch/test/" ## path to video files
rmpath="$home/arch/test/*.jpg" ## path to JPEG images for deletion
testpath="$home/arch/test/" ## path to test directory
spath="$home/arch/test/image_%03d.jpg" ## source files for video
now=$(date +%Y%m%d) ## current date
apath="$home"/video/"$now".mp4 ## name of today's video file
mfslocation="$home"/arch/test/image_%03d.jpg
fslocation="$home"/arch/test/kamvideo.mp4
gst-launch-1.0 \
-e multifilesrc location="$mfslocation" \
! image/jpeg, framerate=10/1 \
! decodebin ! queue ! videoscale \
! video/x-raw, width=640, height=480 \
! progressreport name=progress \
! omxh264enc target-bitrate=1200000 control-rate=variable \
! video/x-h264,profile=high\
! h264parse \
! mp4mux \
! filesink location="$fslocation"
文件如下所示:
-rw-r--r-- 1 pi pi 241527 Oct 6 04:12 image_000.jpg
-rw-r--r-- 1 pi pi 238558 Oct 6 04:16 image_001.jpg
-rw-r--r-- 1 pi pi 238489 Oct 6 04:20 image_002.jpg
-rw-r--r-- 1 pi pi 239035 Oct 6 04:24 image_003.jpg
-rw-r--r-- 1 pi pi 240861 Oct 6 04:28 image_004.jpg
…
这已经好几年了,但最近我注意到视频中的第一帧不是序列中的第一个JPEG。通常您不会注意到这一点,除了在Apple的新操作系统版本(High Sierra和iOS 11)下,视频将无法播放,因为第一帧的时间戳位于第二帧的时间戳之后。
视频在VLC和当前版本之前的操作系统版本中运行良好。
视频的第一帧似乎是从JPEG文件集中随机选择的。
示例视频位于:kamvideo.mp4
我该如何解决这个问题?