首页 > 解决方案 > 根据挂钟时间组合视频和音频 .webm 文件

问题描述

我有一个节点服务器通过 ffmpeg 将 webrtc 流记录为单独的视频/音频文件。我正在通过节点运行 ffmpeg

child_process.spawn('ffmpeg', commandArgs);

不幸的是,当我稍后尝试合并视频和音频文件时,我不知道 ffmpeg 何时创建每个文件的第一帧,导致面部和声音不同步:(

这是我的命令行参数,用于将流传输到 ffmpeg

 '-loglevel',
  'debug',
  '-reorder_queue_size',
  '0',
  '-protocol_whitelist',
  'pipe,udp,rtp',
  '-fflags',
  '+genpts',
  '-f',
  'sdp',
  '-i',
  'pipe:0',
  '-map',
  '0:v:0',
  '-c:v',
  'copy',
  '-use_wallclock_as_timestamps',
  '1',
  '-timestamps',
  'mono2abs',
  '-flags',
  '+global_header',
  './recordings/video_1627600996166.webm'

我在想可能可以将数据包的时间戳设置为 linux 的时钟时间,并尝试了一堆标志(-timestamps abs、-timestamps mono2abs、-use_wallclock_as_timestamps 1)但似乎没有任何改变文件中的结果。(我也尝试过移动时间命令)。

packet|codec_type=video|stream_index=0|pts=0|pts_time=0.000000|dts=0|dts_time=0.000000|duration=N/A|duration_time=N/A|convergence_duration=N/A|convergence_duration_time=N/A|size=14568|pos=552|flags=K_

时间总是从 0 开始。

任何帮助弄清楚如何从我录制的音频/视频 .webm 文件中获取准确时间以便我可以准确地组合它们将是惊人的。

非常感谢 :)

标签: node.jsffmpeg

解决方案


推荐阅读