Korisnički alati

Site alati


ffmpeg

Korisne naredbe za ffmpeg (Windows inačica za AV izvore)

1. Odabir video i audio izvora

ffmpeg omogućava definiranje jednog ili više video (npr. dekstop, integrirana kamera, USB kamera, HDMI kamera) i jednog ili više audio (npr. izlazni zvuk računala, mikrofonski ulaz, integrirani mikrofon, USB mikrofon) izvora te njihovo mapiranje na jedan ili više izlaza (npr. dvije datoteke s različitom kombinacijom AV izvora i livestream port). Za listanje dostupnih video i audio izvora pokrenuti naredbu:

  • ffmpeg -list_devices true -f dshow -i dummy
[dshow @ 000001ffd04ea040] DirectShow video devices (some may be both video and audio devices)
[dshow @ 000001ffd04ea040]  "EasyCamera" \\
[dshow @ 000001ffd04ea040]  Alternative name "@device_pnp_\?usb#vid_174f&pid_2408&mi_00#6&37110e07&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global" \\
[dshow @ 000001ffd04ea040]  "screen-capture-recorder" \\
[dshow @ 000001ffd04ea040]  Alternative name "@device_sw_{860BB310-5D01-11D0-BD3B-00A0C911CE86}\{4EA69364-2C8A-4AE6-A561-56E4B5044439}" \\
[dshow @ 000001ffd04ea040] DirectShow audio devices \\
[dshow @ 000001ffd04ea040]  "Microphone (Conexant SmartAudio HD)" \\
[dshow @ 000001ffd04ea040]  Alternative name "@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{C8BB87C9-7326-4DD9-81CD-E56BAB80DE91}" \\
[dshow @ 000001ffd04ea040]  "virtual-audio-capturer" \\
[dshow @ 000001ffd04ea040]  Alternative name "@device_sw_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\{8E146464-DB61-4309-AFA1-3578E927E935}" \\
dummy: Immediate exit requested

U izlazu su unutar navodnika navedeni AV izvori koje je moguće snimati (“EasyCamera”, “screen-capture-recorder”, “Microphone (Conexant SmartAudio HD)”, “virtual-audio-capturer”). Izvori se za snimanje zadaju na sljedeći način:

  • ffmpeg -f dshow -i video=“EasyCamera”:audio=“Microphone (Conexant SmartAudio HD)” integrirana_kamera_i_mikrofon.mp4
    • (u video= i audio= moguće je zadati bilo koje unose dobivene iz naredbe za listanje dostupnih izvora)
    • integrirana_kamera_i_mikrofon.mp4 je ime izlazne datoteke
    • snimanje se prekida pritiskom tipke q dok je komandna linija odabrana kao aktivni prozor

Za snimanje radne površine (desktopa) koristiti gdigrab filtar:

  • ffmpeg -f gdigrab -framerate 25 -offset_x 0 -offset_y 0 -i desktop desktop_bez_zvuka.mp4
    • -offset_x i -offset_y koristite ako morate ograničiti prostor snimanja, npr. zbog korištenja više zaslona -offset_x postavite na vrijednost 1280 (nakon prvog zaslona)

ili instalirati Screen capture recorder (koji omogućava i korištenje izlaznog audia računala kao audio input). Naredba koja uz instalirani Screen capture recorder snima desktop i izlazni (a ne ulazni iz mikrofona) zvuk računala:

  • ffmpeg -f dshow -i video=“screen-capture-recorder”:audio=“virtual-audio-capturer” desktop_i_audio.mp4

Za snimanje radne površine (desktopa) i zvuka iz zvučnika ili zvuka iz mikrofona koristiti gdigrab filtar u kombinaciji s Screen capture recorderom za hvatanje zvuka:

  • ffmpeg -f gdigrab -framerate 25 -offset_x 0 -offset_y 0 -i desktop -f dshow -i audio=“virtual-audio-capturer” -c:v libx264 -c:a aac -crf 20 desktop_i_zvucnici.mp4
    • Snima cijelu radnu površinu i zvuk koji izlazi kroz zvučnike računala
  • ffmpeg -f gdigrab -framerate 25 -offset_x 0 -offset_y 0 -i desktop -f dshow -i audio=“Microphone (Conexant SmartAudio HD)” -c:v libx264 -c:a aac -crf 20 desktop_i_mikrofon.mp4
    • Snima cijelu radnu površinu i zvuk koji ulazi kroz zadani mikrofon (podesiti ime mikrofona!)
  • ffmpeg.exe -f dshow -i audio=“virtual-audio-capturer” -vn -c:a aac samo_audio_zvučnici.m4a
    • Snima samo audio izvor (u ovom slučaju zvuk iz zvučnika)

Za izradu prezentacije/projekta gdje izvodite prezentaciju i snimate svoj glas najbolje je kombinirati gdigrab filter i Screen capture recorder:

  • ffmpeg -f dshow -i audio=“Microphone (Conexant SmartAudio HD)” -f gdigrab -framerate 25 -offset_x 0 -offset_y 0 -i desktop desktop_s_mikrofonom.mp4
    • u godnjoj naredbi umjesto upisanog (Microphone (Conexant SmartAudio HD)) definirajte vlastiti mkrofon uređaj koji ste dobili u izlazu naredbe za popis dostupnih uređaja

odnosno istu naredbu uz dodatke parametre:

  • ffmpeg -rtbufsize 50000k -f dshow -i audio=“Microphone (Conexant SmartAudio HD)” -f gdigrab -framerate 25 -offset_x 0 -offset_y 0 -i desktop -c:v libx264 -crf 20 -vf scale=1280:720 -r 25 -c:a aac -pix_fmt yuv420p -profile:v baseline -level 3.0 projekt.mp4
    • vidi značenja parametara niže

Za izradu prezentacije u kojoj želite vlastitu snimku (npr. s kamere laptopa) dodati na snimku radne površine:

  • ffmpeg -f gdigrab -framerate 25 -offset_x 0 -offset_y 0 -video_size 1920×1080 -i desktop -f dshow -i video=“EasyCamera”:audio=“Microphone (Conexant SmartAudio HD)” -filter_complex “nullsrc=size=1280×720 [base]; [0:v] setpts=PTS-STARTPTS, scale=1280×720 [upperleft]; [1:v] setpts=PTS-STARTPTS, scale=320×240 [upperright]; [base][upperleft] overlay=shortest=1 [tmp1]; [tmp1][upperright] overlay=shortest=1:x=940:y=20 ” -c:v libx264 -y output.mkv
    • Pretpostavke ove naredbe su da snimate cijelu radnu površinu dimenzija 1920×1080 (-video_size) koja počinje na koordinati (0,0)=(-offset_x, -offset_y) s 25 sličica u sekundi (-framerate), da su imena uređaja za video i zvuk konfigurirana u -i video=“EasyCamera”:audio=“Microphone (Conexant SmartAudio HD)”, da želite izlaznu snimku veličine 1280×720 (nullsrc=size=) i da snimku sebe želite skalirati na veličinu 320×240 (scale=320×240 [upperright]) i pozicionirati počevši od koordinate (940,20) (overlay=shortest=1:x=940:y=20) .

Dodatne napomene i pojašnjenja:

  • Parametri definirani prije -i zastavice odnose se na izvor definiran tom -i zastavicom
  • Snimanje se prekida pritiskom tipke q dok je komandna linija odabrana kao aktivni prozor
  • Parametri definirani nakon poslijednjeg izvora (-i device_name) definiraju svojstva izlaza
    • npr. naredbom ffmpeg -f gdigrab -framerate 25 -video_size 1920×1080 -i desktop -framerate 20 -c:v libx264 -vf scale=1280×720 desktop.mp definira se da video ulaz šalje 25 FPS u 1920×1080 rezoluciji, a snimka će sadržavati 20 FPS enkodirano u h264 kodek u 1280×720 rezoluciji.

2. Podešavanje parametara snimanja:

  • -c:v libx264 = video kodek. Preporučeno libx264 jer je raširen i ima efikasnu kompresiju.
  • -c:a aac = audio kodek. Preporučeno aac jer je raširen i ima efikasnu kompresiju.
  • -r 25 = framerate. Više je bolje, 25 je ok za većinu snimki, a desktop može i manje.
  • -crf 22 = kvaliteta videa za h264 kodiranje (zadaje se umjesto bitratea). Manje je bolje za kvalitetu slike, 22 je dovoljno za većinu snimki.
  • -vf scale=1280×720 = rezolucija izlaznog videa. Više je bolje za kvalitetu slike ako snimani izvor to podržava. 1280:720 (720p ili HD ready) je dovoljno za većinu snimki.
  • -rtbufsize 1G = buffer. Više je bolje, pogotovo ako je računalo nedovoljno jako za real-time enkoding videa.
  • -pix_fmt yuv420p = YUV planar color space with 4:2:0 chroma subsampling. Za kompatibilnost s manje naprednim video playerima (QuickTime, Windows Media Player, …). Obavezno koristiti!
  • -profile:v baseline -level 3.0 = h264 enkoding profil relativno niske kompleksnosti. Za kompatibilnost sa manje naprednim i procesorski slabijim uređajima.

3. Trimanje (skraćivanje) videa

Trimanje početka videa:

  • ffmpeg -ss 00:01:15 -i snimka.mp4 -c copy trimana_snimka.mp4 (izbjegava reenkodiranje, ali ne mora izbaciti točno prvih 00:01:15 nego približno toliko, ovisno o keyframeovima)
  • ffmpeg -i snimka.mp4 -ss 00:01:15 -c:v libx264 -crf 19 -c:a aac trimana_snimka.mp4 (reenkodira snimku, ali izbacuje točno uvodnih 00:01:15)

Trimanje kraja videa:

  • ffmpeg -i snimka.mp4 -c copy -t 00:01:15 trimana_snimka.mp4 (izbjegava reenkodiranje, nova snimka traje od početka do 00:01:15)

Kombinacija:

  • ffmpeg -i snimka.mp4 -ss 00:01:00 -t 00:05:00 -c:v libx264 -crf 19 -c:a aac trimana_snimka.mp4 (reenkodira snimku, nova traje 5 minuta, početak joj ne nakon 1. minute stare snimke)

4. Konkatenacija (nadovezivanje) videa

Sve datoteke moraju koristiti isti video i isti audio kodek. Napraviti u mylist.txt datoteci popis datoteka s apsolutnim putanjama.

Sadržaj mylist.txt:

# Popis fajlova za konkatenaciju:
file 'C:/video_files/pocetak.mp4'
file 'C:/video_files/sredina.mp4'
file 'C:/video_files/kraj.mp4'

Datoteku s popisom pohraniti u isti direktorij gdje je i ffmpeg.exe i pozvati naredbu:

  • ffmpeg -f concat -safe 0 -i mylist.txt -c copy izlaz

Još mogućnosti.

5. Uključivanje titlova u mp4 container (soft subtitles):

  • ffmpeg -i snimka_bez_titlova.mp4 -i titlovi.vtt -c:v copy -c:a copy -c:s mov_text snimka_s_titlovima.mp4
    • u rezultantnoj snimci provjerite dostupnost titlova tako da ju otvorite u VLC player medijskom izvođaču i uključite titlove opcijom Subtitle/Sub track/…
  • Naredba bi trebala raditi i za druge formate titlova (.srt). Ako to nije slučaj, prebacite titlove u drugi format putem besplatnih web alata poput https://subtitletools.com/convert-to-vtt-online i ponovno pokušajte iskoristiti naredbu iznad.
ffmpeg.txt · Zadnja izmjena: 2023/06/19 18:11 (vanjsko uređivanje)