搜索 | 用户支持

防范以用户支持为名的诈骗。我们绝对不会要求您拨打电话或发送短信,及提供任何个人信息。请使用“举报滥用”选项报告涉及违规的行为。

详细了解

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

  • 4 个回答
  • 1 人有此问题
  • 6 次查看
  • 最后回复者为 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

所有回复 (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.

由Darxus于修改

more options

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