有没有办法从Android上的一系列图像创建视频?也许是一种扩展MediaRecorder并能够将图像作为输入的方法.
我尝试真正创建视频并存储它(例如,作为mpeg4文件).
谢谢你的任何建议.
堆栈溢出有几个类似的问题,但我无法解决这个问题.
我想获得fourccFFMpeg可以解码的avi编解码器的列表.
我知道如何获取所有格式ffmpeg -formats和编解码器,ffmpeg -codecs但两个列表都没有给我一个可访问的列表fourccs.我也找不到文件.
我需要这个名单,让我的应用程序可以访问fourcc一个的avi文件,并确定是否使用ffmpeg或VfW(或DirectX)尝试解码的文件.
有一些ffmpeg命令能给我这个清单吗?
这是我的第一个问题,如果我错过了什么,请告诉我!
使用Android API 16的新Media Codec实现来尝试解码视频,以便我可以发送要作为纹理应用的帧(纹理部分已经完成).所以我已经提出了以下代码,并在堆栈中提供了一些帮助,但在runOutputBuffer()我outputBufIndex回来的时候-1(或者我-1在超时时提供的无限循环中)任何人都可以帮助解决这个问题,并且/或者提供任何关于去哪里的建议从那里?
感谢您的帮助,这是我的代码:
public MediaDecoder( BPRenderView bpview )
{
surface = bpview;
extractor = new MediaExtractor( );
extractor.setDataSource( filePath );
format = extractor.getTrackFormat( 0 );
mime = format.getString( MediaFormat.KEY_MIME );
createDecoder( );
runInputBuffer( );
}
public void createDecoder( )
{
codec = MediaCodec.createDecoderByType( "video/avc" );
// format =extractor.getTrackFormat( 0 );
Log.d( LOG_TAG, "Track Format: " + mime );
// format.setInteger( MediaFormat.KEY_BIT_RATE, 125000 );
// format.setInteger( MediaFormat.KEY_FRAME_RATE, 15 );
// …Run Code Online (Sandbox Code Playgroud) >>> a = "?" # chinese
>>> b = unicode(a,"gb2312")
>>> a.__class__
<type 'str'>
>>> b.__class__
<type 'unicode'> # b is unicode
>>> a
'\xce\xd2'
>>> b
u'\u6211'
>>> c = u"?"
>>> c.__class__
<type 'unicode'> # c is unicode
>>> c
u'\xce\xd2'
Run Code Online (Sandbox Code Playgroud)
b并且c都是unicode,但>>> b输出u'\u6211'和>>> c输出u'\xce\xd2',为什么?
我正在H.264 stream使用其SDK从DVR 接收.有内存泄漏,我认为这是导致所有泄漏的SDK.但是当我录制流并从磁盘上逐个读取帧时(没有涉及任何第三方dll),我注意到问题不是dll而是流本身.
奇怪的是,DivX H264 Decoder它是唯一不会导致内存泄漏的编解码器,但是当流运行很长时间时,有时DivX解码器也会崩溃.我更喜欢使用,Microsoft DTV-DVD Video Decoder但它会导致巨大的内存泄漏并丢失大量帧.我尝试过的许多其他H.264解码器的行为方式相同.
我检查了h.264 frames使用一些h.264 parsers与其他一些无问题的流比较,但我没有注意到日志中的任何明显的东西.
由于我的问题是关于h.264帧结构,我已经准备了一个名为的源过滤器FramesFromFileSourceFilter,你可以在下面下载.
http://www.akaydin.com/directshow/FramesFromFileSourceFilter.zip
这是一个Visual Studio 2008项目,所有依赖项都包含在相对位置的文件夹(包括h.264帧)中的zip文件中.因此,您需要做的就是编译项目,注册输出regsvr32.exe并使用GraphEdit或GraphStudio中的任何h.264解码器运行过滤器.示例图如下.


此外,h264帧可作为单个原始h264文件在下面的链接中使用,该链接可由VLC播放(错误的FPS,因为原始版本为12 FPS).
http://www.akaydin.com/directshow/stream.zip
题:
除DivX解码器外,许多着名的H264解码器可能导致内存泄漏问题.这个流有什么问题?
更新1
读取数据线程被删除,功能移入FillBuffer而不使用任何缓冲区和标志.问题依然存在.
http://www.akaydin.com/directshow/FramesFromFileSourceFilterUpdate1.zip
更新2
UPDATE1使用Sleep()中FillBuffer()这是导致一些问题的功能.现在我删除了Sleep()并且曾经SetTime()拥有~12 FPS.这也解决了Microsoft DTV-DVD Video Decoder丢帧问题,但没有解决内存问题.
http://www.akaydin.com/directshow/FramesFromFileSourceFilterUpdate2.zip
内存增加Working Set仅发生.Virtual Bytes而且Private Bytes似乎很稳定.什么可能导致连续的Working Set内存增量只发生Microsoft DTV-DVD Video Decoder?
一些历史背景:我目前正与Wowza工作,并试图解码AMFPackets是来自IMediaStream.视频数据包将具有5字节标头,第一个数据包是编解码器配置.
到目前为止,在我的检查中,编解码器配置与ISO/IEC 14496-15 AVCDecoderConfigurationRecord布局相匹配.但是,我在解码SPS和PPS单元时遇到问题.
17 00 00 00 00 01 4D 00 15 03 01 00 2F 67 4D 40 15 96 52 02 83 F6 02 A1 00 00 03 00 01 00 00 03 00 28 E0 60 03 0D 40 00 49 3E 7F 18 E3 03 00 18 6A 00 02 49 F3 F8 C7 0E D0 B1 68 90 01 00 04 68 EB …
在我的项目中,我使用OpenH264编解码器,据说以YUV 4:2:0 planar格式输出数据.解码后,我得到一个带有width * height * 1.5元素的数组,在显示时,看起来像这个图像:
http://o3d.googlecode.com/svn/trunk/samples_webgl/assets/shaving_cream.png
为什么主要的一个下面有四个区域(包含Y-负责灰度 - 元素),而不是两个,就像我的第二张图片一样?这是否意味着格式不同或我错了,我的世界崩溃了?
我认为resoult应该是这样的:

对于 C++ 项目,我需要打开并显示 HEIF (.heic) 图像。我所知道的(如果我是对的)是 HEIF 图像基于 ffmpeg 标准,并且需要读取 H265 编解码器。
我找到了几个开源的 H265 编解码器:
我可以打开和显示 H265 编码的视频文件,但我无法简单地打开、显示或转换 .heic 图像。他们都返回一个错误,或者什么都不做。
老实说,我有点困惑,因为 HEIF 标准似乎是一个保守的秘密。我找不到可以让我找到解决方案的相关信息。我发现的那些只是技巧和变通方法,例如强制设备(我在这里谈论的是使用新 iOS11 的 Apple iPhone)生成 jpg 图像而不是 heic,或者使用像 dr.fone 这样的第三方应用程序。当然,这些解决方案与我无关。
所以,有人可以告诉我应该对 .heif 图像使用哪种编解码器,以及如何使用它来打开它?或者是否有允许操作此类图像文件的开源库或示例?有人可以为我指出好的方向吗?
AVCaptureVideoDataOutput有一个字段availableVideoCodecTypes,它应该告诉你可以用来录制视频的编解码器,但它总是空的.为什么是这样?
我在创建VideoDataOutput后立即检查了它的值,并在将其添加到会话后,但它是空的.我尝试使用运行iOS 10的iPhone 5s和运行iOS 11的iPhone 7 Plus,两者都是空的.
这个问题是关于AVCaptureVideoDataOutput.AVCaptureMovieFileOutput有另一个具有相同名称的字段,但是问题与此无关.
可以说VideoDataOutput为您提供帧而不是记录到文件,因此不涉及编解码器,这就是属性为零的原因,但在这种情况下,为什么要拥有该属性?
在macO上,我总是习惯通过Homebrew安装或更新ffmpeg。我经常使用libfdk_aac音频编解码器,所以我总是这样做:
brew reinstall ffmpeg --with-fdk-aac
出于某种原因,由于一两次更新brew,ffmpeg不能再与libfdk_aac一起安装。
现在,在转换视频并使用-acodec libfdk_aac可以正常工作的视频时,我得到了:
未知的编码器'libfdk_aac'
有没有办法解决这个问题?