2012-04-16 59 views
0

这是一个奇怪的问题,Soundmanager 2不播放mp4文件 - 使用PHP脚本输出时

Soundmanager在使用PHP输出时不会播放MP4。

soundManager.createSound({ 
    id: 'sm2-1001', 

    url: 'http://mysite.tld/1333092566.mp3', // WORKS 
// url: [{type: 'audio/mp3', url: 'http://mysite.tld/outputmp3.php}], // WORKS 
// url: 'http://mysite.tld/1333092566.mp4', // WORKS 
// url: [{type: 'audio/mp4', url: 'http://mysite.tld/outputmp4.php}], // DOES NOT WORK 

    autoLoad: false, 
    autoPlay: true, 
}); 

网址是否正确,从浏览器去http://mysite.tld/outputmp4.php - 打开并播放就好了。

使用smartReadFile.php https://jplayer.googlegroups.com/attach/f308294ddea52f6c/smartReadFile.php?view=1&part=4

使用最新版本的SM2

的 从SM2

调试信息:

soundManager.createSound(): sm2-1001 (http://mysite.tld/outputmp4.php) 
soundmanager2.js (line 1110) 
SMSound() merged options: { id: sm2-1001, url: http://mysite.tld/outputmp4.php, autoLoad: false, autoPlay: true, loops: 1, multiShot: true, multiShotEvents: false, pan: 0, stream: true, usePolicyFile: false, volume: 100, usePeakData: false, useWaveformData: false, useEQData: false, bufferTime: 3 } 
soundmanager2.js (line 1112) 
SMSound.play(): "sm2-1001" is loading - attempting to play.. 
soundmanager2.js (line 1110) 
SMSound.play(): "sm2-1001" is starting to play 
soundmanager2.js (line 1112) 
SMSound._onload(): "sm2-1001" loaded. 
soundmanager2.js (line 1110) 
(Flash): correcting sound sm2-1001 end position (0) to length: 4602 

任何想法?请帮忙。谢谢。

+0

这里最有可能的答案是,通过'http:// mysite.tld/outputmp4.php'没有产生有效的MP4文件。把'error_reporting(0); ini_set('display_errors',0);'在PHP脚本的顶部,检查''标签之外的前导/尾随空格。如果您的脚本存储为UTF-8,请确保它没有[BOM](http://en.wikipedia.org/wiki/Byte_order_mark),并且如果可能将其转换为ISO-8859-1。尝试下载并保存文件,并在编辑器中打开它以确保它是有效的MP4文件。 – DaveRandom 2012-04-16 11:15:54

+0

我也这么认为,但是当我使用Firefox/Chrome/IE浏览器打开http://mysite.tld/outputmp4.php时,它怎么会启动文件并播放它就好了?文件是有效的MP4,否则你怎么能解释什么时候使用它直接链接到它罚款_url:'http://mysite.tld/1333092566.mp4'_ – 2012-04-16 11:19:19

+0

有没有什么办法可以发布脚本的实际URL所以我们可以看到输出以及服务器如何处理它?这可能是因为SM2请求文件的方式导致PHP生成错误消息,而您从浏览器中得不到该消息。禁用上述错误报告可以解决这个问题,为了双重安全,在php.ini中禁用它,以防错误是在初始化期间生成的那些烦人的'in/path/file at line 0'错误。我还会[Wireshark](http://www.wireshark.org/)查看原始网络数据。 – DaveRandom 2012-04-16 11:22:37

回答

0

将此选项强制为TRUE解决了该情况。

'isMovieStar': null,  // "MovieStar" MPEG4 audio mode. Null (default) = auto detect MP4, AAC etc. based on URL. true = force on, ignore URL 

此外,此选项必须应用,因为从Flash9开始支持isMovieStar。

soundManager.flashVersion = 9; 
0

audio/mp4不是正确的mimetype,因为mp4是(专为)视频。尝试使用video/mp4,或只是audio/mpeg

+0

SM2 API声明这是正确的格式。 http://www.schillmania.com/projects/soundmanager2/doc/#api soundManager.audioFormats = {} – 2012-04-16 11:05:21

+0

嗯,我试着改变,它仍然无法正常工作。 – 2012-04-16 11:05:44

+1

你确定你的PHP代码生成正确的Mp4吗? – ONOZ 2012-04-16 11:10:13