LINUX.ORG.RU

Несоответствие скорости аудио и видеодорожек

 ,


0

1

Привет, рассказываю как было - был видос с видео и аудио дорожками, я вытащил из него видео в виде последовательности кадров и аудио дорожку, сделал манипуляции с кадрами (общее кол-во осталось прежнее), и планировал слепить с оригинальной звуковой дорожкой. Не тут-то было, аудио дорожка перестала совпадать с видео, рассинхронизация между звуком и картинкой. Может в видео контейнере имеются какие-то метки для синхронизации дорожек? В общем, чего я не знаю про какой-то механизм и как правильно извлечь аудио и вкрутить обратно после редактирования видео кадров?

Исходный файл:

$ ffprobe VID_20230507_230811.mp4

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'VID_20230507_230811.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    creation_time   : 2023-05-07T13:08:11.000000Z
    com.android.version: 10
  Duration: 00:01:12.43, start: 0.000000, bitrate: 9194 kb/s
  Stream #0:0[0x1](eng): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 1280x720, 8914 kb/s, SAR 1:1 DAR 16:9, 30.48 fps, 30.48 tbr, 90k tbn (default)
    Metadata:
      creation_time   : 2023-05-07T13:08:11.000000Z
      handler_name    : VideoHandle
      vendor_id       : [0][0][0][0]
  Stream #0:1[0x2](eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 192 kb/s (default)
    Metadata:
      creation_time   : 2023-05-07T13:08:11.000000Z
      handler_name    : SoundHandle
      vendor_id       : [0][0][0][0]

Звук дернул в mp4 контейнер + накинул на него несколько эффектов, сохранял в опять же в mp4.

★★

Последнее исправление: kvpfs (всего исправлений: 1)

И, естественно, я пытался синхронизировать по некоторой точке, но рассинхрон появляется вновь через некоторое время.

kvpfs ★★
() автор топика

Выкладываю правильный ответ от ИИ):

In an MPEG-4 container, video and audio are synchronized using timestamps. Each video frame and audio sample is assigned a timestamp that indicates when it should be played back. When the container is played back, the video and audio decoders use these timestamps to ensure that the frames and samples are played back in the correct order and at the correct times.

When you split the video and audio streams and then connect them together, desynchronization can occur if the timestamps are not properly maintained. If the video and audio streams have different frame rates or if they are not aligned properly, this can cause the audio to become out of sync with the video.

To avoid this, it's important to make sure that the timestamps are properly maintained when splitting and recombining the video and audio streams. One way to do this is to use a program like FFmpeg, which can handle the synchronization of video and audio streams automatically.

When using FFmpeg to split and recombine video and audio streams, you can use the -copyts option to copy the timestamps from the input files to the output files. This ensures that the timestamps are maintained and the video and audio remain in sync.
kvpfs ★★
() автор топика
Ответ на: комментарий от firkax

К сожалению, опция не помогла, я уже копирую дорожку звуковую напрямую из оригинального видоса, без всяких правок

$ ffmpeg -framerate 30 -i %04d.png -i original.mp4 -map 0:v -map 1:a -c:v libx264 -pix_fmt yuv420p -crf 18 -c:a copy  output_5.mp4

всё равно рассинхрон, я уже не знаю в чем дело может быть …

kvpfs ★★
() автор топика
Ответ на: комментарий от kvpfs

у меня только идея, что нужно как-то дампнуть временные метки фреймов, потом их применить при финальной сборке кадров в видос, т.к. набор картинок теряет некую метаинфу о синхронизации.

kvpfs ★★
() автор топика
Ответ на: комментарий от kvpfs

Разобрался, я кретин)). Оказывается, что оригинальный видос не 30fps, а 30.48fps. Также мою бдительность притупило отсутствие возможности выбрать 30 с дробью значение в блендерном video editor’e, какое-то нестандартное значение, видимо.

5 часов, столько времени я убил на эти 0.48fps))

kvpfs ★★
() автор топика