Skip to content

Cum să separi streamuri audio în fișiere individuale cu FFmpeg

DodaTech Updated 2025-01-15 2 min read

In this tutorial, you'll learn about Cum să separi streamuri audio în fișiere individuale cu FFmpeg. We cover key concepts, practical examples, and best practices.

Problema

Un fișier video sau audio conține mai multe streamuri audio (de exemplu, limba originală, dublaj, comentarii) și vrei să le extragi pe fiecare într-un fișier separat. FFmpeg permite selectarea și extragerea individuală cu parametrul -map.

Soluția Rapidă

Fix 1: Extragerea unui stream audio specific

GREȘIT — nu specifici streamul și primești doar primul:

ffmpeg -i video.mp4 -vn output.mp3
# (extrage doar primul stream audio)

CORECT — folosește -map pentru a selecta streamul:

# Extrage streamul audio 1 (index 1:0)
ffmpeg -i video.mp4 -map 0:a:0 -vn output1.mp3

# Extrage streamul audio 2 (index 1:1)
ffmpeg -i video.mp4 -map 0:a:1 -vn output2.mp3

Fix 2: Extragerea tuturor streamurilor audio

# Identifică streamurile disponibile
ffprobe -v error -select_streams a -show_entries stream=index,language,title video.mp4

# Extrage toate streamurile audio
ffmpeg -i video.mp4 -map 0:a:0 -vn -c:a copy output_stream0.m4a
ffmpeg -i video.mp4 -map 0:a:1 -vn -c:a copy output_stream1.m4a

Fix 3: Extragere cu nume descriptive

ffmpeg -i video.mp4 -map 0:a:0 -vn -metadata title="English" -c:a copy english.m4a
ffmpeg -i video.mp4 -map 0:a:1 -vn -metadata title="French" -c:a copy french.m4a

Fix 4: Extragere în format specific

# Extrage ca AAC
ffmpeg -i video.mp4 -map 0:a:1 -vn -c:a aac -b:a 128k commentary.mp4

# Extrage ca FLAC (lossless)
ffmpeg -i video.mp4 -map 0:a:0 -vn -c:a flac audio.flac

Fix 5: Separare cu script automat

# Script bash pentru extragerea tuturor streamurilor
for i in $(seq 0 $(ffprobe -v error -select_streams a -show_entries stream=index -of csv=p=0 video.mp4 | wc -l)); do
  ffmpeg -i video.mp4 -map 0:a:$i -vn -c:a copy "audio_$i.m4a"
done

Fix 6: Extragere stream multicanal în mono

# Extrage streamul 5.1 și creează câte un fișier pentru fiecare canal
ffmpeg -i video.mp4 -map 0:a:0 -af "channelsplit=channel_layout=5.1" output.wav

Folosește DodaTech Stream Explorer pentru a vizualiza toate streamurile dintr-un fișier.

Prevenție

  • Listează streamurile cu ffprobe înainte de extragere.
  • Folosește -map pentru a selecta exact streamul dorit.
  • Adaugă -vn pentru a elimina video-ul.
  • Folosește -c:a copy pentru extragere rapidă fără re-encode.

Greșeli Comune cu Separarea Streamurilor

  1. Indexarea greșită a streamurilor — primul stream audio este 0:a:0, nu 0:a:1.
  2. Uitarea parametrului -vn — fără el, vei obține și video în fișier.
  3. Re-encode inutil — folosește -c:a copy pentru a păstra calitatea originală.

Aceste greșeli apar frecvent în cod FFmpeg real. Contribuitorii DodaTech au identificat aceste patternuri prin analiza proiectelor open-source și a sistemelor de producție.

Exercițiu Practic

Scrie o comandă FFmpeg care extrage al treilea stream audio dintr-un fișier MKV și îl salvează ca fișier AAC separat.

Acest exercițiu întărește conceptele acoperite în acest ghid. Încearcă să-l implementezi înainte de a verifica soluțiile online.

FAQ

### Cum identific streamurile audio dintr-un fișier?

Folosește ffprobe -v error -select_streams a -show_entries stream=index,language,title video.mp4. Ieșirea va arăta indexul, limba și titlul fiecărui stream audio.

Care este sintaxa corectă pentru -map?

Formatul este -map input_file:stream_type:stream_index. De exemplu, -map 0:a:0 = primul fișier input, stream audio, index 0.

Pot extrage toate streamurile audio simultan?

Da, rulează comanda o dată pentru fiecare stream audio, schimbând indexul. Un script bash poate automatiza procesul pentru fișiere cu multe streamuri.

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro