如何播放html5视频?当文件是file.m4v?

Posted

技术标签:

【中文标题】如何播放html5视频?当文件是file.m4v?【英文标题】:How to play html5 video? When the file is file.m4v? 【发布时间】:2011-12-03 16:17:48 【问题描述】:

我尝试了几种方法,但都没有使用 html5 播放 file2.m4v 见屏幕截图。

但是,如果我使用 VLC/Mplayer 使用相同的文件,它可以很好地播放电影(没问题)。请参阅以下代码和文件详细信息以查找代码的使用:

video.php:

<html>
<head>
</head>

<body>

  <video preload="auto" autoplay="autoplay" controls>
    <source 
        src="/var/www/html/video/file2.m4v" 
            type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"'>    
  </video>

</body>
</html>

找到文件音频/视频编解码器:

$ mplayer -vo null -ao null -frames 0 -identify file2.m4v
MPlayer SVN-r33251-4.6.0 (C) 2000-2011 MPlayer Team
mplayer: could not connect to socket
mplayer: No such file or directory
Failed to open LIRC support. You will not be able to use your remote control.

Playing file2.m4v.
TS file format detected.
PROGRAM_ID=1 (0x01), PMT_PID: 66(0x42)
PROGRAM_ID=1 (0x01), PMT_PID: 66(0x42)
PROGRAM_ID=1 (0x01), PMT_PID: 66(0x42)
PROGRAM_ID=1 (0x01), PMT_PID: 66(0x42)
PROGRAM_ID=1 (0x01), PMT_PID: 66(0x42)
PROGRAM_ID=1 (0x01), PMT_PID: 66(0x42)
PROGRAM_ID=1 (0x01), PMT_PID: 66(0x42)
PROGRAM_ID=1 (0x01), PMT_PID: 66(0x42)
PROGRAM_ID=1 (0x01), PMT_PID: 66(0x42)
PROGRAM_ID=1 (0x01), PMT_PID: 66(0x42)
PROGRAM_ID=1 (0x01), PMT_PID: 66(0x42)
PROGRAM_ID=1 (0x01), PMT_PID: 66(0x42)
PROGRAM_ID=1 (0x01), PMT_PID: 66(0x42)
PROGRAM_ID=1 (0x01), PMT_PID: 66(0x42)
PROGRAM_ID=1 (0x01), PMT_PID: 66(0x42)
PROGRAM_ID=1 (0x01), PMT_PID: 66(0x42)
PROGRAM_ID=1 (0x01), PMT_PID: 66(0x42)
PROGRAM_ID=1 (0x01), PMT_PID: 66(0x42)
PROGRAM_ID=1 (0x01), PMT_PID: 66(0x42)
PROGRAM_ID=1 (0x01), PMT_PID: 66(0x42)
PROGRAM_ID=1 (0x01), PMT_PID: 66(0x42)
PROGRAM_ID=1 (0x01), PMT_PID: 66(0x42)
PROGRAM_ID=1 (0x01), PMT_PID: 66(0x42)
PROGRAM_ID=1 (0x01), PMT_PID: 66(0x42)
PROGRAM_ID=1 (0x01), PMT_PID: 66(0x42)
PROGRAM_ID=1 (0x01), PMT_PID: 66(0x42)
PROGRAM_ID=1 (0x01), PMT_PID: 66(0x42)
PROGRAM_ID=1 (0x01), PMT_PID: 66(0x42)
PROGRAM_ID=1 (0x01), PMT_PID: 66(0x42)
PROGRAM_ID=1 (0x01), PMT_PID: 66(0x42)
PROGRAM_ID=1 (0x01), PMT_PID: 66(0x42)
PROGRAM_ID=1 (0x01), PMT_PID: 66(0x42)
PROGRAM_ID=1 (0x01), PMT_PID: 66(0x42)
PROGRAM_ID=1 (0x01), PMT_PID: 66(0x42)
PROGRAM_ID=1 (0x01), PMT_PID: 66(0x42)
PROGRAM_ID=1 (0x01), PMT_PID: 66(0x42)
PROGRAM_ID=1 (0x01), PMT_PID: 66(0x42)
PROGRAM_ID=1 (0x01), PMT_PID: 66(0x42)
TS_PARSE: COULDN'T SYNC
VIDEO MPEG4(pid=69) AUDIO AAC(pid=68) NO SUBS (yet)!  PROGRAM N. 1
ID_VIDEO_ID=69
ID_AUDIO_ID=68
FPS not specified in the header or invalid, use the -fps option.
Load subtitles in ./
ID_FILENAME=file2.m4v
ID_DEMUXER=mpegts
ID_VIDEO_FORMAT=0x10000004
ID_VIDEO_BITRATE=0
ID_VIDEO_WIDTH=352
ID_VIDEO_HEIGHT=288
ID_VIDEO_FPS=0.000
ID_VIDEO_ASPECT=0.0000
PROGRAM_ID=1 (0x01), PMT_PID: 66(0x42)
ID_AUDIO_FORMAT=MP4A
ID_AUDIO_BITRATE=0
ID_AUDIO_RATE=0
ID_AUDIO_NCH=0
PROGRAM_ID=1 (0x01), PMT_PID: 66(0x42)
ID_START_TIME=28315.35
ID_LENGTH=0.00
ID_SEEKABLE=1
ID_CHAPTERS=0
==========================================================================
Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family
Unsupported PixelFormat 61
Unsupported PixelFormat 53
Selected video codec: [ffodivx] vfm: ffmpeg (FFmpeg MPEG-4)
==========================================================================
ID_VIDEO_CODEC=ffodivx
==========================================================================
Opening audio decoder: [ffmpeg] FFmpeg/libavcodec audio decoders
AUDIO: 8000 Hz, 1 ch, s16le, 0.0 kbit/0.00% (ratio: 0->16000)
ID_AUDIO_BITRATE=0
ID_AUDIO_RATE=8000
ID_AUDIO_NCH=1
Selected audio codec: [ffaac] afm: ffmpeg (FFmpeg AAC (MPEG-2/MPEG-4 Audio))
==========================================================================
AO: [null] 8000Hz 1ch s16le (2 bytes per sample)
ID_AUDIO_CODEC=ffaac
Starting playback...


Exiting... (End of file)
ID_EXIT=EOF

我还能用什么来在浏览器中播放这个文件?如果html5无法播放,是否还有可用的javascript播放器?

【问题讨论】:

【参考方案1】:

HTML5 视频只是一种使用新元素播放特定视频格式的约定,浏览器将为其实现自己的播放器。 HTML5 不会提供播放器或类似的东西。

您必须寻找大多数浏览器支持的编解码器,如果我没记错的话,它们主要是用于视频的 Theora 和用于音频的 Vorbis,位于 OGG 容器中。

然后我记得 Webkit 浏览器将支持使用 V8 作为视频编解码器和 Vorbis 用于音频的 Matroska (MKV) 容器。

我的建议:提供一个 OGG 文件,分别使用 Theora 和 Vorbis 作为视频和音频编解码器。 Inside 使用带有 V8 和 Vorbis 的 MKV 文件提供后备,然后,如果可以的话,在使用 Mpeg2 和 MP2(想不出更好的东西)作为视频和音频编解码器的 MPG 视频文件中,后备。 然后作为最后的后备,播放 FLV 视频文件的 Flash 播放器。

HTML 外观示例:

<video src="thevideo.ogg">
    <video src="firstFallback.mkv">
        <object type="video/mpeg" src="secondFallback.mpeg">
            <object
                type="application/x-shockwave-flash"
                src="player.swf?etc...">
                <p>Download <a href="videourl">the video etc...</a><br />
                or use a more modern browser to watch online, etc...</p>
            </object>
        </object>
    </video>
</video>

等等... ;-)

使用此配置,大多数(如果不是全部)浏览器应该能够播放您的视频,并且首选最受支持(和最现代)的格式。 “后备”,直到他们找到 Flash Player。

有关支持哪些格式的提示:请查看the HTML5 Video part in Wikipedia。

重要提示:在您的代码中,您指的是绝对文件系统路径,这对于网络访问者来说是完全不可访问的。也许在 src 中你的意思是 /video/file2.m4v

【讨论】:

没有目录问题。我用另一个文件(例如 file.avi)替换了它,它可以工作。但不是这个文件。 @LearnFedora 如果您在自己的计算机上提供文件,它可以工作,但对于访问者它不会。因为在他们的情况下,src 属性将引用他们计算机中的文件。 @LearnFedora 现在看看我的回答,我最后加了一个链接。 让我让它透明。视频是从一台 AXIS 摄像机捕获的,它是 RTSP 流。所以使用 VLC 我将它保存为 MP4(mpeg4 作为视频,aac 作为音频)。我只能用 Linux 和其他媒体播放器播放它。但我不能在 HTML5 等浏览器中播放,也不能将 Realtime 转换为 OGG(vorbis 音频,因为 VLC 坏了,如果我使用 ogg 或其他格式有错误)。 @LearnFedora 再次强调,HTML5 不是播放器,它取决于浏览器的实现。这是为网络访问者准备的吗?如果是这样,请考虑使用 ffserver 在更合适的编解码器中提供流。 (我以前也这样做过,所以我认为这个解决方案对你有好处)【参考方案2】:

试试:

<video id="myVideo"   preload="auto" src="/var/www/html/video/file2.m4v" type="video/mp4" autoplay controls></video>

还可以尝试将文件重命名为 file2.mp4

【讨论】:

您确定该文件没有 Apple 的 FairPlay DRM 保护,并且它在本地播放的原因是您的计算机安装了 iTunes。另外,文件的路径似乎有些奇怪?你的日志说:“mplayer:没有这样的文件或目录”,但它确实看起来像是找到了我的文件,但长度和比特率为零! 您是从 iTunes 下载此视频的吗? 它没有下载的文件。其从 VLC 播放器自行创建的文件。它与 iTunes 无关。 那你到底为什么将它命名为 .m4v ,它是 iTunes 的特定 Apple 文件扩展名,而不是 .mp4 ?【参考方案3】:

HTML5 是一种网络标准(换句话说,一种规范),而不是一种技术,因此“html5 不能发挥它”这句话暗示了您对它的一些误解。该文件由浏览器根据您在&lt;video&gt; 标签中指定的设置进行解码。值得注意的是,并非每个浏览器和/或操作系统都提供相同的编解码器,因此请先验证您是否可以原生播放视频。

首先,Firefox 无法解码使用 H.264 编解码器编码的任何内容,我认为该编解码器用于 .m4v 文件(任何知道得更好的人,请纠正我)。

最后,正如其他人指出的那样,您的路径可能是错误的。删除路径的“var”和“www”部分。

【讨论】:

【参考方案4】:

你的 html 是正确的,所以要么路径不正确,要么文件无效,要么浏览器不支持 m4v。

    /var/www/ 非常可疑,但正如你所说,它适用于 avi 文件,所以不是

    尝试在 src 中使用文件:http://ade.apple.com/movies/institute2011/hotel.m4v。如果它正在播放,那么您的 m4v 可能没有正确编码。

    如果您使用的是 Firefox 或 Opera,那么电影将永远无法播放,因为它们不支持 WebM 和 OGG 以外的任何东西

【讨论】:

以上是关于如何播放html5视频?当文件是file.m4v?的主要内容,如果未能解决你的问题,请参考以下文章

HTML5中如何显示视频HTML5视频播放

如何在 html5 视频播放器中播放 wmv 文件

加载 HTML5 视频时如何制作加载图像?

如何在 DOM 之后加载视频 HTML5 并循环播放?

如何在 IE8 浏览器中播放 html5 视频

如何检测 HTML5 视频标签支持的视频格式?