Search Support

Avoid support scams. We will never ask you to call or text a phone number or share personal information. Please report suspicious activity using the “Report Abuse” option.

Learn More

webm videos from ffmpeg say "Video can't be played because the file is corrupt."

  • 4 cavab
  • 1 has this problem
  • 6 views
  • Last reply by Darxus

more options

When I try to view the webm videos I've created with ffmpeg in firefox on android, I get this error message. These videos work in chrome on android, and on firefox on my desktop:

http://www.eternalmachinery.com/ecar/tbucket18crf55.webm http://www.eternalmachinery.com/ecar/ebucket4crf55_s.webm

This webm video plays fine on the same firefox browser on android:

http://downloads.webmproject.org/media/video/webmproject.org/big_buck_bunny_trailer_480p_logo.webm

Commands to create these files were: ffmpeg -framerate 60 -i ebucket%04d.png -c:v libvpx-vp9 -crf 55 -b:v 0 -s 800x450 -deadline best ebucket4crf55_s.webm ffmpeg -framerate 60 -i tbucket%04d.png -c:v libvpx-vp9 -crf 55 -b:v 0 tbucket18crf55.webm


Android 7.0 Firefox 57.0.1 2.8.11-0ubuntu0.16.04.1

When I try to view the webm videos I've created with ffmpeg in firefox on android, I get this error message. These videos work in chrome on android, and on firefox on my desktop: http://www.eternalmachinery.com/ecar/tbucket18crf55.webm http://www.eternalmachinery.com/ecar/ebucket4crf55_s.webm This webm video plays fine on the same firefox browser on android: http://downloads.webmproject.org/media/video/webmproject.org/big_buck_bunny_trailer_480p_logo.webm Commands to create these files were: ffmpeg -framerate 60 -i ebucket%04d.png -c:v libvpx-vp9 -crf 55 -b:v 0 -s 800x450 -deadline best ebucket4crf55_s.webm ffmpeg -framerate 60 -i tbucket%04d.png -c:v libvpx-vp9 -crf 55 -b:v 0 tbucket18crf55.webm Android 7.0 Firefox 57.0.1 2.8.11-0ubuntu0.16.04.1

All Replies (4)

more options

After more searching, it was looking like a problem with ffmpeg defaulting to yuv444p and firefox not supporting it, but when I encoded it with yuv420p, it sometimes works when loaded directly, and still says it's corrupt when viewed in a web page:

The file: http://www.eternalmachinery.com/ecar/tbucket18crf55yuv420p.webm

The web page it's embedded in: http://www.eternalmachinery.com/ecar/

When I first tried to view it directly, it didn't load. After rebooting my phone, and loading it directly, it played fine. Then, moments later, loading directly, it wouldn't load again.

This file was created with: ffmpeg -framerate 60 -i tbucket%04d.png -c:v libvpx-vp9 -crf 55 -b:v 0 -pix_fmt yuv420p tbucket18crf55yuv420p.webm

more options

And that yuv420p version still works fine with chrome on android, and firefox on my desktop.

more options

Summary: firefox on android does not work with vp9 *or* yuv444p chroma subsampling.

Okay, the reason the webmproject.org file worked and mine didn't is theirs was encoded with vp8, and I used vp9. I then checked the combinations, and verified that firefox on android does not work with vp9 *or* yuv444p. So I guess this is two bugs in one.

The ffmpeg command line that worked was:

ffmpeg -framerate 60 -i tbucket%04d.png -c:v libvpx -crf 55 -b:v 0 -pix_fmt yuv420p tbucket18crf55yuv420pvp8.webm

The important parts being:

"-c:v libvpx" to specify the vp8 codec (the older codec for webm), and

"-pix_fmt yuv420p" to specify 4:2:0 chroma subsampling instead of full chroma 4:4:4: https://en.wikipedia.org/wiki/Chroma_subsampling#4:2:0

ffmpeg defaults to 4:4:4 because the input (png images) is 4:4:4.

I determined the difference between the two files with: ffmpeg -hide_banner -stats -i filename

The results included:

Input #0, matroska,webm, from 'big_buck_bunny_trailer_480p_logo.webm':

   Stream #0:0: Video: vp8, yuv420p, 852x480, SAR 1:1 DAR 71:40, 50 fps, 50 tbr, 1k tbn, 1k tbc (default)

Input #0, matroska,webm, from 'tbucket18crf55yuv420p.webm':

   Stream #0:0: Video: vp9 (Profile 0), yuv420p(tv), 800x450, SAR 1:1 DAR 16:9, 60 fps, 60 tbr, 1k tbn, 1k tbc (default)

All these combinations (vp9 + yuv444p) work on chrome on android and firefox on my desktop.

Modified by Darxus

more options

The phone I'm testing this on is an LG G6.