Ich habe bereits die anderen Artikel über das Verketten gelesen, konnte aber keine finden, in denen die Angabe der Ausgabebitrate behandelt wird.
Ich habe 2 MP4-Videos.
Was ich tun möchte, ist, das erste Video auf 110% Geschwindigkeit zu beschleunigen (ohne die Tonhöhe zu ändern) und es dann mit dem zweiten Video zu verketten (das bei normaler Geschwindigkeit bleibt), und ich möchte, dass das resultierende Video eine Bitrate von 2,5 hat Mbps (da Wistia mir gesagt hat, dass dies das Minimum für meinen Upload sein sollte).
Derzeit führt mein erster Versuch zu einem Video, bei dem der zweite Teil vollständig verstümmelt ist und hellgrün usw. angezeigt wird. Mein zweiter Versuch (von Schritt 4) führt zu einem Video mit einer Gesamtbitrate von nur 1645 kbps.
Schritt 1:
In Adobe Premiere Pro CC 2017 habe ich 2 Videos exportiert, die jeweils diese Einstellungen verwenden:
Frame Rate: 30
Field Order: Progressive
Aspect: Square Pixels (1.0)
Profile: Main
Bitrate Encoding: CBR
Target Bitrate [Mbps]: 2.5
Audio Format: AAC
Audio Codec: AAC
Sample Rate: 48000 Hz
Bitrate [kbps]: 320
Schritt 2.
ffmpeg -i video1.mp4 -filter_complex "setpts=PTS/1.1;atempo=1.1" -c:v libx264 -x264-params "nal-hrd=cbr" -b:v 2.5M -minrate 2.5M -maxrate 2.5M -bufsize 5M video1_faster.mp4
Schritt 3. Erstellen Sie eine Textdatei mit diesem Inhalt:
file 'video1_faster.mp4'
file 'video2.mp4'
Schritt 4 (erster Versuch).
ffmpeg -f concat -safe 0 -i ffmpeg_concat_list.txt -c copy final.mp4
Schritt 4 (zweiter Versuch) (mit Neucodierung).
ffmpeg -i video1_faster.mp4 -i video2.mp4 -filter_complex "[0:v] [0:a] [1:v] [1:a] concat=n=2:v=1:a=1 [v] [a]" -map "[v]" -map "[a]" -b:v 2.5M -minrate 2.5M -maxrate 2.5M -bufsize 5M final.mp4
Was mache ich falsch? Vielen Dank.
Schritt 4 (erster Versuch) funktioniert, wenn Sie das zweite Video wie das erste neu codieren (ohne die Filter).
Was passiert ist, dass x264 neben dem Zeitunterschied zwischen der Ausgabe von CC und der von ffmpeg (was nur zu Zeitfehlern führt) einen High-Profile-Stream mit einem anderen Parametersatz als der Encoder von CC erzeugt. Codieren Sie das zweite Video mit ffmpeg neu und Ihre Dateien sollten übereinstimmen. Alternativ können Sie in CC beschleunigen und das 1. Video exportieren.
Dies schien zu funktionieren (ungefähr *):
ffmpeg -i video1_faster.mp4 -i video2.mp4 -filter_complex "[0:v] [0:a] [1:v] [1:a] concat=n=2:v=1:a=1 [v] [a]" -map "[v]" -map "[a]" -c:v libx264 -x264-params "nal-hrd=cbr" -b:v 2.5M -minrate 2.5M -maxrate 2.5M -bufsize 5M final.mp4
Beachten Sie, wie ich den -c:v libx264 -x264-params "nal-hrd=cbr"
Teil in "Schritt 4 (zweiter Versuch)" in meiner obigen Frage vermisst habe.
*Die Bitrate des Audios wurde auf 103 kbps verringert, obwohl die Audio-Bitraten der beiden Eingabedateien 317 kbps und 127 kbps betrugen. Mein nächstes Projekt wird also sein, herauszufinden, wie Schritt 2 verbessert werden kann, um die Audio-Bitrate der Originaldatei beizubehalten, und dann Schritt 4 zu verbessern, um die Audio-Bitraten wieder beizubehalten.
Ich würde es definitiv vorziehen, die (bessere) Antwort eines anderen zu akzeptieren.
rogerpack
Ryan
version N-82889-g54931fd Copyright (c) 2000-2016 the FFmpeg developers built with gcc 5.4.0 (GCC)
rogerpack