Hi! We're currently facing an issue with some of our renders where we get the error: "Compositor error: No frame found at position 1164800 for source /tmp/remotion-v4.0.314-assets5c0rfxlcvl/remotion-assets-dir/08226177957840264.mp4". We use offthreadvideo and tried all of the fixes in https://www.remotion.dev/docs/troubleshooting/no-frame-found-at-position. Is there a way to silence this error? Also happy to give reproducible code snippets
#"No frame at position" error
1 messages · Page 1 of 1 (latest)
it's a fatal error, not a warning - can you report the video at https://remotion.dev/report ?
Report bad videos to Remotion. We will investigate and fix them.
The issue occurs with a specific remotion composition. How would I submit that here?
What could cause the fatal error and how could we temporarily get around it? Is it lambda specific or?
I ask because this bug isn't really rare for us at this point and are wondering if we could fallback to something to prevent failures
this error is tied to a specific video file.
normally the error message also includes the original source
if it does not appear, it indicates that you have an old remotion version and the issue is likely fixed by upgrading.
at least, it will tell you which video file is the curlprit, which you may then send us and we'll fix it
ahh ok gotcha
The error is indeed tied to a specific file, but depending on where my startFrom is, it either occurs or doesnt occur is what I mean
I can't seem to send the video to https://remotion.dev/report. Looks like the video exceeds 1GB. I have a public url that I have the video hosted at. Would it be possible to report using that?
yes, you can DM it!
sorry about this limitation
then, ideally also give me the startFrom value
received a video. if this was you: but can you also give the startFrom value?
tried 30, 60, 90, but could not reproduce
Hi! This was not my submission sorry
I'll get around to a reproducible test soon. Just have been busy
Actually a question: does remotion lambda render OffthreadVideo partially pull video files across different lambdas? Or does it pull the whole video in each separate lambda?
no, but we are working on this
follow https://github.com/remotion-dev/remotion/issues/2561 to get notified when we ship this
We're hitting this pretty routinely, particularly when there are two videos in the composition (eg, webcam & screen recording). We've given the offthread video cache 1GB of memory, but still run into it. I can provide some reproducible examples.
We're on an older version, i will try seeing if i can reproduce on the latest.
we've definitely improved that in newer versions!
the thing with screen recording videos is that a gap will be created if nothing on the screen moves. but as I said, I think this is mostly solved in newer versions
if you can reproduce on a newer version, send the video file via https://remotion.dev/report, I can take a look today or tomorrow
a gap will be created if nothing on the screen moves
Oh i learned this the hard way with SCStream + AVAssetWriter 😅
I've been trying to isolate my debugging down solely to the compositor and simulate its behavior in the rendering environment, but it always seems to run smooth with 1GB cache. I only get it to fail when I use small cache sizes. Weird part is that's the same configuration we use in our lambda (even on a 10GB resoruced lambda)
async function simulateCompositor(srcs: string[], duration = 60, fps = 30) {
const compositor = startCompositor({
type: 'StartLongRunningProcess',
payload: {
concurrency: 2,
maximum_frame_cache_size_in_bytes: 1024 * 1024 * 1024,
verbose: true,
},
logLevel: 'info',
// logLevel: 'verbose',
indent: false,
binariesDirectory: null,
});
const videos = await Promise.all(
srcs.map(async (originalSrc) => {
const downloadMap = makeDownloadMap();
const localSrc = await downloadAsset({
src: originalSrc,
downloadMap,
indent: false,
logLevel: 'verbose',
});
return {src: localSrc, originalSrc};
}),
);
for (let i = 0; i < duration; i += 1 / fps) {
console.log('getting frame', i);
await Promise.all(
videos.map(async ({src, originalSrc}) =>
compositor.executeCommand('ExtractFrame', {
src,
original_src: originalSrc,
time: i,
transparent: false,
tone_mapped: false,
}),
),
);
}
await compositor.finishCommands();
}
now it seems contradicting to me, once you say with 1gb cache it runs smooth, once you say you have problems
it would be the easiest to debug for me if you can send the video file and a snippet with your usage of offthreadvideo
Ah, to clarify: my isolation test above runs smooth, but when rendering on a Lambda I will still encounter No frame at position errors on the same videos, using the same cache size.
I will first be doing some updates to the latest version of remotion, and if I'm still hitting the issue on our Lambdas, I will provide you a reproducible example 💯
sounds good!
yes there might be more factors at play like in a render the frames might be requested out of order
And just a quick santity check for my own understanding: each chunk is running its own compositor right? It's not a single instance exposed by the launcher
each lambda chunk? yes
but if you render locally with a concurrency of say 4, there is still only one compositor instance