我正在创建一个CMS,用户可以上传视频以便在页面上显示 .
上传视频时,我创建了一个后台任务(使用Hangfire)将视频转换为MP4,OGV和WEBM .
我在我的开发机器上运行最新版本的Firefox和Chrome . 根据Wikipedia,这些浏览器应完全支持H.264(MP4),Theora(OGG)和VP8 / VP9(WEBM) .
一切似乎都在Firefox中正常工作,并在本地使用VLC Media Player . 但是,使用Chrome时,当我尝试将现有视频(带有H.264视频和MPEG-2/4音频的MP4)转换为HTML5视频所需的三种格式时,我的结果会大不相同 .
图书馆
使用MediaToolkit和NReco.VideoConverter,生成的MP4和OGG / OGV文件无法在Chrome中播放(尽管WEBM正在运行) . 这是我的实现:
// MediaToolkit
using (var engine = new Engine())
{
engine.Convert(new MediaFile("C:\SourceFile.mp4"), new MediaFile("C:\DestinationFile.mp4"));
}
// NReco.VideoConverter
var ffMpeg = new NReco.VideoConverter.FFMpegConverter();
ffMpeg.ConvertMedia("C:\SourceFile.mp4", "C:\DestinationFile.mp4", Format.mp4);
尽管看起来具有相同的编解码器,但得到的mp4在Chrome中不起作用 . 以下是原始文件和转换文件的详细信息:
工作原始上传
视频
-
编解码器:H.264 / AVC
-
比特率:3954 kbps
-
画面尺寸:1920 x 1080像素
-
帧率:29.97 fps
AUDIO -
编解码器:MPEG-2/4音频
-
采样率:44100 Hz 16位
-
样本大小:16位
-
比特率:125.82 kbps
-
Channels :2
转换后的非工作视频
视频
-
编解码器:H.264 / AVC
-
画面尺寸:1920 x 1080像素
-
帧率:29.97 fps
-
比特率:1909 kbps
AUDIO
-
编解码器:MPEG-2/4音频
-
采样率:44100 Hz
-
样本大小:16位
-
比特率:124.81 kbps
-
Channels :2
如您所见,输入和输出文件看起来是相同的 . 但是,输出在Chrome中无效 .
在线转换器
-
当我尝试CloudConvert时,生成的MP4不起作用 .
-
当我尝试Converter Point时,MP4和WEBM可以工作,但OGV没有 .
-
当我尝试Online Convert时,MP4和WEBM可以工作,但OGV没有 .
为什么这个过程如此困难?我错过了一个简单的解决方案?