当前位置: 首页 > news >正文

在安卓中使用 `mobile-ffmpeg` 压缩后的视频,浏览器在线播放提示“没有找到支持的视频格式和 MIME 类型”的解决方案

在安卓中使用 mobile-ffmpeg 压缩后的视频,浏览器在线播放提示“没有找到支持的视频格式和 MIME 类型”的解决方案

你可能在安卓开发中使用了 mobile-ffmpeg 进行视频压缩,而当你尝试在浏览器中在线播放压缩后的视频时,看到提示:“没有找到支持的视频格式和 MIME 类型。” 这个问题的原因以及如何解决?今天咱们就用大白话来聊聊。

问题的原因是什么?

你在安卓项目中用 mobile-ffmpeg 压缩视频时,可能默认使用了 H.265 (HEVC) 编码格式。这个格式确实厉害,能把视频压得更小,同时还能保持不错的画质。但是,H.265 并不是所有浏览器都支持的,尤其是在 HTML5 视频播放的环境下。像 Chrome 和 Firefox,虽然在某些情况下支持 H.265,但它并不是默认支持,而且许多移动端浏览器也无法识别这个格式。

当浏览器无法识别视频的编码格式或者容器格式时,就会显示“没有找到支持的视频格式和 MIME 类型”的错误。

浏览器支持的主流视频格式

要保证压缩后的视频能够在大多数浏览器中播放,视频编码格式容器格式必须符合浏览器的要求。这里是主流浏览器普遍支持的格式:

  • 容器格式mp4, webm, ogv
  • 视频编码H.264 (AVC), VP8, VP9
  • 音频编码AAC, Vorbis, Opus

问题就在于,你压缩后的视频可能用了 H.265 (HEVC) 作为视频编码,这种格式并不是浏览器最友好的选择。

解决方案:改用 H.264 视频编码

要让视频在浏览器中顺利播放,最稳妥的做法是将编码格式从 H.265 改为 H.264,这种编码格式兼容性最好,几乎所有浏览器和设备都支持。

如何在安卓中用 mobile-ffmpeg 压缩视频并确保兼容性?

mobile-ffmpeg 中,你可能原本使用了这样的命令来压缩视频:

String cmd = String.format("-i %s -strict -2 -vf scale=%d:%d -c:v libx265 -x265-params crf=28:preset=fast -r 30 %s",videoPath,newWidth,newHeight,outputFilePath
);

这里的 libx265 就是告诉 mobile-ffmpeg 用 H.265 编码压缩视频。为了确保视频能在浏览器中播放,我们可以把这个编码器换成 libx264,也就是使用 H.264 编码。修改后的命令如下:

String cmd = String.format("-i %s -strict -2 -vf scale=%d:%d -c:v libx264 -preset fast -crf 28 -r 30 %s",videoPath,newWidth,newHeight,outputFilePath
);

解释这些参数

  • -i %s:输入文件的路径。
  • -vf scale=%d:%d:缩放视频到指定的宽高。
  • -c:v libx264:使用 H.264 编码压缩视频。
  • -preset fast:使用快速压缩设置,减少压缩时间。
  • -crf 28:控制视频质量(数值越低,质量越好,文件越大)。
  • -r 30:设置帧率为 30 帧每秒。
确保音频也兼容:使用 AAC 编码

同样重要的是音频编码。为了确保音频部分在浏览器中也能正常播放,我们需要使用浏览器广泛支持的 AAC 编码。因此,我们的命令中还要加上音频编码的设置:

String cmd = String.format("-i %s -strict -2 -vf scale=%d:%d -c:v libx264 -preset fast -crf 28 -c:a aac -b:a 128k -r 30 %s",videoPath,newWidth,newHeight,outputFilePath
);
  • -c:a aac:使用 AAC 作为音频编码。
  • -b:a 128k:设置音频比特率为 128kbps,保证音质不错。

使用正确的 mobile-ffmpeg

在引入 mobile-ffmpeg 时,确保使用的包是 com.arthenica:mobile-ffmpeg-full-gpl:4.4,而不是 com.arthenica:mobile-ffmpeg-full:4.4。前者包含了 H.264 编码所需的支持库,确保编码时不会出现问题。

为什么选择 H.264 编码?

H.264 之所以是最好的选择,是因为它兼容性好。几乎所有的主流浏览器、移动设备、视频播放器等都支持 H.264 编码。这样,无论用户是在 Chrome、Safari 还是 Firefox 浏览器上,都可以轻松播放你压缩后的视频。

总结

如果你在安卓开发中使用 mobile-ffmpeg 进行视频压缩,遇到了浏览器无法播放压缩后视频的情况,多半是因为你使用了 H.265 编码。要解决这个问题:

  1. 改用 H.264 编码来压缩视频。
  2. 确保音频使用 AAC 编码,保证最大兼容性。
  3. 使用正确的 mobile-ffmpegcom.arthenica:mobile-ffmpeg-full-gpl:4.4

只要你按照这些步骤调整,压缩后的视频应该能够顺利在浏览器中播放,再也不会看到“没有找到支持的视频格式和 MIME 类型”的错误提示了。

小贴士:
  • 容器格式mp4
  • 视频编码H.264
  • 音频编码AAC

这样做,不仅能压缩视频,还能让它在所有主流浏览器里轻松播放!

http://www.lryc.cn/news/456567.html

相关文章:

  • C语言指针plus版练习
  • Kafka 快速入门
  • 探索人们最喜爱的AI工具及其应用影响
  • c语言位域详解
  • 如何修改Spring Boot内置容器默认端口
  • STM32自动下载电路分享及注意事项
  • 【深度学习基础模型】极限学习机(Extreme Learning Machines, ELM)详细理解并附实现代码。
  • 把交换机的两个接口连接起来会怎么样?
  • 无人机陆空双模式。
  • 14. 文档对象模型
  • 【计网】【计网】从零开始学习http协议 ---理解http重定向和请求方法
  • yolov8/9/10/11模型在中医舌苔分类识别中的应用【代码+数据集+python环境+GUI系统】
  • k8s部署安装
  • gpt为什么可以依据上下文来回答问题,依据的是什么原理
  • 2023 CCPC哈尔滨 报告
  • 基于深度学习的手术中的增强现实导航
  • 输电线路缺陷图像检测数据集,导线散股,塔材锈蚀两类,分别为581张和1407张,标注为xml和txt格式 1988张
  • 百度飞桨(paddlepaddle)安装
  • ≌图概念凸显有长度不同的射线
  • 解决Nginx出现“Too many open files”的问题
  • webGL进阶(一)多重纹理效果
  • flink-jdbc-driver
  • 快速的配置Prettier,让代码更整洁
  • JavaEE: HTTPS的魅力与优势揭秘
  • 软件设计师——系统基础开发
  • 架构设计笔记-7-系统架构设计基础知识
  • 跨平台应用程序本地化过程的特点
  • C++面试速通宝典——9
  • 阿里巴巴商品详情API返回值:电商行业发展的新动力
  • php的urlencode和rawurlencode区别