ffmpeg sta scrivendo queste informazioni in stderr , non stdout . Prova questo:
ffmpeg -i file.mp4 2>&1 | grep Duration | sed 's/Duration: \(.*\), start/\1/g'
Nota il reindirizzamento di stderr a stdout :2>&1
MODIFICA:
Il tuo sed dichiarazione non funziona neanche. Prova questo:
ffmpeg -i file.mp4 2>&1 | grep Duration | awk '{print $2}' | tr -d ,
Puoi usare ffprobe :
ffprobe -i <file> -show_entries format=duration -v quiet -of csv="p=0"
Produrrà la durata in secondi, ad esempio:
154.12
Aggiunta del -sexagesimal l'opzione restituirà la durata come ore:minuti:secondi.microsecondi :
00:02:34.12