Videos ffmpeg können nicht verkettet werden

9

Ich habe eine Bitmap, die ich als eine Art Titelbildschirm oder Haftungsausschlussbildschirm an die Vorderseite vieler Videos anketten möchte.

Ich versuche, daraus ein Video mit den gleichen Attributen wie der Rest des Videos zu machen. Also schaue ich mir zuerst das Video an:

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

Dann versuche ich eine ähnliche Datei zu erstellen:

/usr/local/Cellar/ffmpeg/2.2.1/bin/ffmpeg -y -loop 1 -i Haftungsausschluss.png -c: v libx264 -r 23,98 -t 5 -pix_fmt yuv420p -profil: v Hauptausschluss.mp4

Es scheint in Ordnung zu funktionieren. Das Video wird abgespielt, was ich erwarten würde. Die Attribute fallen sehr ähnlich aus. Hier ist ein Unterschied:

< 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

Aber wenn ich versuche zu verketten, bekomme ich Fehler.

> $ cat temporary.txt 

    file disclaimer.mp4
    file EO1.mp4

/usr/local/Cellar/ffmpeg/2.2.1/bin/ffmpeg -y -f concat -i temporär.txt -c copy output.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%

Die Ausgabe sieht so aus, als ob nur meine Haftungsausschlussdatei enthalten ist, nicht der Rest des Videos.

Ich bin auch verwirrt, warum es sich anfühlt, als müsste man etwas "schätzen". Es kennt die Eingangs-FPS und die Eingangsdauer. Ich bin mir nicht sicher, ob dies das Problem ist oder nicht. Vielleicht ist es nur ein Fehler.

Meine andere Option ist die Verwendung des "Concat-Filters", aber das ist ein verlustbehafteter Transcode, oder? Ich möchte lieber, dass das zweite Video nach der Verkettung genau das gleiche ist wie zuvor.

Bearbeiten: Am Ende wurde das Concat-Protokoll ausprobiert, das die dritte Option darstellt. Die Dokumente raten von seiner Verwendung ab, aber es funktionierte besser als die beiden anderen (Concat Demuxer und Concat Filter).

Paul
quelle
1
Neugierig - warum zeigt Ihre Schöpfungszeit 1970?
Rajib
Beachten Sie, dass statt -r 23.98Sie verwenden sollten , -r 24000/1001oder -r ntsc-film(es sei denn natürlich das andere Video mit erstellt wurde -r 23.98). Dies kann das aktuelle Problem jedoch möglicherweise nicht lösen.
Llogan
Wenn Sie Ihren eigenen Build verwenden, können Sie versuchen, eine andere wichtige Version zu
erstellen

Antworten:

1

Ich weiß, dass dies wahrscheinlich nicht die Antwort ist, nach der Sie suchen, aber warum nicht eine Videobearbeitungssoftware verwenden, um dies zu tun? Die Videobearbeitung kann unterschiedliche Bildraten, Codecs usw. verwenden und sie im Zielformat kombinieren. Sie kann von gewöhnlicher Software abgespielt werden. Eine Reihe von Programmen bietet den Batch-Modus, wenn Sie den Haftungsausschluss zu einer Reihe von Videos hinzufügen müssen.

Es gibt kostenlose Open-Source-Video-Editoren und proprietäre. Ich denke, was Sie tun, liegt weit außerhalb dessen, wofür die Verkettung entwickelt wurde, bei der im Grunde genommen Dateien des gleichen Typs und Formats kombiniert werden.

Mrbios
quelle
0

Die beiden Videos müssen hinsichtlich Bildgröße, Seitenverhältnis, Bild pro Sekunde und Bitrate exakt dieselbe Codierung aufweisen.

Versuchen Sie es mit dem eRrightSofts Super (c) -Konverter. Es ist eine sehr umfangreiche GUI für ffmpeg. Darin ist auch "MediaInfo" eingebettet, sodass Sie Ihre Filme überprüfen können, um festzustellen, ob sie genau gleich sind.

Die Autoren beanspruchen keine Urheberschaft mit Ausnahme der GUI und geben ffmpeg usw. die volle Anerkennung.

Es sollte tun, was Sie brauchen und vieles mehr. Es ist Freeware.

Ich habe es persönlich verwendet, um Dateien zu verbinden, Video oder Audio zu extrahieren und Videos in verschiedene Formate zu kodieren. Der Name sagt Super und es ist.

Theunis
quelle