Ich habe eine Reihe von Varianten und ein DASH-Manifest für Sintel erstellt, das mehr oder weniger funktioniert, aber die Validierung nicht besteht . Das Problem ist, wenn ich ein Video auf eine bestimmte Breite skalieren möchte, aber die Höhe, die das Seitenverhältnis beibehält, keine ganze Zahl ist - oder umgekehrt. Ich habe zum Beispiel 640:-1, 640: -2 und 640:290 als Wert von "-vf scale=" ausprobiert, aber entweder lehnt ffmpeg ihn ab oder die Validierung schlägt fehl. Wie kann ich in diese Auflösungen transcodieren?
Fehlerprotokoll von der Konformitätsseite:
### error: moov-1:trak-1:tkhd-1
### Width in TrackHeaderBox is not matching with out of box width information
WARNING: Sample description width 2560 not the same as track width 2558.532104
Warning: Unknown atom found "pasp": video sample descriptions would not normally contain this
WARNING: unknown mvex atom 'trep'
WARNING: unknown/unexpected atom 'meta'
Meine ffmpeg- und MP4Box-Befehle (OSX):
OUTDIR="sintel-transcoded"
#VIDOPTS24="-an -c:v libx264 -r 24 -tune animation -force_key_frames expr:gte(t,n_forced*3)"
VIDOPTS24="-an -c:v libx264 -tune animation -x264opts keyint=72:min-keyint=72:no-scenecut -vsync passthrough"
mkdir -p $OUTDIR
ffmpeg -i $SOURCEDIR/sintel_4k.mov \
$VIDOPTS24 -vf scale=320:146 -profile:v baseline -level 3.0 -crf 31 -maxrate 170k -bufsize 170k $OUTDIR/sintel_320.mp4 \
$VIDOPTS24 -vf scale=480:-2 -profile:v baseline -level 3.0 -crf 30 -maxrate 330k -bufsize 330k $OUTDIR/sintel_480.mp4 \
$VIDOPTS24 -vf scale=640:290 -profile:v baseline -level 3.1 -crf 30 -maxrate 500k -bufsize 500k $OUTDIR/sintel_640.mp4 \
$VIDOPTS24 -vf scale=640:290 -profile:v baseline -level 3.1 -crf 25 -maxrate 1000k -bufsize 1000k $OUTDIR/sintel_640_hq.mp4 \
$VIDOPTS24 -vf scale=960:-2 -profile:v main -level 3.1 -crf 19 -maxrate 2800k -bufsize 2800k $OUTDIR/sintel_960.mp4 \
$VIDOPTS24 -vf scale=1280:582 -profile:v main -level 3.1 -crf 19 -maxrate 4000k -bufsize 4000k $OUTDIR/sintel_1280.mp4 \
$VIDOPTS24 -vf scale=1920:-2 -profile:v high -level 4.0 -crf 20 -maxrate 6800k -bufsize 6800k $OUTDIR/sintel_1920.mp4 \
$VIDOPTS24 -vf scale=2560:1162 -profile:v high -level 5.0 -crf 19 -maxrate 12000k -bufsize 12000k $OUTDIR/sintel_2560.mp4 \
$VIDOPTS24 -profile:v high -level 5.1 -crf 20 -maxrate 20000k -bufsize 20000k $OUTDIR/sintel_3840.mp4 \
-vn -c:a aac -b:a 64k $OUTDIR/sintel_audio_64k.mp4 \
-vn -c:a aac -b:a 96k $OUTDIR/sintel_audio_96k.mp4 \
-vn -c:a aac -b:a 128k $OUTDIR/sintel_audio_128k.mp4
cd $OUTDIR
MP4Box -dash-strict 3000 -rap -frag-rap -profile dashavc264:live -bs-switching no -out Manifest.mpd \
sintel_3840.mp4:bandwidth=20000000 \
sintel_2560.mp4:bandwidth=12000000 \
sintel_1920.mp4:bandwidth=6800000 \
sintel_1280.mp4:bandwidth=4000000 \
sintel_960.mp4:bandwidth=2800000 \
sintel_640_hq.mp4:bandwidth=1000000 \
sintel_640.mp4:bandwidth=500000 \
sintel_480.mp4:bandwidth=330000 \
sintel_320.mp4:bandwidth=170000 \
sintel_audio_128k.mp4 \
sintel_audio_96k.mp4 \
sintel_audio_64k.mp4
mkdir dist
mv *dash* Manifest.mpd dist
Der Skalierungsfilter setzt das Abtast-Seitenverhältnis zurück, damit es mit dem ursprünglichen Anzeige-Seitenverhältnis übereinstimmt. setsar=1
Sie sollten nach jeder Skala hinzufügen . In jedem Fall enthalten Videos keine Pixelanzahl mit Bruchteilen, und FFmpeg gibt diese nicht aus.
Ich bin mir bei DASH nicht sicher, aber ich nehme an, der Validator erwartet, dass jede Variante genau das gleiche Seitenverhältnis hat. In Ihrer Befehlsliste kann ich 640x290
und sehen 1280x582
, die nicht denselben Aspekt haben. Wenn DASH alle gleich sein müssen, sollte Letzteres so sein1280x580
rauben