
FFmpeg
Atviro kodo multimedijos apdorojimo sistema
Kodavimas, dekodavimas, transkodavimas, transliavimas ir garso bei vaizdo failų konvertavimas per FFmpeg API.
Kas yra FFmpeg?
FFmpeg yra pirmaujanti atviro kodo multimedijos sistema, kuri leidžia kūrėjams įrašyti, konvertuoti ir transliuoti garso bei vaizdo turinį. Joje yra išsamus bibliotekų rinkinys – tokios kaip libavcodec, libavformat, libavutil, libavfilter, libswscale ir libswresample – suteikiantis patikimus įrankius įvairioms multimedijos užduotims atlikti. Palaikydama šimtus kodekų ir formatų, FFmpeg maitina begales programų, nuo vaizdo redagavimo programinės įrangos iki transliacijos serverių ir medijos grotuvų.
FFmpeg plačiai naudojamas įvairiose pramonės šakose dėl savo lankstumo, našumo ir aktyvios bendruomenės paramos. Jis tvarko viską – nuo paprastos formato konvertavimo iki sudėtingų vaizdo filtrų ir tiesioginės transliacijos. Nesvarbu, ar kuriate medijos serverį, darbalaukio grotuvą ar debesų pagrindu veikiančią transkoderio liniją, FFmpeg suteikia patikimas, aukštos kokybės apdorojimo galimybes. Jo komandų eilutės įrankiai, tokie kaip ffmpeg, ffplay ir ffprobe, leidžia lengvai integruoti juos į skriptus ir automatizavimo darbo srautus, o C API ir susiejimai (pvz., Python) suteikia gilų programinį valdymą.
Pradžia su FFmpeg
Norėdami pradėti naudoti FFmpeg, įdiekite jį per savo sistemos paketų tvarkyklę (pvz., `apt install ffmpeg` Ubuntu, `brew install ffmpeg` macOS) arba atsisiųskite paruoštas binarines rinkmenas iš oficialios svetainės. Programiškai naudoti, įdiekite Python įvyniojimą per `pip install ffmpeg-python` arba naudokite oficialias C bibliotekos antraštes. FFmpeg taip pat prieinamas GitHub adresu [FFmpeg GitHub](https://github.com/FFmpeg/FFmpeg), kur galite kompiliuoti iš šaltinio, kad gautumėte pasirinktines konfigūracijas. Jo lengvas pėdsakas ir platformų palaikymas daro jį idealiu darbalaukio, serverio ir įterptų sistemų diegimams.
Įdiekite FFmpeg per paketų tvarkykles
# Ubuntu/Debian
sudo apt update && sudo apt install ffmpeg
# macOS (Homebrew)
brew install ffmpeg
# Python wrapper
pip install ffmpeg-python
Konvertuoti mediją tarp formatų
FFmpeg puikiai konvertuoja medijos failus tarp šimtų formatų ir kodekų. Galite transkoduoti vaizdo įrašą iš MP4 į WebM, išgauti garso takelį iš vaizdo failų arba keisti konteinerio formatus be perkodavimo (srauto kopija). Jos protingi numatytieji nustatymai užtikrina aukštą kokybę, o išplėstiniai parametrai leidžia tiksliai reguliuoti bitų spartą, rezoliuciją, kadrų dažnį ir kodeko parametrus. Nesvarbu, ar ruošiate turinį internetiniam transliavimui, archyvavimui ar atkūrimui specifinėse įrenginiuose, FFmpeg suteikia tikslų valdymą išvesties kokybės ir suderinamumo atžvilgiu. Komandinės eilutės sąsaja palaiko sudėtingas filtrų grandines, skirtas dydžio keitimui, apkarpymui ir efektų taikymui konvertavimo metu.
Kaip konvertuoti MP4 į WebM naudojant FFmpeg?
ffmpeg -i input.mp4 -c:v libvpx-vp9 -crf 30 -b:v 0 -c:a libopus output.webm
Transliavimas realiu laiku ir tiesioginė transliacija
FFmpeg palaiko tiesioginį medijos įrašymą, transkoduotą ir transliavimą per protokolus, tokius kaip RTMP, HLS ir SRT. Jis gali įrašyti iš interneto kamerų, mikrofonų arba tinklo šaltinių ir siųsti srautus į platformas, tokias kaip YouTube, Twitch arba pasirinktinius RTMP serverius. Su mažo delsos parinktimis ir adaptaciniu bitų srauto transliavimu, FFmpeg suteikia galios tiesioginiam transliavimui renginiams, žaidimams ir stebėjimui. Jo gebėjimas tvarkyti kelis įvesties šaltinius, pridėti grafikos sluoksnius ir taikyti realaus laiko filtrus daro jį idealiu profesionalaus lygio transliavimo sprendimams. Taip pat galite segmentuoti išvestį DASH/HLS formatui, kad būtų adaptuotas atkūrimas mobiliose ir interneto klientų programose.
Kaip transliuoti vaizdo failą į YouTube Live?
ffmpeg -re -i input.mp4 -c:v libx264 -preset veryfast -maxrate 3000k -bufsize 6000k -g 50 -c:a aac -b:a 160k -f flv "rtmp://a.rtmp.youtube.com/live2/your_stream_key"
Vaizdo filtravimas ir postapdorojimas
FFmpeg libavfilter karkasas suteikia galimybę galingam realaus laiko vaizdo filtravimui per nukreiptą aciklinį filtrų grafą. Galite apkirpti, keisti mastelį, sukti, deinterlacuoti, pašalinti triukšmą, pridėti vandens ženklus, įterpti tekstą, reguliuoti spalvas ir taikyti sudėtingus efektus, pvz., lėtą judesį arba laiko intervalą – visko be viso srauto perkodavimo. Filtrai gali būti sujungti į grandines kelių etapų apdorojimui, o aparatūros spartinimas (pvz., NVENC, VAAPI, VideoToolbox) užtikrina našumą šiuolaikiniuose GPU. Tai daro FFmpeg nepakeičiamu video redaktoriams, turinio kūrėjams ir kūrėjams, kurie kuria medijos apdorojimo konvejerius, reikalaujančius vizualinių patobulinimų arba formato normalizacijos.
Kaip apkirpti, mastelio keisti ir pridėti vandens ženklą prie vaizdo įrašo?
ffmpeg -i input.mp4 -i watermark.png -filter_complex "[0:v]crop=1280:720:0:0[scaled];[scaled][1:v]overlay=10:10" -c:a copy output.mp4
Išgauti ir tvarkyti metaduomenis bei subtitrus
FFmpeg suteikia visišką kontrolę prie meta duomenų (žymių) ir subtitrų, įterptų į medijos failus. Galite išgauti, redaguoti arba pašalinti meta duomenis (pvz., pavadinimą, atlikėją, albumą, GPS duomenis) naudodami paprastus komandas, arba konvertuoti subtitrus tarp formatų, tokių kaip SRT, ASS ir VTT. Ji palaiko subtitrų įrašymą į vaizdo įrašą arba jų įterpimą kaip atskirus takelius. Prieinamumo ir lokalizacijos darbo srautams FFmpeg leidžia masinį subtitrų failų apdorojimą, laiko koregavimą ir kalbos takelių valdymą. Tai daro ją idealiai tinkamą subtitrų lokalizacijai, medijos turto valdymui ir atitikties transliavimo standartams, reikalaujantiems įterptų meta duomenų.
Kaip išgauti subtitrus iš vaizdo failo?
ffmpeg -i input.mkv -map 0:s:0 -c:s srt output.srt
