将视频/音频与两个不同的源同步

时间:2016-05-22 15:16:43

标签: audio video ffmpeg frame-rate

我对一部非常老的电影有疑问,我正试图恢复。我有两部同一部电影的来源。

来源1 (来自ffmeg -i):

Duration: 02:43:35.77, start: 0.000000, bitrate: 1342 kb/s
Stream #0:0: Video: mpeg4 (Simple Profile) (DIVX / 0x58564944), yuv420p, 720x480 [SAR 1:1 DAR 3:2], 1200 kb/s, 29.97 fps, 29.97 tbr, 29.97 tbn, 30k tbc
Stream #0:1: Audio: mp3 (U[0][0][0] / 0x0055), 48000 Hz, stereo, s16p, 128 kb/s

来源2 (来自ffmeg -i):

Duration: 02:46:11.04, start: 0.000000, bitrate: 1625 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1200x720 [SAR 1:1 DAR 5:3], 1431 kb/s, 30 fps, 30 tbr, 30 tbn, 60 tbc (default)
Metadata:
  handler_name    : VideoHandler
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 191 kb/s (default)
Metadata:
  creation_time   : 2014-06-22 12:06:22
  handler_name    : IsoMedia File Produced by Google, 5-11-2011

我想要的是从源1获取音频,从源2获取视频并使用它们创建新文件。

我尝试将源1改为30 fps,然后将其音频与源2的视频一起使用,但音频'fps'在某段时间之后真的在同步之后。也许我的做法是错误的。

将源1的音频与源2的视频同步的最佳方式是什么?

1 个答案:

答案 0 :(得分:0)

基本方法是

ffmpeg -i src2 -itsoffset 20 -i src1 -c copy -map 0:v -map 1:a -t 300 test.mp4

这将从源2获取视频,并将其与来自源1的音频进行多路复用。不会进行重新编码。音频延迟20秒,即来自源1的音频的开始发生在来自源2的视频开始后20秒。您可以通过这种方式控制同步。

您可以先运行一个简短的命令来试验同步值。

read_files = glob.glob("C:/Users/Emrehana1/Desktop/bip.txt")

with open("C:/Users/Emrehana1/Desktop/Test_Result_Report.csv", "w") as outfile:
    for f in read_files:
        with open(f, "r") as infile:
            outfile.write(infile.read())