How to play html5 video? When the file is file.m4v?

拜拜、爱过 提交于 2021-02-06 10:56:38

问题


I have tried several methods but none is playing the file2.m4v using html5 see screen shot.

But if i use that same file using VLC/Mplayer it play the film nicely (no problem). Please see following the code and the file detail information's to find the code's its using:

enter image description here

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>

Find the file audio/video codecs:

$ 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

What else i can use to play this file in the browser? Is there any javascript player available also in case html5 cant play it?


回答1:


HTML5 Video is just a convention to play a certain video formats with a new element for which browsers will implement an own player. HTML5 won’t provide players or something like that.

You have to look for the codecs and contained supported by most browsers, which, if I remember well, are mostly Theora for Video and Vorbis for audio, in an OGG container.

Then I remember that Webkit browsers will support Matroska (MKV) containers using V8 as video codec and Vorbis for audio.

My recommendation: provide an OGG file with Theora and Vorbis as video and audio codecs respectively. Inside provide a fallback using an MKV file with V8 and Vorbis and then, if you can, inside an MPG video file using Mpeg2 and MP2 (couldn’t think on something better) as video and audio codecs, fallback. Then as the last fallback, a Flash player playing a FLV video file.

Example for how your HTML should look like:

<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>

Etc... ;-)

With this configuration, most (if not all) browsers should be able to play your video, preferring the most supported (and most modern) format. “Fallbacking” until they find a Flash Player.

For hints on what formats to support: take a look at the HTML5 Video part in Wikipedia.

Important: In your code you are refering to an absolute filesystem path, which is totally not-accesible for a web visitor. Maybe in the src you meant /video/file2.m4v.




回答2:


Try:

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

Also try renaming the file to file2.mp4




回答3:


HTML5 is a web standard (in other words, a specification), not a technology, so the phrase "html5 cant play it" implies a bit of misunderstanding on your part. The file is decoded by the browser according to the settings you specify in the <video> tag. It is worth noting that not every browser and/or operating system has the same codecs available, so first verify that you can play the video natively.

Firefox, for one, cannot decode anything encoded with the H.264 codec, which I believe is used in .m4v files (anyone who knows better, please correct me).

Lastly, as someone else pointed out, your path is likely wrong. Remove the 'var' and 'www' portions of the path.




回答4:


Your html is correct, so either the path is incorrect, the file is invalid, or the browser doesn't support m4v.

  1. /var/www/ is highly suspicious, but as you say it works with a avi file, so that is not it

  2. Try using the file: http://ade.apple.com/movies/institute2011/hotel.m4v in the src. If it is playing, then your m4v is probably not correctly encoded.

  3. If you are using Firefox or Opera then the movie will never play, as they don't support anything other than WebM and OGG



来源:https://stackoverflow.com/questions/7698953/how-to-play-html5-video-when-the-file-is-file-m4v

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!