Неможливо об'єднати відео ffmpeg


9

У мене є растровий малюнок, який я хотів би об'єднати на передню частину багатьох відео як своєрідний екран заголовка або застереження.

Я намагаюся перетворити його на відео з тими ж атрибутами, що й решта відео. Тому спочатку я проаналізую відео:

ffmpeg version 2.2.1 Copyright (c) 2000-2014 the FFmpeg developers
  built on Apr 11 2014 22:50:38 with Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/2.2.1 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables --enable-avresample --enable-vda --cc=clang --host-cflags= --host-ldflags= --enable-libx264 --enable-libfaac --enable-libmp3lame --enable-libxvid
  libavutil      52. 66.100 / 52. 66.100
  libavcodec     55. 52.102 / 55. 52.102
  libavformat    55. 33.100 / 55. 33.100
  libavdevice    55. 10.100 / 55. 10.100
  libavfilter     4.  2.100 /  4.  2.100
  libavresample   1.  2.  0 /  1.  2.  0
  libswscale      2.  5.102 /  2.  5.102
  libswresample   0. 18.100 /  0. 18.100
  libpostproc    52.  3.100 / 52.  3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'EO1.mp4':
  Metadata:
major_brand     : isom
minor_version   : 512
compatible_brands: isomiso2avc1mp41
creation_time   : 1970-01-01 00:00:00
encoder         : Lavf52.78.3
  Duration: 00:00:17.77, start: 0.000000, bitrate: 582 kb/s
Stream #0:0(eng): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 584x328 [SAR 1:1 DAR 73:41], 512 kb/s, 23.98 fps, 23.98 tbr, 1199 tbn, 47.96 tbc (default)
Metadata:
  creation_time   : 1970-01-01 00:00:00
  handler_name    : VideoHandler
Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 64 kb/s (default)
Metadata:
  creation_time   : 1970-01-01 00:00:00
  handler_name    : SoundHandler

Потім я спробую створити подібний файл:

/usr/local/Cellar/ffmpeg/2.2.1/bin/ffmpeg -y -loop 1 -i Disclaimer.png -c: v libx264 -r 23.98 -t 5 -pix_fmt yuv420p -profile: v main disclaimer.mp4

Здається, це добре працює. Відео відтворює, я б цього очікував. Атрибути виявляються дуже схожими. Ось різниця:

< Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'disclaimer.mp4':
---
> Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'EO1.mp4':
18,20c18,21
<     encoder         : Lavf55.33.100
<   Duration: 00:00:05.01, start: 0.000000, bitrate: 21 kb/s
<     Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 584x328 [SAR 1:1 DAR 73:41], 17 kb/s, 23.98 fps, 23.98 tbr, 19184 tbn, 47.96 tbc (default)
---
>     creation_time   : 1970-01-01 00:00:00
>     encoder         : Lavf52.78.3
>   Duration: 00:00:17.77, start: 0.000000, bitrate: 582 kb/s
>     Stream #0:0(eng): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 584x328 [SAR 1:1 DAR 73:41], 512 kb/s, 23.98 fps, 23.98 tbr, 1199 tbn, 47.96 tbc (default)
21a23
22a25,28
>     Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 64 kb/s (default)
>     Metadata:
>       handler_name    : SoundHandler

Але коли я намагаюся об'єднатися, я отримую помилки.

> $ cat temporary.txt 

    file disclaimer.mp4
    file EO1.mp4

/usr/local/Cellar/ffmpeg/2.2.1/bin/ffmpeg -y -f concat -i тимчасовий.txt -c копія вихід.mp4

[concat @ 0x7fd880806600] Estimating duration from bitrate, this may be inaccurate
Input #0, concat, from 'temporary.txt':
  Duration: 00:00:00.02, start: 0.000000, bitrate: 17 kb/s
Stream #0:0: Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 584x328 [SAR 1:1 DAR 73:41], 17 kb/s, 23.98 fps, 23.98 tbr, 19184 tbn, 47.96 tbc
Output #0, mp4, to 'output.mp4':
  Metadata:
encoder         : Lavf55.33.100
Stream #0:0: Video: h264 ([33][0][0][0] / 0x0021), yuv420p, 584x328 [SAR 1:1 DAR 73:41], q=2-31, 17 kb/s, 23.98 fps, 19184 tbn, 19184 tbc
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
Press [q] to stop, [?] for help
[mp4 @ 0x7fd880829a00] Non-monotonous DTS in output stream 0:0; previous: 93600, current: 5951; changing to 93601. This may result in incorrect timestamps in the output file.
[concat @ 0x7fd880806600] Invalid stream index 1
[mp4 @ 0x7fd880829a00] Non-monotonous DTS in output stream 0:0; previous: 93601, current: 6001; changing to 93602. This may result in incorrect timestamps in the output file.
[concat @ 0x7fd880806600] Invalid stream index 1
[mp4 @ 0x7fd880829a00] Non-monotonous DTS in output stream 0:0; previous: 93602, current: 6051; changing to 93603. This may result in incorrect timestamps in the output file.

...

frame=  546 fps=0.0 q=-1.0 Lsize=    1127kB time=00:00:04.90 bitrate=1882.9kbits/s    
video:1123kB audio:0kB subtitle:0 data:0 global headers:0kB muxing overhead 0.349865%

Вихід виглядає так, що в ньому є лише мій файл відмови, а не решта відео.

Мене також бентежить, чому відчувається, що потрібно щось "оцінити". Він знає вхідний FPS і тривалість введення. Я не впевнений, це проблема чи ні. Можливо, це просто помилка.

Мій інший варіант - використовувати "фільтр-фільтр", але це втрата перекоду, правда? Я вважаю за краще, щоб друге відео після конкатенації було точно таким же, як і раніше.

Редагувати: в кінцевому підсумку спробували конкретний "протокол", який є третім варіантом. Документи перешкоджають його використанню, але він працював краще, ніж два інших (Concat demuxer і concat filter).


1
Цікаво - чому ваш час створення показує 1970 рік?
Раджиб

Зауважте, що замість -r 23.98вас слід використовувати -r 24000/1001або -r ntsc-film(якщо, звичайно, не створено інше відео -r 23.98). Однак це може не вирішити поточне питання.
логіан

Якщо ви використовуєте власну збірку, ви можете спробувати створити іншу істотну версію ...
174140,

Відповіді:


1

Я знаю, що це, мабуть, не відповідь, яку ви шукаєте, але чому б не використовувати для цього програмне забезпечення для редагування відео? Редагування відео може приймати різні частоти кадрів, кодеки тощо і комбінувати їх у цільовий формат, і це буде відтворюватися звичайним програмним забезпеченням. Ряд програм пропонують пакетний режим, якщо вам потрібно додати застереження до групи відео.

Є безкоштовні відеоредактори з відкритим кодом та фірмові. Я думаю, що те, що ти робиш, - це поза тим, що було створено конкатенатом, який в основному поєднує файли одного типу та формату.


0

Два відео мають бути точно однаковими, що стосується - розміру масштабу кадру, співвідношення сторін, кадрів в секунду та бітрейта.

Спробуйте використовувати перетворювач eRrightSofts Super (c). Це дуже розширений графічний інтерфейс для ffmpeg. У ньому також вбудовано "MediaInfo", тож ви можете перевірити свої фільми, щоб побачити, чи точно вони однакові.

Автори не претендують на авторство за винятком GUI та надають повну суму ffmpeg тощо.

Він повинен робити те, що вам потрібно, і багато, набагато більше, це безкоштовно.

Я особисто використовував це для приєднання файлів, вилучення відео чи аудіо, перекодування відео в різні формати. Назва говорить Супер, і це так.

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