It can become complicated since there is no a easy way to handle images and videos on Mardown language (specially videos on the Strapi’s default rich text editor.
Another way is using DynamicZone, but it is also complicated since is not easy to parse DynamicZone response format on TypeScript.