Sammenkoble lydfiler i Windows med FFmpeg

Denne vejledning demonstrerer, hvordan man automatiserer sammenkobling af to eller flere lydfiler af samme format ved hjælp af FFmpeg samtidig med at metadata bevares i den fusionerede fil. Et testet eksempel batch-fil er tilvejebragt for at illustrere. Denne vejledning er relateret til a forrige indlæg til at sammenkoble lydfiler også med en batchfil, men med at bruge et andet sæt kommandolinjeværktøjer til at slutte dem.

clapper board

Hvad er FFmpeg?

FFmpeg er en open source og cross-platform kommandolinie sæt af SW-programmer til optagelse, konvertering og streaming af lyd og video. Udviklet under Linux er kompilerede versioner tilgængelige for de fleste operativsystemer og platforme. Det er siden blevet en af ​​de mest kendte og mest udbredte produkter af sin type. FFmpeg er kompatibel med et stort antal SW applikationer, og det bruges i mange populære SW produkter som f.eks VLC Media Player, YouTubeog Håndbremse. Selv om FFmpeg indeholder over 100 codecs og et overvældende antal mulige kombinerede kommandolinjeindstillinger, er det ikke så svært at bruge.

For at demonstrere, hvor nemt det kan være, giver FFmpeg.org dette eksempel kommando til at konvertere input.mp4 til output.avi på sin hjemmeside:

$ ffmpeg -i input.mp4 output.avi

Mens ovenstående eksempel er enkelt, kan FFmpeg-kommandoer også være mere komplekse.

Main FFmpeg Tools

Den FFmpeg-version, der bruges til denne vejledning, er en Windows-kompatibel version, der er tilgængelig fra Zeranoe FFmpeg. Du skal blot downloade den nyeste 32 eller 64-bit statisk bygning fra builds-siden her og udpak det til en mappe (bygningerne komprimeres i 7z format). Den anvendte version var git-dee7440 (2015-11-01).

FFmpeg-pakken indeholder følgende tre vigtigste eksekverbare værktøjer i bin-mappen:

  • ffmpeg.exe - en kommandolinje encoder og media konverter
  • ffmprobe.exe - et kommandolinjeværktøj til at analysere og vise medieinformation
  • ffplay.exe - en simpel medieafspiller

Bemærk at der er en række kommandoer, der er fælles mellem de tre værktøjer. Kun ffmpeg.exe og ffmprobe.exe bruges i denne vejledning.

FFmpeg-hjælpefiler

FFmpeg giver tre niveauer af hjælpefiler: grundlæggende, lange og fulde. For at se de kommandoer, der er tilgængelige i hjælpefilerne, skal du klikke på filen ff-prompt.bat i rodmappen for at åbne et kommandovindue eller åbne din egen i mappen med bin og indtaste en af ​​følgende kommandoer:

ffmpeg -h - udskriv grundlæggende indstillinger ffmpeg -h lang - udskriv flere muligheder ffmpeg -h fuld - udskriv alle indstillinger (inklusive alle formater og codec-specifikke indstillinger, meget lang

Her er links til den grundlæggende hjælpefil: ffmpeg_help og den fulde hjælpefil: ffmpeg_help_full. Ved udskrivning til tekst er hjælpefilstørrelserne: 5kB for den grundlæggende, 25kB til fulde og 487kB for de lange hjælpefiler. Den lange hjælpefil indeholder omkring 7,000-linjer, hvilket giver et tip om, hvor mange kommandoer der er tilgængelige.

Batch-fil

Batch fil link: tasks_FFmpeg.bat

Linket til den batchfil, der bruges til denne vejledning, er angivet ovenfor. Sørg for at fjerne txt-forlængelsen, før du bruger den. Batchfilen er kun installeret ved hjælp af træk og slip-metoden.

For at sammenkoble lydfilerne og skrive metadata til den fusionerede fil, går batchfilen gennem følgende:

  1. Slet alle tidligere metadatatekstfiler, listefiler eller json-datafiler.
  2. Skriv metadata for hver lydfil til en separat metadatatekstfil
  3. Skriv filnavnet til lydfilerne til confiles.txt (se nedenfor format), en listefil, som FFmpeg bruger til at identificere lydfilerne til at sammenkoble
  4. Sammenkoble lydfilerne og skriv metadata fra den første lydfils metadata.txt-fil til den tilsluttede lydfil.

For at FFmpeg skal bruge en listefil (confiles.txt), skal filnavnet skrives til filen confiles.txt på separate linjer ved hjælp af følgende format.

fil 'filnavn1.ext' fil 'filnavn2.ext'

Den leverede batch script skal arbejde for de fleste lydformater af samme type, forudsat at de blev kodet ved hjælp af samme codec (selvom de kan være forskellige beholdere). Det blev testet med opus, mp3 og aac filer på en pc, der kører Windows XP.

Batch scriptet giver også mulighed for separat at udskrive lydfilmetadata, basisdata eller strøm- og containerformatdata til skærmen eller til en fil i json-format (menneskelig læsbar form) med muligheder for at ændre formatet i scriptet.

Kommandolinjebeskrivelse

De vigtigste FFmpeg-kommandoer til uddragning af metadata og sammenkobling af lydfilerne er beskrevet nedenfor. Selvom kommandoen ffprobe også blev brugt, er det ret nemt at forstå og burde være selvforklarende ved at undersøge koden og hjælpefilerne. Filnavnet, der bruges nedenfor, er ikke faktisk i batch scriptet, men er blevet forenklet til forklarende formål.

Kommandoen nedenfor uddrag og skriver metadata til en tekstfil:

ffmpeg -i infile.ext -f ffmetadata metadatafile1.txt
  • ffmpeg - kalder ffmpeg
  • -i infile.ext - angiver infile.ext som en input fil
  • -f ffmetadata metadatafile1.txt - Formater metadata til fil metadatafile1.txt

Metadata1.txt filen er formateret som nedenfor:

; FFMETADATA1 album = Navn på albumartist = Kunstner Navngenre = Musik Genre Navn titel = Titel Navnespor = Spor # dato = Datokode = Koder brugt

Den næste kommando bruges kun til at behandle mp3-filer. Den sammenkæder mp3-filer og skriver indholdet metadatafile1.txt i id3-format af den første mp3-fil til den fusionerede mp3-fil:

ffmpeg -f concat -i confiles.txt -i metadatafile1.txt -map_metadata 1 -id3v2_version 3 -write_id3v1 1 -c kopier filnavn1_merged.mp3
  • ffmpeg - kalder ffmpeg
  • -f konkat -i confiles.txt - brug concat demuxer til at sammenkoble de mp3 filer, der er angivet i confiles.txt (behandler confiiles.txt som en enkelt fil og angiver det som input-fil 0)
  • -i metadatafile1.txt - angiv metadatafile1.txt som inputfil 1
  • -map_metadata 1 - map input fil 1 som kilde til metadata (metadatafile1.txt)
  • -id3v2_version 3 - vælg ID3v2 version 3 for at skrive
  • -write_id3v1 1 - aktiver ID3v1 skrivning
  • -c kopier filnavn1_merged.mp3 - stream kopi til filnavn1_merged.mp3 (-c copy = stream kopi)

Den næste kommando, der vises, behandler andre lydfiler end mp3. Den fungerer som den foregående kommando, men skriver standardmetadata (hvis den findes) fra den første lydfil til den fusionerede fil:

ffmpeg -f concat -i confiles.txt -i metadatafile1.txt -map_metadata 1 -c kopier filnavn1_merged.ext
  • ffmpeg - kalder ffmpeg
  • -f konkat -i confiles.txt - brug concat demuxer til at sammenkoble de filer, der er angivet i confiles.txt (behandler confiiles.txt som en enkelt fil og angiver det som input-fil 0)
  • -i metadatafile1.txt - angiv metadatafile1.txt som inputfil 1
  • -map_metadata 1 - map input fil 1 som kilde til metadata (metadatafile1.txt)
  • -c kopier filnavn1_merged.mp3 - stream kopi til filnavn1_merged.ext (-c copy = stream kopi)

Yderligere hjælp - Online kommandolinje generatorer

Der er en række online FFmpeg kommandolinje generatorer, der kan hjælpe med at konstruere forskellige lyd og video FFmpeg kommandoer. Nogle af dem er anført nedenfor:

FFmpeg lille hjælper - Rodrigo Polo

FFmpeg Hjælper

FFmpeg Command Generator

Referencer:

Nyttige FFmpeg-kommandoer

Sammenkædning af mediefiler

FFprobeTips

FFmpeg & FFprobe Cheatsheet

Kilde

Efterlad en kommentar

Dette websted bruger Akismet til at reducere spam. Lær, hvordan dine kommentardata behandles.