【问题标题】:Android encode video with ffmpeg while it is still recordingAndroid 在录制时使用 ffmpeg 对视频进行编码
【发布时间】:2013-07-18 19:57:54
【问题描述】:

我想开发一个 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 退出并显示错误消息“不允许操作”

目标:

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

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

非常感谢。

【问题讨论】:

  • 这个问题你解决了吗?

标签: android ffmpeg video-encoding


【解决方案1】:

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

一些资源;

http://dev.w3.org/2011/webrtc/editor/getusermedia.html(第 5 节)

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

ondello .. 他们有 api

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

【讨论】:

  • 感谢您的回答,我查看了您的资源。不知何故,它们似乎不适合我的应用程序。
猜你喜欢
  • 2017-01-10
  • 2015-08-18
  • 2020-09-24
  • 2014-05-02
  • 2011-12-23
  • 1970-01-01
  • 1970-01-01
  • 2016-09-01
  • 2012-09-14
相关资源
最近更新 更多