3

我想开发一个 android 应用程序,它允许我连续录制视频并将部分视频上传到服务器而无需停止录制。我可以在不停止视频的情况下录制长达 60 分钟的应用程序,这一点至关重要。

初步方法

应用程序由两部分组成:

  1. MediaRecorder 从摄像机连续录制视频。
  2. 切割器/复制 - 部分:在录制视频时,我必须取出某些片段并将它们发送到服务器。这部分是使用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):

  1. 用android创建一个rtsp流,稍后访问rtsp流。问题是,据我所知,android SDK 不支持录制到 rtsp 流。
  2. 也许可以直接用ffmpeg访问相机(/dev/video0似乎是一个视频设备?!)
  3. 我读到 webm 作为流媒体的替代品,也许 android 可以记录 webm 流?!

TLDR:太久没有阅读:

我想在录制时使用 ffmpeg (libffmpeg.so) 访问视频文件。Fffmpeg 退出并显示错误消息“不允许操作”

目标:

我的目标是录制视频(和音频)并在视频仍在录制时拍摄部分视频并将其上传到服务器。

也许您可以帮助我解决问题,或者您对如何解决我的问题有其他想法。

提前非常感谢。

4

1 回答 1

0

您的实时需求可能会导致您从 ffmpeg 转向 webrtc 或 html5。

一些资源;

http://dev.w3.org/2011/webrtc/editor/getusermedia.html (section5)

https://github.com/lukeweber/webrtc-jingle-client

ondello .. 他们有 api

而不是原生并尝试获取视频流或获取帧缓冲区以获取视频缓冲区中内容的 xcopy,然后复制流并管理连接(套接字或分块 http),您可能想要看看 api 类型的替代品....

于 2013-07-20T10:05:16.833 回答