如何在mp4视频文件中添加MOOV原子

Rav*_*er 20 java mp4 android live-streaming android-layout

我正在使用android中的实时设备到服务器流.我能够在服务器上以字节为单位发送数据,但是当我在服务器VLC上录制期间播放该文件时,表示未找到MOOV原子.经过大量的解决方法后,我发现mp4文件的MOOV原子最终生成了.但我必须在服务器上播放该文件,而录制意味着直播.我浏览了SPYDROIDSIPDROID的源代码,但没有它们正在工作.我尝试使用FFMPEG在服务器端添加move atom 但没有取得任何成功.任何人都知道如何实现这一目标.Thanx提前.

k3a*_*k3a 18

有一个工具untrunc声称可以修复未完成(截断)的 mp4、m4v、mov、3gp 视频。我自己没有测试过,但可能值得一试。

  • 这通常不适用于我的视频,但我使用 [Anthon Lockwood 的 fork](https://github.com/anthwlock/untrunc) 取得了成功:它包含一个“-s”开关,用于“逐步执行未知序列” (20认同)
  • 测试了其他软件,没有一个能修复我损坏的文件,但只有这个。恭喜它的开发者!@k3a:谢谢你的提示。 (3认同)
  • 对于 Windows 使用:https://www.videohelp.com/software/recover-mp4-to-h264 (2认同)

小智 12

可以使用 FFMpeg 将 moov atom 移动到视频文件的开头。

ffmpeg -i input_video_file.mp4 -vcodec copy -acodec copy -movflags faststart output_video_file.mp4
Run Code Online (Sandbox Code Playgroud)

  • @RoubenTchakhmakhtchian尽管OP的标题如此,但这并不是一种添加缺失的moov原子的技术,只是一种将现有的moov从文件末尾移动到文件开头的技术(这实际上是问题中实际要求的)。如果你根本没有moov,你就会遇到更大的问题。 (12认同)
  • 这里有一个错字,“+faststart”应该是“faststart”,正确的命令是“ffmpeg -i input_video_file.mp4 -vcodec copy -acodec copy -movflags faststart output_video_file.mp4” – Joey 2018 年 5 月 3 日 7:44 (2认同)

Seb*_*ies 10

你遇到了问题.'moov'框是一种目录.如果不是所有内容都存在,则无法获得完整的目录.哎哟!

如果你想坚持使用MP4,如果你自己编写文件,你可以将文件写成所谓的碎片MP4文件.碎片化的MP4文件包含多个独立的小视频片段 - 每个片段都有自己的目录.它可以让您在完成录制之前播放文件.

如果您不需要坚持使用MP4,则可以选择将原始h264流写入服务器.那你没有那种内容表.VLC可以播放原始的h264流.


d33*_*ika 5

运行 qt_faststart 将 moov atom 移动到流的开头。

qt-faststart in.mp4 out.mp4
Run Code Online (Sandbox Code Playgroud)

  • 你好,d33pika..thnx,对于你的 rply,我想在录制时在服务器上发送视频数据,但是录制完成后会生成一个 moov 原子,所以这就是为什么我认为 qt-faststart 在这里没有帮助。 (3认同)
  • 我尝试了这个,但它说“文件中的最后一个原子不是 moov 原子” (3认同)