将DAV转换为MP4和OGG

3

我希望制作一个包含安全摄像机录制的影片的网页。每个录像机都会传输DAV格式的视频文件,因此使用以下语法将每个电影转换为MP4格式:

ffmpeg -y -i movie.dav -vcodec libx264 -crf 24 movie.mp4

所以我在HTMLv5代码中包含了以下内容:
 <video width="320" height="240">
  <source src="movie.mp4" type="video/mp4">
</video> 

在使用Chrome浏览器时,一切正常,但在Firefox浏览器中却存在问题。为了在Firefox中正确工作,需要添加OGG文件的链接。因此,两个浏览器下正确的HTMLv5语法应该如下:

 <video width="320" height="240">
  <source src="movie.mp4" type="video/mp4">
  <source src="movie.ogg" type="video/ogg">
</video>

有人能帮我传递正确的FFmpeg语法来创建OGG文件吗?

使用-movflags +faststart选项后,从控制台输出的结果如下:

[maciek@piotr MMM]$ ../ffmpeg-2.4.2-64bit-static/ffmpeg -movflags +faststart -y -i   04.24.23-04.24.38\[M\]\[@0\]\[0\].dav -vcodec libx264 -crf 24 10.mp4
ffmpeg version 2.4.2-   http://johnvansickle.com/ffmpeg/    Copyright (c) 2000-2014 the FFmpeg developers
  built on Oct  9 2014 07:24:56 with gcc 4.8 (Debian 4.8.3-11)
  configuration: --enable-gpl --enable-version3 --disable-shared --disable-debug --enable-runtime-cpudetect --enable-libmp3lame --enable-libx264 --enable-libx265 --enable- libwebp --enable-libspeex --enable-libvorbis --enable-libvpx --enable-libfreetype --enable-fontconfig --enable-libxvid --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-gray --enable-libopenjpeg --enable-libopus --disable-ffserver --enable-libass --enable-gnutls --cc=gcc-4.8
  libavutil      54.  7.100 / 54.  7.100
  libavcodec     56.  1.100 / 56.  1.100
  libavformat    56.  4.101 / 56.  4.101
  libavdevice    56.  0.100 / 56.  0.100
  libavfilter     5.  1.100 /  5.  1.100
  libswscale      3.  0.100 /  3.  0.100
  libswresample   1.  1.100 /  1.  1.100
  libpostproc    53.  0.100 / 53.  0.100
Option movflags not found.

不要忘记在 ffmpeg 命令的输出选项中添加 -movflags +faststart 以用于 MP4 输出。它将把 MOOV 原子重定位到文件开头;否则客户端在播放之前必须下载完整文件。 - llogan
是的!非常好的想法! - mackowiakp
没有您的FFmpeg命令和控制台输出,调试是不可能的。 - llogan
所以我在第一篇帖子中添加了控制台输出。 - mackowiakp
耶!它可以工作了!谢谢。 - mackowiakp
显示剩余2条评论
3个回答

0

ffmpeg -i movie.dav -vn -acodec libvorbis audiofile.ogg

我没有测试过这个。


这将仅创建一个音频文件,或者如果输入仅为视频,则ffmpeg将输出“不包含任何流”错误并创建一个空文件。 - llogan
是的。但问题在于一些安全摄像头有内置麦克风,而另一些则没有。但为了在Firefox中进行正确的回放,需要使用OGG文件进行转换。但在Chrome中则不需要。因此,无论输入流中是否包含音频内容,HTMLv5代码中都必须存在OGG文件。 - mackowiakp
那么在上述情况下该怎么办? - mackowiakp
是的。它创建了空文件,但是没问题。我遇到的问题是浏览器只显示视频控件,而且视频时间为“零”。我使用网页http://www.w3schools.com/html/tryit.asp?filename=tryhtml5_video 进行测试。我唯一更改的是文件名的位置 -> https://192.168.0.7/owncloud/remote.php/webdav/Filmy/Kamery/1.mp4 和 https://192.168.0.7/owncloud/remote.php/webdav/Filmy/Kamery/1.ogg。有人可以告诉我出了什么问题吗? - mackowiakp

0

我刚刚解决了同样的问题,实际上即使没有使用FFmpeg,我也找到了一个解决办法。

我在Windows上尝试过,但是我想在Linux上执行这个操作不会有任何区别。

为了转换.dav文件,我使用了如下方法:

1)点击VLC工具栏中的“工具”-->“首选项”。

2)然后在左下角的显示设置字段中选择“全部”。

3)进入“Demuxers”部分,从“自动”切换到“H264视频demuxer”,并保存。 4)然后再次从VLC工具栏中,转到媒体-->转换/保存...

5)选择“添加”,并选择要转换的文件。

6)单击“转换/保存”按钮上的箭头,然后选择“转换”

7)然后在下面的部分选择“目标文件”,并单击浏览

8)最后按“开始”并等待VLC进度条满。

此时,文件应已成功转换。

无论如何,在第3步之后,您都应该能够播放.dav文件,因此请先尝试播放以检查是否未损坏。

希望这个答案对某人有用,祝大家有一个愉快的一天 :)
编辑:当然,这个答案并不完全与问题相关,因为我不知道这些信息是否对网页有任何用处:\所以,很抱歉没有保持话题的准确性。

-1

我有一个答案,试试看。

安装这个 Nuget NReco.VideoConverter。

包管理控制台。

Install-Package NReco.VideoConverter -Version 1.1.2

还有这个方法来进行转换

var ffMpeg = new NReco.VideoConverter.FFMpegConverter();
ffMpeg.ConvertMedia(inputfile.dav, "output.mp4", Format.mp4);

这完全没有回答问题。 - Shayne

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接