epubcheck
epubcheck copied to clipboard
Video needs fallback when using as an image source
I recently created a fixed layout EPUB which contained eight autoplaying videos.
The EPUB was validated with Pagina EPUB-Checker and EPUBCheck 4.2.6
On hearing that the autoplaying videos did not appear on iOS, I found a workaround to use the videos as src on img tags ( more on that technique here) and then adding a method to switch between regular video and the img video only for iOS such as
<div class="videoFrame noniOS" style="left: 0px; top: 0px; height: 842px; width: 595px;"><p><video muted="muted" loop="loop" autoplay="autoplay" playsinline="playsinline" ibooks:pause-readaloud="false" src="video/p6_giraffe_flipped.mp4" poster="images/1px.png" style="height: 842px; width: 595px;"/></p></div>
<div class="videoFrame iOS" style="left: 0px; top: 0px; height: 842px; width: 595px;"><p><img ibooks:pause-readaloud="false" src="video/p6_giraffe_flipped.mp4" style="height: 842px; width: 595px;"/></p></div>
the EPUB now autoplays on iOS and all other devices tested. But… the EPUB is now failing validation 8 times with the same reason
ERROR (MED-003) at "FF001_Triggers_UK_v1.1.epub/OEBPS/1.xhtml" (line 76, col 199): A manifest fallback must be provided for image resource "OEBPS/video/p6_giraffe_flipped.mp4" of type "video/mp4".
I have never seen this request before. No doubt because I have never used the video src for img technique before. But if I add a fallback to the image resource in the OPF then the autoplaying in iOS no longer works!
This leads me to ask some questions of the group, please…
Q1: Is this epub error intentional? Q2: Can and should it be altered? Q3: If I need to add a fallback to a video, why do I only need to do that when it is an image resource? Q4: Can I add a fallback in a way that doesn't knock out the autoplaying in iOS?
Currently I can only achieve what the client wants by supplying an invalid EPUB… so I'd be happy to hear any advice!
Supplying link and files here with client permission for testing and troubleshooting. Please do not share or use elsewhere…
v1.0 Valid EPUB, not autoplaying video in iOS
Direct download - FF001_Overdrive_UK_v1.0.epub View online - FF001_Overdrive_UK_v1.0.epub
v1.1 Invalid EPUB, autoplaying video in iOS
Direct download - FF001_Overdrive_UK_v1.1.epub View online - FF001_Overdrive_UK_v1.1.epub
The epub spec says that any video resource can be referenced without fallback; nothing restricts where you can reference videos from. So, I'd hazard this is an epubcheck bug.
The rules implemented to handle the various ways you can reference images from picture/img and src/srcset likely wouldn't account for videos, as it's not intuitive that you'd find a video in an img tag.
Adding another rule to sidestep image fallbacks when a video is detected seems a bit unwieldy, but luckily @rdeltour will have to figure that out... 😉
The epub spec says that any video resource can be referenced without fallback;
Yeah, it seems like EPUBCheck is expecting an image/* CMT in an img element, which would be a bug indeed (I'll need to run some tests to double-check).
nothing restricts where you can reference videos from
The host language (HTML, SVG) defines the restrictions.
In that particular case, is it even valid HTML to put some video/mp4 in there? The HTML spec says img represents an image, which can be potentially animated, but including video/mp4 may be a stretch? I remember having seen the article mentioned by @CircularKen (thanks for the pointer!), but didn't really think of EPUB at the time. Interesting question 😊
See whatwg/html#7141
In that particular case, is it even valid HTML to put some
video/mp4in there?
HTML doesn't restrict the media type, so it's primarily a question of support, no? That's outside our purview.
If there's a valid use case, we shouldn't inject ourselves as the arbiters of whether it makes sense.
Yes I totally agree @mattgarrish!
My question about HTMl validity was mostly out of curiosity. In any case, issuing MED-003 is a bug here.