【问题标题】:Converting DAV to MP4 and OGG将 DAV 转换为 MP4 和 OGG
【发布时间】:2014-10-21 18:23:45
【问题描述】:

我想准备包含来自安全摄像机的影片的 WEB 页面。每个录像机都以 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。为了在 FF 中正常工作,有必要添加指向 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.

【问题讨论】:

  • 不要忘记将 -movflags +faststart 添加为 MP4 输出的 ffmpeg 命令的输出选项。它将 MOOV atom 重新定位到文件的开头;否则客户端必须先下载完整的文件才能进行播放。
  • 是的!好主意!
  • 但是 ffmpeg 报告一个错误 - 找不到选项 movflags。我使用取自 johnvansickle.com/ffmpeg 的 ffmpeg ver 2.4.2 linux 64 位作为静态二进制文件
  • 没有 ffmpeg 命令和控制台输出就无法调试。
  • 所以我在第一篇文章中添加了控制台输出

标签: video browser ffmpeg html5-video ogg


【解决方案1】:

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

我没有测试这个。

【讨论】:

  • 这将只创建一个音频文件,或者如果输入只是视频 ffmpeg 将输出does not contain any stream 错误并创建一个空文件。
  • 是的。但问题是一些安全摄像头内置了麦克风,而有些则没有。但是为了在 Firefox 中正确播放这种转换后的文件,OGG 文件是必要的。但在 Chrome 中 - 不是。所以不管输入流中是否包含音频内容,OGG文件必须存在HTMLv5代码。
  • 那么在上述情况下该怎么办?
  • 是的。它会创建空文件,但没关系。我遇到的问题是浏览器仅显示视频剪辑的控件,剪辑的时间为“零”。我使用网页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 /电影/Kamery/1.ogg。谁能阻止我怎么了?
【解决方案2】:

我有答案,试试吧。

安装这个 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);

【讨论】:

    【解决方案3】:

    我只需要解决同样的问题,即使不使用 ffmpeg,我实际上也找到了解决方案。

    我在 Windows 上尝试过,但我想如果在 Linux 上完成它不会有任何区别。

    为了转换 .dav 文件,我使用了这样的 VLC:

    1) 转到工具 --> VLC 工具栏中的首选项。

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

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

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

    6) 按“转换/保存”按钮上的箭头并选择转换

    7) 然后在下面的部分中选择一个“目标文件”,点击浏览

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

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

    无论如何,在第 3 步之后,您应该已经可以播放 .dav 文件了,所以要检查它是否没有损坏,请先尝试播放。

    希望答案对某人有用,祝大家有个美好的一天:)

    编辑:这个答案当然与问题不完全相关,因为我不知道这些信息是否对网页有用:\ 所以,很抱歉没有完全关注主题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-15
      • 1970-01-01
      • 1970-01-01
      • 2020-03-31
      • 2011-03-08
      • 2016-11-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多