Audio 精确的mp4帧速率(同步问题)

Audio 精确的mp4帧速率(同步问题),audio,sync,mp4,frame-rate,sample-rate,Audio,Sync,Mp4,Frame Rate,Sample Rate,我正在编写一个音频拉伸器,将音频从24p转换为PAL视频。 24p为24000/1001~=23.976 fps PAL正是每秒25帧 我使用的算法非常简单。如果“m”是输出样本编号,“n”是输入样本编号,则m=地板(f(n+0.5)),其中f是速度系数。在这种情况下,f=25/(24000/1001)=1001/960。是的,我基本上每30个左右的样本就丢弃一次样本,但是音频应该是同步的,再加上你会听到大约2kHz的铃声 然而,在最终的视频中,我在拍摄1.5小时后的0.1-0.3秒内失去了a/

我正在编写一个音频拉伸器,将音频从24p转换为PAL视频。 24p为24000/1001~=23.976 fps PAL正是每秒25帧

我使用的算法非常简单。如果“m”是输出样本编号,“n”是输入样本编号,则m=地板(f(n+0.5)),其中f是速度系数。在这种情况下,f=25/(24000/1001)=1001/960。是的,我基本上每30个左右的样本就丢弃一次样本,但是音频应该是同步的,再加上你会听到大约2kHz的铃声

然而,在最终的视频中,我在拍摄1.5小时后的0.1-0.3秒内失去了a/v同步

我尝试使用长双精度而不是双精度来提高计算精度,但得到的音频偏移量相同。无论如何,这不应该是一个因素,只要你有你有9个以上的sig图,因为有345 600 000样品在一个2小时的电影采样48kHz

我不认为我丢失了一些神奇的同步数据,因为当我将原始视频分割成视频和wav文件并一起播放时,它们完全保持同步

我意识到媒体容器/流可能不会将帧速率存储为一个有理数,即24000/1001(如果我错了,请更正!),它们将使用十进制。如果是,我的加速系数不正确

我试着从不同的播放器获得fps:ffmpeg 23.98,vlc 23.976023。但我真的需要知道原始视频的准确帧率。从外观上看,它将小数点后5位(0.2秒/2小时)。我试着插上vlc的fps,但还是有点失败

总之,有没有办法从mp4文件中提取准确的帧率

或者我在这里遗漏了一些东西,比如保持流同步的交错

(如果有人感兴趣,代码在这里。)