我想开发一个 android 应用程序,它允许我连续录制视频并将部分视频上传到服务器而无需停止录制。我可以在不停止视频的情况下录制长达 60 分钟的应用程序,这一点至关重要。
初步方法
应用程序由两部分组成:
- MediaRecorder 从摄像机连续录制视频。
- 切割器/复制 - 部分:在录制视频时,我必须取出某些片段并将它们发送到服务器。这部分是使用http://ffmpeg4android.netcompss.com/libffmpeg.so
实现的。我使用了他们的 VideoKit Wrapper,它允许我使用我需要的任何参数直接运行 ffmpeg。
我的问题
我用参数尝试了 ffmpeg 命令
ffmpeg -ss 00:00:03 -i <in-file> -t 00:00:05 -vcodec copy -acodec copy <out-file>
只要 Android 的 MediaRecorder 完成录制,这对我很有用。
当我执行相同的命令时,当 MediaRecorder 正在录制文件时,ffmpeg 退出并显示错误消息“不允许操作”。
- 我认为错误消息并不意味着 android 阻止了对文件的访问。我认为 ffmpeg 需要“moov-atoms”才能在视频中找到合适的位置。
出于这个原因,我想到了其他方法(不需要 moov-atom):
- 用android创建一个rtsp流,稍后访问rtsp流。问题是,据我所知,android SDK 不支持录制到 rtsp 流。
- 也许可以直接用ffmpeg访问相机(/dev/video0似乎是一个视频设备?!)
- 我读到 webm 作为流媒体的替代品,也许 android 可以记录 webm 流?!
TLDR:太久没有阅读:
我想在录制时使用 ffmpeg (libffmpeg.so) 访问视频文件。Fffmpeg 退出并显示错误消息“不允许操作”
目标:
我的目标是录制视频(和音频)并在视频仍在录制时拍摄部分视频并将其上传到服务器。
也许您可以帮助我解决问题,或者您对如何解决我的问题有其他想法。
提前非常感谢。