Аудио desynced от команд avconv

Я в настоящее время пытаюсь объединить несколько видео от различных устройств в 1 видео. Установка как следует:

  1. Пользователь записывает 3 видео по телефону (андроид или iOS)
  2. Система отправляет им видео (mp4 формат) к нашему серверу
  3. Сервер перемещает файлы и преобразовывает их в TS-файлы (почему? потому что мы думали, что будет хорошо отформатировать каждое видео к этому формату),

После этих шагов мы хотели бы объединить его с 4 из наших видео. Это означало бы, что, путем вызова наших видео 'ov', финал объединился, шаги будут:

ov1 > sent video 1 > ov2 > sent video 2 > ov3 > sent video 3 > ov4

Это действительно поднимает некоторые проблемы. Мы форматировали каждое видео к тем же форматам, тем же звуковым каналам и что поэтому когда-либо с этими строками (только вещь, которая изменения являются именем файла),

avconv -ss 0 -i "48_0.85825500-14815530815710.mp4" -vcodec libx264 -acodec aac -bsf:a aac_adtstoasc -bsf:v h264_mp4toannexb -f mpegts -strict experimental -y "tmp_48_0.ts"

Это означает, что касается нас, что каждое видео будет скомпилировано в то же видео (h264_mp4toannexb) и аудио (aac_adtstoasc) формат. При объединении этих видео как так, аудио desyncs:

avconv -i concat:"2connect-ae.ts|tmp_48_1.ts" -c copy -bsf:a aac_adtstoasc -bsf:v h264_mp4toannexb -y "output.mp4"

Мы пытались изменить способ, которым мы сжимаем/компилируем/преобразовываем видео по-разному из других источников, но мы не имели никакого успеха. Мы добрались 4, экспортировал .wov файлы из Final Cut Pro и Adobe After Effects. Изменение наших инструментов не работало.

Так или иначе звук от наших видео (ov1, ov2, ov3, ov4) накладывается в видео, отправленные пользователем, приводя к задержке звука, который продолжает увеличиваться каждую секунду. Мы - своего рода ум, унесенный, почему это продолжает происходить, любая справка значительно ценилась бы.

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

Информация о наших версиях:

avconv version 9.11-6:9.11-2ubuntu2, Copyright (c) 2000-2013 the Libav developers built on Mar 24 2014 06:12:33 with gcc 4.8 (Ubuntu 4.8.2-17ubuntu1) avconv 9.11-6:9.11-2ubuntu2 libavutil 52. 3. 0 / 52. 3. 0 libavcodec 54. 35. 0 / 54. 35. 0 libavformat 54. 20. 3 / 54. 20. 4 libavdevice 53. 2. 0 / 53. 2. 0 libavfilter 3. 3. 0 / 3. 3. 0 libavresample 1. 0. 1 / 1. 0. 1 libswscale 2. 1. 1 / 2. 1. 1


Редактирование для данных комментариев: В настоящее время мы пытаемся преобразовать каждое видео в те же размеры с помощью тыс опции: -filter:v 'scale=iw*min(1920/iw\,1080/ih):ih*min(1920/iw\,1080/ih), pad=1920:1080:(1920-iw*min(1920/iw\,1080/ih))/2:(1080-ih*min(1920/iw\,1080/ih))/2'

Каждое видео преобразовывается в 1920x1080. Мы также пытаемся вынуть каждую опцию, которую мы имели, и создайте наш путь назад до того, что мы должны были видеть, где это пошло не так, как надо. Но это действительно походит на огромный шаг и своего рода отчаянный также.


edit2

Это команды, которые мы в настоящее время выполняем:

avconv -i "33_0.98002500-14821542538733.mp4" -f mpegts -filter:v 'scale=iw*min(1920/iw\,1080/ih):ih*min(1920/iw\,1080/ih), pad=1920:1080:(1920-iw*min(1920/iw\,1080/ih))/2:(1080-ih*min(1920/iw\,1080/ih))/2' "tmp_ruud_0.ts"
avconv -i "33_0.57471800-14821542544448.mp4" -f mpegts -filter:v 'scale=iw*min(1920/iw\,1080/ih):ih*min(1920/iw\,1080/ih), pad=1920:1080:(1920-iw*min(1920/iw\,1080/ih))/2:(1080-ih*min(1920/iw\,1080/ih))/2' "tmp_ruud_1.ts"
avconv -i "33_0.27939600-14821542541226.mp4" -f mpegts -filter:v 'scale=iw*min(1920/iw\,1080/ih):ih*min(1920/iw\,1080/ih), pad=1920:1080:(1920-iw*min(1920/iw\,1080/ih))/2:(1080-ih*min(1920/iw\,1080/ih))/2' "tmp_ruud_2.ts"

avconv -i "templates/v2/wiebenik-v2.mov" -f mpegts "wiebenik-v5.ts"
avconv -i "templates/v2/ikkanjehelpenmet-v2.mov" -f mpegts "ikkanjehelpenmet-v5.ts"
avconv -i "templates/v2/ikbenopzoeknaar-v2.mov" -f mpegts "ikbenopzoeknaar-v5.ts"

avconv -i concat:"wiebenik-v5.ts|tmp_ruud_0.ts|ikkanjehelpenmet-v5.ts|tmp_ruud_1.ts|ikbenopzoeknaar-v5.ts|tmp_ruud_2.ts" -strict experimental "test.mp4"

Редактирование 3; я в настоящее время преобразовываю каждый файл и изменяю их размер на те же форматы и также нормализую их как шоу здесь:

avconv -i "public/videos/44_0.90768300-14822311688474.mp4" -filter:v "transpose=1, scale=iw*min(1920/iw\,1080/ih):ih*min(1920/iw\,1080/ih), pad=1920:1080:(1920-iw*min(1920/iw\,1080/ih))/2:(1080-ih*min(1920/iw\,1080/ih))/2" -c:a copy "public/videos/tmp_44_0.mp4"
avconv -i public/videos/tmp_44_0.mp4 -c:v copy -c:a libmp3lame -b:a 128k -ac 2 -ar 48000 public/videos/tmp_44_0_normalized.mp4
avconv -i "public/videos/44_0.09416600-14822311719723.mp4" -filter:v "transpose=1, scale=iw*min(1920/iw\,1080/ih):ih*min(1920/iw\,1080/ih), pad=1920:1080:(1920-iw*min(1920/iw\,1080/ih))/2:(1080-ih*min(1920/iw\,1080/ih))/2" -c:a copy "public/videos/tmp_44_1.mp4"
avconv -i public/videos/tmp_44_1.mp4 -c:v copy -c:a libmp3lame -b:a 128k -ac 2 -ar 48000 public/videos/tmp_44_1_normalized.mp4
avconv -i "public/videos/44_0.37376500-14822311735955.mp4" -filter:v "transpose=1, scale=iw*min(1920/iw\,1080/ih):ih*min(1920/iw\,1080/ih), pad=1920:1080:(1920-iw*min(1920/iw\,1080/ih))/2:(1080-ih*min(1920/iw\,1080/ih))/2" -c:a copy "public/videos/tmp_44_2.mp4"
avconv -i public/videos/tmp_44_2.mp4 -c:v copy -c:a libmp3lame -b:a 128k -ac 2 -ar 48000 public/videos/tmp_44_2_normalized.mp4

После этих изменений я комбинирую их как так:

MP4Box public/videos/templates/v2/wiebenik-v2.mp4 -cat public/videos/tmp_44_0_normalized.mp4 -cat public/videos/templates/v2/ikkanjehelpenmet-v2.mp4 -cat public/videos/tmp_44_1_normalized.mp4 -cat public/videos/templates/v2/ikbenopzoeknaar-v2.mp4 -cat public/videos/tmp_44_2_normalized.mp4 -cat public/videos/templates/v2/2connect-v2.mp4 -out public/pitches/44_9b374c31dcaa7433daf0f5163a3789dc.mp4

Но так или иначе, даже со всего 2 файлами, я получаю ошибку:

Cannot concatenate files: Different AVC Level Indication between source (42) and destination (40)

Оказывается, что мои файлы имеют другую версию высокого качества (4 и 4.2), никакая идея, как разрешить это все же.

1
задан 20 December 2016 в 15:00

1 ответ

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

Вы выбрали транспортный поток MPEG в качестве контейнера: Транспортные потоки имеют тенденцию быть широковещательно переданными как постоянная скорость передачи (CBR) для поддержания последовательного широковещательного уровня, заполненного дополнением байтов, если не достаточно данных существует. Казалось бы, что это было осложнено выбором x264 как кодек как , X264 не имеет собственного режима с постоянной скоростью передачи. Мне это кажется парадоксальным.

, Если бы я ответил за этот проект, существует число, если вещи я хотел бы обеспечить.

1). Все клипы намеревались быть присоединенными, должен быть , нормализовал (Т.Е. те же видео размеры, те же аудио частоты дискретизации, то же аудио и видео скорости передачи)

2) Эти кодеки и контейнер , формат, который я выбираю, имеет совместимые характеристики.

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

, Поскольку Вы начинаете aac, который является сжатием с потерями, Ваша аудио синхронизация будет сомнительна.

Дальнейшее исследование указывает, что существует давнишнее проблема копии aac с-bsf:a aac_adtstoasc, когда контейнер не является flv, m4a, mov или mp4. Вы могли бы хотеть прочитать заключительный комментарий в том сообщении.

Для фактических опций в качестве примера видят мой ответ здесь и если Вам действительно нужно -f mpegts, делают тот шаг в последний раз после подтверждения полной синхронизации A/V.

1
ответ дан 7 December 2019 в 15:43

Другие вопросы по тегам:

Похожие вопросы: