Ich muss mit Videodateien arbeiten, die offensichtlich mit einer Art 5.1-Setup aufgenommen wurden, bei dem nur zwei Kanäle mit Monosignalen von zwei separaten Mikrofonen gefüllt wurden. Meine Idee ist, ffmpeg zu verwenden, um die vier leeren Kanäle zu löschen, aber ich bin ratlos.
Ich habe es geschafft, alle Audiostreams zu löschen, aber nach stundenlangem Herumprobieren mit -map, -filter usw. habe ich es nicht geschafft, die leeren Kanäle im Audiostream zu löschen. Die Kanäle 3 und 4 enthalten das Audio, das ich als separate Monospuren haben möchte. Die Kanäle 1,2,5,6 sollten gelöscht und der Videostream einfach kopiert werden.
Dies ist die Ausgabe von ffprobe:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '2.MOV':
Metadata:
major_brand : qt
minor_version : 537199360
compatible_brands: qt
creation_time : 2022-01-21T04:37:49.000000Z
make : Atomos
make-eng : Atomos
encoder : ShogunInferno - 9.11
encoder-eng : ShogunInferno - 9.11
com.atomos.hdr.gamut: Rec709
com.atomos.hdr.gamma: SLog2
com.atomos.hdr.camera: Sony
com.apple.proapps.image.{TIFF}.Make: Atomos
com.apple.proapps.image.{TIFF}.Model: ShogunInferno
com.apple.proapps.image.{TIFF}.Software: 9.11
timecode : 05:11:39:13
Duration: 00:01:14.78, start: 0.000000, bitrate: 1064887 kb/s
Stream #0:0[0x1](eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 6 channels, s32 (24 bit), 6912 kb/s (default)
Metadata:
creation_time : 2022-01-21T04:37:49.000000Z
vendor_id : [0][0][0][0]
Stream #0:1[0x2](eng): Video: prores (Standard) (apcn / 0x6E637061), yuv422p10le(tv, bt709/bt709/unknown, progressive), 4096x2160, 1057968 kb/s, SAR 1:1 DAR 256:135, 50 fps, 50 tbr, 5k tbn (default)
Metadata:
creation_time : 2022-01-21T04:37:49.000000Z
vendor_id : appl
encoder : Apple ProRes 422
Stream #0:2[0x3](eng): Data: none (tmcd / 0x64636D74) (default)
Metadata:
creation_time : 2022-01-21T04:37:49.000000Z
timecode : 05:11:39:13
Danke für die Hilfe...
Antwort1
Ich bin mir über das Kanallayout nicht ganz sicher. Sie können die folgende Syntax versuchen:
ffmpeg -y -i six_channels.mp4 -filter_complex "[0:a]channelsplit=channel_layout=5.1[FL][FR][FC][LFE][BL][BR];[FC][LFE]amix=inputs=2[a];[FL]anullsink;[FR]anullsink;[BL]anullsink;[BR]anullsink" -map 0:v -map "[a]" -vcodec copy -acodec aac -ar 48000 -ac 2 stereo.mov
[0:a]channelsplit=channel_layout=5.1[FL][FR][FC][LFE][BL][BR]
- Teilen Sie das 5.1-Layout in 6 Audiokanäle mit den vorläufigen Namen[FL]
,[FR]
,[FC]
,[LFE]
,[BL]
, auf[BR]
.[FC][LFE]amix=inputs=2[a]
- Kanäle[FC]
mit[LFE]
temporärem Namen zusammenführen[a]
.[FL]anullsink;[FR]anullsink;[BL]anullsink;[BR]anullsink
- ignoriert die redundanten Audiokanäle.-vcodec copy -acodec aac -ar 48000 -ac 2
- Wählen Sie den Audio-Codec, die Abtastrate und die Anzahl der Ausgabekanäle.
Erstellen eines Inputs six_channels.mp4
(zum Testen):
ffmpeg -y -f lavfi -i testsrc=size=192x108:rate=1 -f lavfi -i sine=frequency=1000 -f lavfi -i sine=frequency=1000 -f lavfi -i sine=frequency=300 -f lavfi -i sine=frequency=400 -f lavfi -i sine=frequency=1000 -f lavfi -i sine=frequency=1000 -filter_complex "join=inputs=6:channel_layout=5.1:map=0.0-FL|1.0-FR|2.0-FC|3.0-LFE|4.0-BL|5.0-BR" -acodec aac -ar 48000 -ac 6 -t 10 six_channels.mp4
Aktualisieren:
Zwei separate Monospuren und PCM24-Codec:
Befehlszeilenbeispiel:
ffmpeg -y -i six_channels.mp4 -filter_complex "[0:a]channelsplit=channel_layout=5.1[FL][FR][FC][LFE][BL][BR];[FL]anullsink;[FR]anullsink;[BL]anullsink;[BR]anullsink" -map 0:v -map "[FC]" -map "[LFE]" -vcodec copy -acodec pcm_s24le -ar 48000 -ac 1 two_mono_tracks.mov