Як приєднатись до відеофайлів з терміналу?


9

Я спробував avidemux2_cli, mencoder, ffmpeg, cat .. Але це не завжди працює (Здебільшого помилка полягає в тому, що аудіокодек не той самий) Можливо, я ставлю неправильні параметри в команди.

Отже команди:

cat Sample.avi rrr.avi > complete.avi
ffmpeg -i Sample.avi -i output.avi -vcodec copy -acodec copy complete.avi
mencoder -ovc lavc -oac copy Sample.avi rrr.avi -o complete.avi
avidemux2_cli --audio-codec copy --video-codec copy --output-format avi --load Sample.avi -append output.avi --save video.avi

Проблема з котом полягає в тому, що вона не показує помилок, але вона працює не завжди. Як і komplet.avi буде точно однаково з Sample.avi

Fmmpeg нічого не робить. Команда komplet.avi завжди однакова з Sample.avi

Помилка Mencoder: Усі файли повинні мати однаковий аудіокодек та формат для -oac копії. Отже, komplet.avi - це те саме з Sample.avi

avidemux2_cli помилки немає, але komplet.avi знову те саме з Sample.avi ..

Отже, підводячи підсумок, всі complete.avi збігаються з Sample.avi .. І проблема полягає в тому, що вони не мають однакового аудіокодека (я гадаю) .. Будь-які ідеї?


1
Я думаю, що вам потрібно змінити відеокодек та аудіокодек вхідних файлів у ті самі кодеки, якщо ви хочете безпечно поєднати два відео,
vine_user

І як я можу це зробити?
Леон Вітанос

Ви можете використовувати mencoderопцію -ovc та -oac. Дивіться: mplayerhq.hu/DOCS/HTML/en/menc-feat-selecting-codec.html
vine_user

Відповіді:


10

Якщо ви хочете безпечно поєднати два відео, вам потрібно змінити відеокодек та аудіокодек вхідних файлів на ті самі кодеки.

Наприклад, використовуючи xvid (відео кодек) та mp3lame (аудіо кодек):

sudo apt-get install mencoder libxvidcore4 libmp3lame0

ви можете кодувати вхідні відеозаписи за допомогою наведених нижче команд:

mencoder -ovc xvid -oac mp3lame -xvidencopts bitrate=1000 first.avi -o video1.avi
mencoder -ovc xvid -oac mp3lame -xvidencopts bitrate=1000 second.avi -o video2.avi

Щоб відповідати вашим відео, ви можете змінити параметри "бітрейт" тощо (а також кодеки).

Якщо кодовані назви відео - "video1.avi" та "video2.avi", а вихідне ім'я відео - "joined-video.avi",

mencoder -ovc copy -oac mp3lame video1.avi video2.avi -o joined-video.avi 

За допомогою цієї команди ви можете зробити об'єднаний відеофайл.


2
Я просто подумав, що я підкреслюю, що назва цього mencoderутиліта (тобто Media ENcoder). Дуже багато людей застрягають, випадково набравши текст memcoder.
Вал

чи не повинні відповідати розміри кадру?
Старійшина Гек

4

Мені довелося з'єднати три фрагменти відео з однаковими кодеками. Читаючи попередні відповіді, мені вдалося це зробити:

mencoder -ovc copy -oac faac 01.mp4 02.mp4 03.mp4 -o output.mp4

Набагато швидше і простіше, ніж Openshot!

Спочатку я спробував опцію '-oac copy', але, здається, аудіокодек у моїх відео це не дозволяє. Я отримав повідомлення про помилку, в якому рекомендую '-oac pcm'. Кодек pcm не є хорошим варіантом: отриманий файл дуже великий, а 2/3 з нього - нестиснене аудіо.

Сподіваюсь, це допомагає


2
MEncoder svn r34540 (Ubuntu), побудований з gcc-4.7 (C) 2000-2012 MPlayer Team MPlayer був складений без libfaac. Див. README або DOCS.
Філіп Гачуд

1

Я знайшов тут рішення, яке допомогло мені без втрати приєднатися до двох mp4-файлів:

sudo apt-get install gpac
MP4Box -cat part1.mp4 -cat part2.mp4 -new joinedfile.mp4

Я спробував використовувати Avidemux, але у злитому відео виникли проблеми зі звуком.


1

Ваші файли не приєднаються належним чином, оскільки щось не відповідає.

Як і у багатьох інших, у мене виникли проблеми із належним синхронізацією звуку в об’єднаних відео. і хоча MP4Box прекрасно працює, якщо кліпи мають однакові характеристики, в деяких випадках мене збиває "Не знайдено відповідного треку призначення - створення нового", і в цьому випадку Totem (він також Відео) не відтворюватиме цей сегмент у об'єднаному файлі Після декількох спроб та помилок та подальших досліджень я розробив наступний метод роботи з приєднанням до відео, який до цього часу щоразу працював із прийнятною (для мене) якістю.

Якщо розміри кадру не збігаються (приєднання до помилок, що стосуються відеодоріжок):

Нормалізуйте відео, не порушуючи звук (-c: копія), встановивши обмеження (ділиться на 8 для максимальної сумісності з кодеком) для невідповідних сегментів

Приклад команд

width=856

height=480

avconv -i input.mp4 -filter:v "scale=iw*min($width/iw\,$height/ih):ih*min($width/iw\,$height/ih), pad=$width:$height:($width-iw*min($width/iw\,$height/ih))/2:($height-ih*min($width/iw\,$height/ih))/2" -c:a copy output.mp4

Якщо аудіо не відповідає (приєднуються до помилок аудіозаписів):

Нормалізуйте звук

Обробляйте аудіо, не порушуючи відео (копія: v: копія), щоб усі кліпи відповідали бажаному кодеку, частоті та бітрейту c: кодек -ар частота, як -ar 48000, і бітрейт з b: 128k для стерео (64K за канал здається хорошою ціллю) або що б там не було.

Приклад: avconv -i input.mp4 -c:v copy -c:a libmp3lame -ar 48000 b:a 128k output.mp4(зауважте, що libmp3lame є кодеком для аудіо mp3) Ви можете отримати список кодувальників, що підтримуються avconv, видавши команду avconv -codecsабо звузити речі до конкретного кодованого, avconv -codecs|grep *codecname*наприкладavconv -codecs|grep mp3

Тепер, коли ми нормалізували файли, ми можемо приєднатися до них. У цьому прикладі я приєднаю файли до MP4Box. Якщо у вас його немає, ви можете отримати його, видавши командуsudo apt-get install gpac

Об'єднайте файли за допомогою команди MP4Box file1.mp4 -cat file2.mp4 -cat file3.mp4 -cat file4.mp4 -out joinedfile.mp4(зауважте, що перед першим файлом немає кота, а кожному додатковому файлу передує -cat, а цільовому файлу передує -out)

Якщо ви використовуєте MP4Box (рекомендується для MP4) для приєднання, ви можете виявити, що вам доведеться обробити всі кліпи з avconv, чи не відповідають специфікації, щоб уникнути помилки "Не знайдено відповідного треку призначення - створення нового (введіть відео)"

Примітка. Я виявив, що Avidemux має проблеми з відео, закодованим за допомогою файлів H.264 / AVC (на тотем) через B-кадри в якості еталону. Це, мабуть, призводить до аудіосинхронізації аудіосигналу під час приєднання, навіть коли вибираєте копіювати аудіо та відео без ремуксації. Збої, коли не вибирається безпечний режим і не синхронізується при використанні безпечного режиму

Джерела:

/superuser/547296/resizing-videos-with-ffmpeg-avconv-to-fit-into-static-sized-player

/programming/20703160/problems-with-setting-constant-bitrate-by-using-avconv

https://trac.ffmpeg.org/wiki/Encode/AAC#fdk_cbr

Примітка. Наскільки я знаю, інші формати (контейнери) мають подібні обмеження щодо відповідності розміру кадру та швидкості звуку, тому це може спрацювати і для avi, якщо ви спробуєте з'єднатись через cat або mencoder після нормалізації відео та аудіо .

Необов’язково: Використовуйте Ручний гальмо, щоб перекодувати приєднаний файл для меншого розміру за бажанням із змінною частотою кадрів та постійною настройкою якості 25 (запропоновані налаштування - відрегулюйте, як це потрібно для ваших матеріалів та очікувань щодо якості)


1

Вам слід ввести такий текст:

avidemux2_cli --audio-codec copy --video-codec copy --output-format avi --load Sample.avi --append output.avi --save video.avi

Якщо ви хочете додати більше файлів:

avidemux2_cli --audio-codec copy --video-codec copy --output-format avi --load Sample.avi --append output1.avi --append output2.avi --append output3.avi --save video.avi

1

Мені вдалося використати програвач VLC Media Player для приєднання / об'єднання декількох відеофайлів. VLC можна завантажити з програмного забезпечення Ubuntu або встановити його з терміналу, натиснувши Ctrl+ Alt+ Tі ввівши:

sudo apt update
sudo apt install vlc

Після встановлення VLC відкрийте термінал у папці з відеофайлами та введіть:

vlc InFile1.mp4 InFile2.mp4 --sout "#gather:std{access=file,dst=OutFile.mp4}" --sout-keep

Це відкриває графічний інтерфейс VLC, і ви можете його закрити, коли файли з'єднані / об'єднані. Більше інформації ви можете знайти тут .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.