当前位置: 首页 > 知识库问答 >
问题:

ffmpeg API编码mpeg-4 Windows Media Player错误

邓威
2023-03-14

我们有一个应用程序,它使用ffmpeg C API对mp4容器中的mpeg-4(AV_CODEC_ID_MPEG4)文件进行编码。问题是这些文件不能在Windows Media Player或Windows 10视频播放器“电影和电视”应用程序中播放。它在VLC、谷歌chrome、Ubuntu的视频播放器和我试过的所有其他视频播放器中播放。

这两个Windows播放器可以播放mp4容器中用mpeg-4编码的其他文件。我还测试了使用命令行'ffmpeg'工具将视频文件转换为相同格式,并成功地使用以下命令播放了视频:

ffmpeg input.avi-c:v mpeg4 output.mp4

但我发现下列命令不起作用:

ffmpeg input.avi-c:v mpeg4-vtag xvid output.mp4

FFMPEG input.avi-c:v libxvid output.mp4

#最后一个命令不能在windows media player中播放,但VLC仍然可以播放。如果最后两个命令的输出文件扩展名更改为avi,则Windows media player可以播放该文件。

我开始查看ffmpeg src代码,但它看起来有点大/复杂,我尝试使用更简单的“encode_video.c”示例,该示例能够编码视频并在Ubuntu的默认视频播放器中播放,但VLC和Windows Media player都不能播放。

我们需要使用ffmpeg API而不是命令行工具对这些代码进行编码,所以我想知道ffmpeg命令行工具在做什么我没有做,或者关于可能出现的问题以及如何使其工作的任何想法。

谢了。

共有1个答案

符功
2023-03-14

根据这一点,这个XVid播放不支持电影和电视应用程序以及其他使用WinRT开箱即用视频功能的Win商店应用程序。根据这一点,Windows Media Player也不支持它。如果您已经设法使用Windows Media Player播放它,那么很可能您已经安装了相应的第三方直接显示编解码器。在2017年使用XVid实际上没有什么真正的意义,只需使用h264就可以了。

 类似资料:
  • 我想用不同的比特率和分辨率对MPEG-DASH的实时流进行编码,以便实时播放。 到目前为止,我发现的一切要么只使用源分辨率(灵活,nginx rtmp模块),要么似乎只用于VOD流媒体(DASHEncoder)。 是否可以将DASHEncoder与实时输入(rtmp流)一起使用,我将如何做到这一点?如果没有,是否可以将nginx-rtmp ffmpeg用于我想做的事情?

  • 我目前正在发送一个视频流到Chrome,通过MediaSource API播放。 有什么方法可以实时地用FFMPEG编码成MPEG-DASH或关键帧WebM格式吗? 编辑: 我只是用尝试了一下,这样每个帧都是一个关键帧。不是理想的解决方案。不过,它现在确实适用于纵隔。在WebM中,有什么方法可以将段与关键帧同步,这样就不需要每个帧都是关键帧了? MediaSource API和mp4

  • 我一直在尝试学习MP4Box和Dash,我正在取得一些进展,但我似乎无法让我的视频正常工作。我按照将播放器添加到一个简单的html页面的说明进行了操作,并用它测试了Dash测试页面中的已知MPD,并且播放器的一切都很完美,所以我缩小了MPD文件的范围。 我通过Dash验证器运行了我的MPD文件,但它失败了。我得到以下错误: 我正在使用MP4Box来分割mp4,所以这可能是一个错误的命令。我用的是这

  • 我想把一个MP4文件转换成一个MPEG-DASH视频,可以通过Chrome上的Dash-if HTML5播放器播放。我使用FFMPEG和MP4Box(来自GPAC)对视频进行转码,然后对其进行拆分,并在JavaScript控制台上不断得到一个MEDIA_ERR_SRC_NOT_SUPPORTED错误。 从网上提供的(非常稀疏的)信息(请参见此Chromium线程)来看,Chrome似乎只支持带有约

  • MPEG Recorder 是 Windows 平台下用来实时录制和压缩视频输入数据的软件,使用 MFC、DirectX、FFMPEG、MPEG4IP 等技术。程序生成 avi 和 mp4 格式的 MPEG-4 音频和视频格式数据。

  • 问题内容: 我是一个初学者,在Python 2.7中无法解码带有数字+(简体)汉字的几十个CSV文件到UTF-8。 我不知道输入文件的编码,所以我尝试了所有我知道的可能的编码- GB18030,UTF-7,UTF-8,UTF-16和UTF-32(LE和BE)。同样,尽管它们应该是GB18030的子集,但最好还是使用GBK和GB3212。当它们到达第一个汉字时,UTF都停止。除GB18030外,其他