1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
log.level.set(5)
audio.samplerate.set(48000)
settings.audio.converter.samplerate.converters.set(["native"])
video.frame.rate.set(45)
settings.decoder.decoders.set(["ffmpeg"])
fname = argv(default="", 1)
out = {"#{fname}+ffmpeg_video_decoder-#{random.int()}.mp4"}
s = single(fname)
s = once(s)
done = ref(false)
##clock.assign_new(sync='none', [s])
def on_close(filename) =
if
not done()
then
done := true
process.run("sync")
j =
process.read(
"ffprobe -v quiet -print_format json -show_streams #{
process.quote(filename)
}"
)
let json.parse (parsed :
{streams: [{r_frame_rate: string, codec_name: string}]}
) = j
let [stream] = parsed.streams
if
stream.r_frame_rate == "45/1" and stream.codec_name == "h264"
then
test.pass()
else
test.fail()
end
end
end
output.file(
fallible=true,
on_close=on_close,
%ffmpeg(format = "mp4", %video(codec = "libx264")),
out,
s
)
|