如何选择适用于Web、Android和iOS的视频格式?

24

我正在开发一个视频分享项目,想知道是否有一种视频格式可以在Web、Android和iOS上兼容大多数播放器。

该应用程序将按如下方式工作:

  1. 用户可以从移动设备(iOS和Android)拍摄视频
  2. 其他用户可以在移动设备(iOS和Android)和Web浏览器上播放视频。

我不熟悉不同的视频格式。我注意到iOS中使用.mov和.mp4格式。但我假设.mov除了Safari之外,无法在Android和Web浏览器上播放。 是否有人能给个提示?

2个回答

46

来自Android开发者 - 支持的媒体格式,

Type  | Format /  | Supported File Type(s) /
      | Codec     | Container Formats
------+-----------+----------------------------------------------------------
Video | H.263     | 3GPP     (.3gp)
      |           | MPEG-4   (.mp4)
      +-----------+----------------------------------------------------------
      | H.264 AVC | 3GPP     (.3gp)
      |           | MPEG-4   (.mp4)
      |           | MPEG-TS  (.ts, AAC audio only, not seekable, Android 3.0+)
      +-----------+----------------------------------------------------------
      | H.265 HEVC| MPEG-4   (.mp4, Android 5.0+)
      +-----------+------------------------------------------------------
      | MPEG-4 SP | 3GPP     (.3gp)
      +-----------+----------------------------------------------------------
      | VP8       | WebM     (.webm)
      |           | Matroska (.mkv, Android 4.0+)
      +-----------+----------------------------------------------------------
      | VP9       | WebM     (.webm)
      |           | Matroska (.mkv, Android 4.0+)

另一方面,来自iOS开发者文库-媒体层的信息是:
iOS支持许多行业标准的视频格式和压缩标准,包括以下内容:
- H.264视频,最高1.5 Mbps,640 x 480像素,每秒30帧,低复杂度版本的H.264基本配置文件,AAC-LC音频最高160 Kbps,48 kHz,立体声音频,文件格式为.m4v、.mp4和.mov。 - H.264视频,最高768 Kbps,320 x 240像素,每秒30帧,基本配置文件高达1.3级别,AAC-LC音频最高160 Kbps,48 kHz,立体声音频,文件格式为.m4v、.mp4和.mov。 - MPEG-4视频,最高2.5 Mbps,640 x 480像素,每秒30帧,简单配置文件,AAC-LC音频最高160 Kbps,48 kHz,立体声音频,文件格式为.m4v、.mp4和.mov。 - 许多音频格式,包括音频技术中列出的格式。
另外,根据MDN-HTML5中,以下是支持的媒体格式:
  • <video>:在WebM中使用VP8和Vorbis
  • <video>:在WebM中使用VP9和Opus
  • <video>:通过MSE流式传输WebM
  • <video>:在Ogg中使用Theora和Vorbis
  • <video>:在MP4中使用H.264和MP3
  • <video>:在MP4中使用H.264和AAC
  • <video>:在MP4中使用FLAC
从所有数据来看,似乎.mp4(准确地说是H.264视频,MPEG-4中的AAC音频)是最佳选择,因为它在所有平台上都受支持(iOS、Android、Web浏览器)。但请注意,您仍然需要检查每个平台的兼容性问题(不同版本的Android,不同的Web浏览器),这在每个网站上都有解释。

嗨..我想目前Android上没有可用的HEVC编码器。这意味着不能使用HEVC进行编码,只有解码器可用。如果我错了,请纠正我@Andrew T。 - Parth Doshi

1

我来自安德鲁T的回答中添加更多信息。

根据安德鲁的结论设置参数:

// To Set Audio Encoder: AAC
mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);

// To set Video Encoder: H264
mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);

// To set Output Video format: mp4
mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);

希望它有所帮助...!!!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接