Ich suche auch eine Linux - Lösung (in eine separate Frage )
Ich habe zwei Videodateien mit der Endung aufgenommen .ts
. Ich muss einen Teil der ersten entfernen, die zweite teilen und dann die erste Datei mit dem ersten (geteilten) Teil der zweiten Datei zusammenführen.
Sie haben beide die gleichen Eigenschaften:
Format : MPEG-TS
File size : 3.16 GiB
Duration : 1h 39mn
Overall bit rate mode : Variable
Overall bit rate : 4 527 Kbps
Video
ID : 720 (0x2D0)
Menu ID : 6181 (0x1825)
Format : AVC
Format/Info : Advanced Video Codec
Format profile : High@L4
Format settings, CABAC : Yes
Format settings, ReFrames : 4 frames
Codec ID : 27
Duration : 1h 39mn
Width : 1 440 pixels
Height : 1 080 pixels
Display aspect ratio : 16:9
Frame rate : 25.000 fps
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : MBAFF
Sie enthalten auch mehrere Audiospuren und Untertitel.
Ich möchte sie verarbeiten, ohne die Dateien zu transkodieren, zumindest den Anfang entfernen zu können usw.
FFMPEG
:
ffmpeg -i source.mts
gibt:
Input #0, mpegts, from 'source1.mts':
Duration: 01:40:00.76, start: 2995.511878, bitrate: 4526 kb/s
Program 6181
Stream #0:0[0x46](fra,fra): Subtitle: dvb_teletext ([6][0][0][0] / 0x0006)
Stream #0:1[0x2d0]: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p, 1440x1080 [SAR 4:3 DAR 16:9], 25 fps, 25 tbr, 90k tbn, 50 tbc
Stream #0:2[0x2da](fra): Audio: aac (HE-AAC) ([15][0][0][0] / 0x000F), 48000 Hz, stereo, fltp, 73 kb/s
Stream #0:3[0x2db](qaa): Audio: aac (HE-AAC) ([15][0][0][0] / 0x000F), 48000 Hz, stereo, fltp, 67 kb/s
Stream #0:4[0x2dc](deu): Audio: aac (HE-AAC) ([15][0][0][0] / 0x000F), 48000 Hz, stereo, fltp, 49 kb/s
Stream #0:5[0x2dd](qad): Audio: aac (HE-AAC) ([15][0][0][0] / 0x000F), 48000 Hz, stereo, fltp, 57 kb/s
Ich denke es ist sehr gut machbar mit ffmpeg
, das ist auch plattformübergreifend, als Befehl, den ich gefunden habe Hier um einen Teil einer Datei zu entfernen.
ffmpeg -i InputFile -vcodec copy -acodec copy -ss 00:12:34.567 -t 00:34:56.789 OutputFile
funktioniert, mit der Ausnahme, dass der Eingang vier Audiospuren hat und auf diese Weise nur die erste ( Stream #0:2[0x2da](fra)
) Audio wird aufgenommen. Was ich will ist: entweder alles Audio, entweder das dritte ( Stream #0:3[0x2db](qaa)
). Wie justieren?
ffmpeg
sollte daher arbeiten, um:
1. Schneiden Sie den Anfang der ersten Datei ab (entfernen Sie die ersten 2 Minuten der 1h40 min-Datei)
2. Teilen Sie eine zweite (1 Stunde) Datei in zwei Teile (nach 3.05 Minuten)
3. Fügen Sie an das Ende der ersten Datei den 3,05-minütigen Teil an, der durch Aufteilen der zweiten Datei erhalten wurde.
Was ich ausprobiert habe:
Openshot: Kann nicht ohne Transcodierung verarbeitet werden.
Avidemux (Linux): Beim Versuch zu speichern heißt es "Dies ist nicht MPEG-kompatibel - Sie können den Kopiercodec nicht verwenden."
Avidemux unter Windows: Audio ist nicht synchron.
quelle
Antworten:
Wie teile und verbinde ich Dateien mit
ffmpeg
unter Beibehaltung aller Audiospuren?Wie Sie festgestellt haben, wird nur eine Bitstream-Kopie ausgewählt ein (Audio-) Spur nach dem Dokumentation der Stream-Spezifikation :
Auswählen alles Audiospuren:
So wählen Sie die dritte Audiospur:
Weitere Beispiele für die Auswahl von Streams finden Sie in der erweiterte Optionen Abschnitt der
ffmpeg
Dokumentation.Ich würde auch kombinieren
-vcodec copy -acodec copy
von Ihrem ursprünglichen Befehl in-c copy
wie oben für die Kompaktheit des Ausdrucks.Teilt:
Kombinieren Sie diese also mit dem, was Sie in den beiden Dateien erreichen möchten, um sie für eine spätere Wiederverbindung aufzuteilen:
werde dir geben:
OutputOne.ts
, das ist alles nach dem die ersten zwei Minuten der ersten EingabedateiOutputTwo.ts
, das ist das zuerst 3 Minuten und 5 Sekunden der zweiten EingabedateiBeitreten:
ffmpeg
unterstützt die Verkettung von Dateien ohne Neukodierung, ausführlich in der Verkettungsdokumentation beschrieben .Erstellen Sie eine Liste der zu verbindenden Dateien (z. B.
join.txt
):Dann dein
ffmpeg
Befehl kann das verwendenconcat demuxer
:Da arbeitest du mit
mpeg
Transportströme (.ts
), Sie sollte in der Lage sein, das concat zu verwenden Protokoll auch:Siehe obiges Beispiel auf der Concat-Seite. Ich überlasse es Ihnen, damit zu experimentieren.
quelle
-map
ping, danke für die erinnerung. Ich habe die Frage zum Zusammenfügen (Verketten) von Videodateien gemäß Ihrer Bearbeitung aktualisiert.-map
s mit der Single:-map 0
concat
Demuxer ebenfalls greift nur nach dem "besten" Track (würde erwarten, dass es anders funktioniert, aber das ist es dannffmpeg
...) würde ich das mit einbeziehen-map 0
auch in diesem Schritt.ffmpeg
Befehle sind sehr wichtig.-ss
kann entweder vorher oder nachher verwendet werden-i
für leicht unterschiedliche Methoden, um dasselbe Ziel zu erreichen (bildgenaue Suche). Sie können alternativ verwenden-to
Wenn Sie lieber eine Endzeit als eine Dauer angeben möchten (-t
).ffmpeg
ist für Windows-Systeme über verfügbar Zeranoe , Ja. Ich möchte lieber nicht hineinkommenffmpeg
vsavconv
, aber sehen superuser.com/questions/507386/… und stackoverflow.com/questions/9477115/…Als vereinfachte Antwort basierend auf der Hauptantwort:
So speichern Sie Daten nach einem Startpunkt (bis zum Ende):
So behalten Sie Daten zwischen zwei Zeitpunkten bei:
So speichern Sie Daten von einer bestimmten Dauer nach einem bestimmten Zeitpunkt:
So behalten Sie Daten von einer bestimmten Dauer nach dem Beginn bei:
So verhindern Sie, dass Daten bis zu einem bestimmten Zeitpunkt beginnen:
TIME kann eine Zahl in Sekunden oder in hh: mm: ss [.xxx] sein
Um Dateien zusammenzufügen, erstellen Sie eine Datei mit dem Namen
join.txt
mit dem Inhaltdann
Oder:
So fügen Sie MPEG-Dateien (einschließlich Transportdateien) zusammen
Als GUI-Lösung habe ich Avidemux ausprobiert, aber mit schlechten Ergebnissen. Bei der Suche nach einer Linux-Lösung habe ich diesen Kommentar gefunden Hier zeigt auf Avidemux jeden Abend :
"Sie können Avidemux ausprobieren, aber nicht das stabile. Sie sollten die Win32-Version (ja, für Windows) mit" Wine "ausprobieren. Sie unterstützt H.264 und Sie müssen den Doppelpfeil verwenden, um die Keyframes zu finden, da Sie [ nicht] überall schneiden (wegen der "long gop" Sache ...), aber wie jede Software wie diese kann man NUR SCHNEIDEN, sonst wird es gerendert (bei Übergängen, Effekten, ectc.). http://avidemux.org/nightly/win32/ "
Ich habe das unter Linux / Wine getestet, aber es sollte auch unter Windows funktionieren.
Verwenden Sie zum Verknüpfen von Dateien Datei öffnen um die erste Datei hinzuzufügen und dann Datei anhängen für den Rest.
Speichern: Datei - Speichern.
quelle