我们正在尝试设置一个实验,让受试者在观看电影时聆听听觉刺激。我们使用 PCM 编解码器 (pcm_s16le) 生成 WAV 音频文件。AVI 视频是使用 Matlab 脚本生成的,格式为 MJPEG。
我们已经仔细校准了实验的视频和音频,因此我们试图将损失降到最低(如果输出非常大,我们也没问题)。根据眼动追踪软件,H264 是视频的首选格式。我们尝试通过首先重新编码视频来设置它:
ffmpeg -y -i video.avi -vcodec libx264 video_264.avi
然后,当我们尝试合并视频和音频流时:
ffmpeg -y -i video_264.avi -i audio.wav -c copy merged.avi
我们收到以下警告:
[avi @ 0x5640ff0ca940] Timestamps are unset in a packet for stream 0. This is deprecated and will stop working in the future. Fix your code to set the timestamps properly
虽然输出文件似乎可以工作,但我们在使用视频进行实验的下游软件时遇到了问题(软件的输出应该保存与受试者反应相关的时间信息,但有时并没有这样做)。我们想知道这是否是因为时间戳有问题。但是,我无论如何也想不出如何设置时间戳。我觉得这与从 MJPEG 到 H264 编解码器的转换有关,但我尝试了各种选项,例如,-fflags +genpts -r 60
等等,但都无济于事。
我该如何修复时间戳问题?视频和音频的时间对我们的实验至关重要。