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 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
|
log.level.set(5)
settings.decoder.decoders.set(["ffmpeg"])
test.skip()
fname = argv(default="", 1)
out = {"#{fname}+ffmpeg_raw_and_encode_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: [
{
channel_layout: string?,
sample_rate: string?,
sample_fmt: string?,
codec_name: string?,
pix_fmt: string?
}
]
}
) = j
video_stream =
list.find((fun (stream) -> null.defined(stream.pix_fmt)), parsed.streams)
audio_stream =
list.find(
(fun (stream) -> null.defined(stream.sample_rate)), parsed.streams
)
if
null.get(video_stream.codec_name) == "h264"
and
null.get(video_stream.pix_fmt) == "yuv420p"
and
null.get(audio_stream.channel_layout) == "stereo"
and
null.get(audio_stream.codec_name) == "aac"
and
null.get(audio_stream.sample_fmt) == "fltp"
and
null.get(audio_stream.sample_rate) == "44100"
then
test.pass()
else
test.fail()
end
end
end
output.file(
fallible=true,
on_close=on_close,
%ffmpeg(format = "mkv", %audio(codec = "aac"), %video.raw(codec = "libx264")),
out,
s
)
|