【问题标题】:ffmpeg mp4 video is not playing on html5 video player on browser (corrupt format)ffmpeg mp4 视频无法在浏览器上的 html5 视频播放器上播放(格式损坏)
【发布时间】:2015-01-05 10:19:13
【问题描述】:

我正在执行以下命令以在视频上插入水印并以 mp4 格式输出,但 html5 视频播放器无法在浏览器上播放该格式。

$video_url = '../../../uploads/myvideo.mp4';
$watermarked = '../../../uploads/watermarked_video.mp4';
exec("ffmpeg -i $video_url -vf \"movie='sos.png', crop=iw:ih:0:0:dar [img]; [in] [img] overlay=(W-w)/2:(H-h)/2 [out]\" -vcodec mpeg4 -f avi $watermarked");  //creating water marked video

如果我把它下载到我的本地机器上,那么它就可以在播放器上完美播放。

有语法问题吗?

【问题讨论】:

  • 带水印的视频有什么用?我在 1 分钟内看到了 3 个问题!无论如何,你的网络播放器支持 ffmpeg 吗?
  • 不,我正在生成一个带有水印的 mp4 视频。但不能在浏览器上播放 html5 视频播放器
  • 你的网页(html5 播放器)是否支持 ffmpeg 格式无需安装其他任何东西即可播放?
  • 不,我认为它不支持 ffmpeg,但是与播放器和 ffmpeg 有什么关系。播放器将播放我通过 ffmpeg 命令执行生成的 mp4 视频。播放器正在播放带有服务器上保存的视频的视频(带有 url)

标签: php ffmpeg html5-video codec


【解决方案1】:

输出格式不太正确。这里有两个因素需要考虑:

  1. “容器格式”或“文件格式”,即整个文件的排列方式(例如 AVI、MOV/QuickTime、WebM、Ogg)
  2. “编解码器”,它是用于压缩和解压缩容器内的视频和音频数据的算法。大多数文件都有两种编解码器:一种用于音频(例如 AAC、Vorbis、MP3、Opus),另一种用于视频(例如 H.264、VP8、Theora)。

ffmpeg 支持读取和写入许多不同的格式和编解码器,VLC 播放器也是如此。 QuickTime 也有,但没有那么多。然而,浏览器更加挑剔。您将文件保存为浏览器不支持的“AVI”容器格式。您可能应该使用libx264 作为编解码器,它将输出 H.264 视频,并且比输出 MPEG-4 Part 2 视频的mpeg4 更广泛使用和更可靠。

试试这个:

$video_url = '../../../uploads/myvideo.mp4';
$watermarked = '../../../uploads/watermarked_video.mp4';
exec("ffmpeg -i $video_url -i sos.png -filter_complex \"[1:v]crop=iw:ih:0:0:dar [img]; [0:v] [img] overlay=(W-w)/2:(H-h)/2 [out]\" -map \"[out]\" -map 0:a -vcodec libx264 -acodec copy $watermarked");  //creating water marked video
  • 我已经删除了-f 参数,因为 ffmpeg 可以从输出文件扩展名中推断出格式。

  • 电影过滤器已从示例中删除,因为它不需要。

  • -vf 在此示例中被替换为 -filter_complex。请参阅 simplecomplex 过滤以了解区别。

  • 此示例中的音频将是 stream copied-acodec copy,而不是重新编码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-15
    • 2011-05-20
    • 1970-01-01
    • 1970-01-01
    • 2016-05-09
    • 2012-02-21
    • 2014-05-12
    相关资源
    最近更新 更多