LINUX.ORG.RU
ФорумMobile

Соединить два видео с телефона в ffmpeg

 ,


0

1

Есть два видео mp4 с одного смартфона андройд, одно видео с основной камеры, а другое с лицевой.
При склейке второе видео получаеся перевёрнутое на 180 или 90 градусов. Помогает только предварительное перекодирование.
Как соединить два таких видео без перекодирования ?
Это происходит исключительно если соединять видео с разных камер.
Склеивал такой командой ffmpeg -f concat -i video.txt -c copy output.mp4


У ффмпег есть ключ метадата, возможно оно чем-то поможет.

Посмотри свойства видео, вообще есть шанс, что у тебя видео реально перевернуто и это разруливается плейером при воспроизведении. Тогда при скелейке метаданные будут общие и ничего не сделать.

ya-betmen ★★★★★
()
Последнее исправление: ya-betmen (всего исправлений: 1)
Ответ на: комментарий от ya-betmen

проверил на трёх разных устройствах включая планшет и с разными проигрывателями, ведь это должно значить что у всех у вас тоже самое? отпишитесь плз.

kasec
() автор топика

ffmpeg -i video1.mp4
пишет в строке «displaymatrix: rotation of 90.00 degrees»
а в другом файле video2.mp4 пишет «-90.00»
так это что нужно поменять это число что бы перед склейкой оно было у всех файлов одинаковым? какой командой без перекодирования это можно сделать?

kasec
() автор топика

Как соединить два таких видео без перекодирования ?

Повернуть без перекодирования (т.е. записать об этом в метаданных) можно только целое видео, вроде бы. Так что если повороты отличаются, склеить не получится, как минимум одну часть придётся перекодировать, чтобы параметры были одинаковые

TheAnonymous ★★★★★
()

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

kasec
() автор топика
11 ноября 2024 г.

Вот тебе от ChatGPT:

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

Проверьте следующий подход:

  1. Убедитесь, что оба видео имеют одинаковые параметры ориентации (например, «rotate» в метаданных). Это можно сделать с помощью команды:

    ffmpeg -i input1.mp4 -i input2.mp4 -hide_banner
    

    Найдите строку с rotate в выводе, чтобы увидеть, какое видео имеет «неправильную» ориентацию.

  2. Удалите ориентацию у одного из видео (если нужно), чтобы они совпадали:

    ffmpeg -i rotated_input.mp4 -metadata:s:v rotate=0 -c copy rotated_output.mp4
    
  3. После этого используйте rotated_output.mp4 и второе видео для склейки:

    ffmpeg -f concat -i video.txt -c copy output.mp4
    

Это должно сохранить исходное качество без перекодирования и устранить поворот видео.

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

Да, глядя на удаленные, все заиграло другими красками, @sparkie пострадал безвинно. ) Был неправ, спасибо модераторам, восстановившим справедливость.

krasnh ★★★★
()