2019-04-04, 18:08
  #1
Medlem
Bleppe_Bfs avatar
Tänkte testa gränserna för vad AV1 codecen klarar av med hjälp av en massa gamla mpeg2-klipp med interlacing. Inte nog med att den redan idag kan hålla samma kvalitet som HEVC/H.265 vid 40% lägre bitrate, utan AV1 har variabel framerate. Man man ha en video som har 60 fps ena sekunden och stillbild nästa för att gå upp till 30 osv.

Har en massa avsnitt av Computer Chronicles som innehåller både sekvenser med militära simulatorer som går i 60 fps och sekvenser som är som SVT:s skäggen i en katalog jag skulle behöva sortera efter upplösning.

Kod:
find . -type f -name "*.mpeg" -exec ffprobe {} -hide_banner -print_format flat \;

ffprobe kan ge mig all output jag behöver, det händer dock skumma saker om jag försöker tillämpa pipes på outputen och om jag försöker bara få ut texten till en fil så blir raderna förkortade?

Så här ser outputen ur ffprobe ut i terminalen.
Citat:
Input #0, mpeg, from './Computer Chronicles - 02x15 - Low End Computers.mpeg':
Duration: 00:29:36.27, start: 0.333744, bitrate: 5305 kb/s
Stream #0:0[0x1e0]: Video: mpeg2video (Main), yuv420p(tv, top first), 720x480 [SAR 8:9 DAR 4:3], 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc
Stream #0:1[0x1c0]: Audio: mp2, 48000 Hz, stereo, s16p, 224 kb/s

Så här ser outputen ut om jag kör >> på den.

Citat:
./Computer Chronicles - 02x15 - Low End Computers.mpeg,2,0,mpeg,MPEG-PS (MPEG-2 Program Stream),0.333744,1776.274501,1178054829,5305733,26

Dvs den slutar skriva innan det jag är intresserad av dyker upp.

Kör jag tee efter kommandot blir det ingen output. Inte ens med 2&1>

Som en for-loop blir det ingen output heller.
Kod:
for file in *.mpeg ; do ffprobe "$file" -hide_banner -print_format flat ; done | tee textfil

Hur kan ffprobe både ge ofullständig output från sig själv och ingen output via andra program?

Rundar den stdout men skriver till terminalen på andra sätt?

En workaround som funkar är att klippa och klistra ur outputen den vägen.
Citera
2019-04-04, 19:52
  #2
Medlem
ffprobe filnamn > asdf.txt 2>&1

funkar för mig, verkar som att ffprobe printar till stderr

https://trac.ffmpeg.org/ticket/2226
https://www.gnu.org/software/bash/ma...l#Redirections
Citera
2019-04-05, 08:01
  #3
Moderator
vhes avatar
Du behöver ge ffprobe en flagga som anger vilken typ av information du är ute efter. Troligen en/flera av de som börjar med -show_ och är listade under sektionen Main options i man-sidan.

Det som skrivs till stderr är tänkt att vara den parse-bara utdatan, vilket förklaras i buggen granitlarge länkade till.
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in