我有一个应用程序,生成一些> 500MB的大型日志文件.
我在Python中编写了一些实用程序,允许我快速浏览日志文件并查找感兴趣的数据.但我现在得到一些数据集,其中文件太大,无法将其全部加载到内存中.
因此,我希望扫描文档一次,构建索引,然后只将文档的一部分加载到我想要一次查看的内存中.
当我打开一个'文件'一次读取一行并使用file.tell()存储偏移时,这对我有用.然后,我可以使用file.seek(offset,0)返回到该文件的该部分.
我的问题是,我可能在日志文件中有UTF-8,所以我需要用编解码器模块(codecs.open(<filename>, 'r', 'utf-8'))打开它们.使用生成的对象,我可以调用搜索并告诉它但它们不匹配.
我假设编解码器需要做一些缓冲,或者它可能返回字符计数而不是来自tell的字节?
有没有解决的办法?
是否可以使用.NET提供的图像文件编解码器编码的图像大小有限制?
我正在尝试编码大小为4GB的图像,但它根本无法正常工作(或无法正常工作,即写出不可读的文件).bmp,.jpg,.png或.tif编码器.
当我将图像大小降低到<2GB时,它确实适用于.jpg而不是.bmp,.tif或.png.
我的下一次尝试是尝试libtiff,因为我知道tiff文件适用于大图像.
什么是大图像的良好文件格式?或者我只是达到文件格式限制?
(所有这些都是在具有8 GB RAM的64位操作系统(WinXP 64)上完成的,并使用x64架构进行编译.)
Random r = new Random((int)DateTime.Now.Ticks);
int width = 64000;
int height = 64000;
int stride = (width % 4) > 0 ? width + (width % 4) : width;
UIntPtr dataSize = new UIntPtr((ulong)stride * (ulong)height);
IntPtr p = Program.VirtualAlloc(IntPtr.Zero, dataSize, Program.AllocationType.COMMIT | Program.AllocationType.RESERVE, Program.MemoryProtection.READWRITE);
Bitmap bmp = new Bitmap(width, height, stride, PixelFormat.Format8bppIndexed, p);
BitmapData bd = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadWrite, bmp.PixelFormat);
ColorPalette cp = bmp.Palette;
for (int i …Run Code Online (Sandbox Code Playgroud) 我需要找到音频文件的编解码器.我怎样才能做到这一点?
我是否需要编写代码来执行此操作,还是有更简单的方法?
请帮我.尽可能分享有用的链接.
我正在尝试从IP摄像头实时捕捉图像.该流在VLC中运行得非常好,但OpenCV cvQueryFrame()似乎混杂并破坏了传入的图像,使其无法识别.
同样,从文件捕获工作正常,但不是实时流.如果它有所作为,我正在使用rtsp连接URL; 我也尝试过两种不同的相机型号(不同的品牌),问题仍然存在.
此外,(我假设)编解码器输出以下几种错误:
Error at MB: 1746和concealing 6000 DC, 6000 AC, 6000 MV errors.
我能做什么?
更新:序列中的第一个错误始终是cannot parallelize deblocking type 1, decoding such frames in sequential order
更新2:好吧,似乎OpenCV/FFMPEG与rtsp/h264流有问题.我已经尝试过Qt Phonon库,它也不起作用,我已经给Live555库快速概述了.这个最后似乎工作,在每个人都说它的意义上,应用程序示例(OpenRTSP)实际上很好地播放我的流.但是,说实话,掌握Live555代码似乎是一件很长的事情,我现在几乎买不起.除非有其他选择,我想我必须走那条路.
是否还有其他解决方案?
更新3:我从Live555代码中获得了测试RTSP客户端,所以我知道如何从流中提取h264帧信息,但现在我需要将帧信息重新组合成实际的可显示帧,这似乎不是什么东西直截了当!熟悉Live555的人都知道如何做到这一点?谢谢.
我一直在使用C语言编写VoIP应用程序.该项目的目的是VoIP呼叫记录.它使用g729编解码器.我可以从RTP有效载荷中提取语音部分.如何将此Byte数组转换为.wav格式?请帮我.
我创建了一个h264原始视频文件,我能够在Android 4.3及更高版本上与Android MediaMuxer进行复用.现在我需要支持Android版本4.1和4.2.我找到了Jcodec.这样做有一个例子:
https://github.com/jcodec/jcodec/blob/master/samples/main/java/org/jcodec/samples/mux/AVCMP4Mux.java
但是我在第70行得到了java.nio.ReadOnlyBufferException异常:
H264Utils.encodeMOVPacket(数据);
我想这段代码不适用于Android?我该如何解决.熟悉Jcodec的人可以帮忙解决这个问题吗?
MP3 文件头仅包含采样率和比特率,因此解码器无法从头中计算出位深度。也许它只能从比特率中猜测?但是比特率因帧而异。
这是问这个问题的另一种方式:如果我将 24 位 WAV 编码为 mp3,那么 24 位信息如何存储在这个 mp3 中?
我已经尝试了大约一个小时来注册我在我正在开发的游戏中为我的一个课程制作的编解码器。该类称为Item. 我尝试了这 3 个地方的代码和建议:
这是我想出的代码:
CodecRegistry defaultCodecRegistry = MongoClient.getDefaultCodecRegistry();
MyCodecProvider myCodecProvider = new MyCodecProvider();
ItemCodec itemCodec = new ItemCodec(defaultCodecRegistry);
CodecRegistry codecRegistry = CodecRegistries.fromRegistries(CodecRegistries.fromCodecs(itemCodec), CodecRegistries.fromProviders(myCodecProvider), defaultCodecRegistry);;
MongoClientOptions options = MongoClientOptions.builder().codecRegistry(codecRegistry).build();
client = new MongoClient("localhost:27017", options);
Run Code Online (Sandbox Code Playgroud)
所以我构建了一个名为的编解码器和编解码器提供程序 MyCodecProvider,所以我做错了什么,这怎么会这么复杂?我错过了什么吗?这似乎比它需要的更复杂。如果您需要更多代码,请询问。谢谢。
编辑:我得到的确切错误是org.bson.codecs.configuration.CodecConfigurationException: Can't find a codec for class [Lnet.hollowbit.archipeloserver.items.Item;.另外,我正在尝试解析一个 Item 数组,我是否也需要专门为该数组制作编解码器?
我正在对 45 分钟 1.2GB 视频 80,0000 帧大小为 1344x756 的视频进行一些渲染,并且视频采用 mp4 格式,我正在尝试使用 x265 压缩输出视频问题是当我使用时cv2.VideoWriter 10 分钟的视频输出大小超过 2GB,这不是我想要的结果,所以我在 mac osx 和 ubuntu 18 上尝试了以下操作:
codec = cv2.VideoWriter_fourcc(*'HEVC')
out = cv2.VideoWriter('output.mp4', 'HEVC', fps, (width, height))
Run Code Online (Sandbox Code Playgroud)
我得到的只是运行时警告:
OpenCV: FFMPEG: tag 0x43564548/'HEVC' is not found (format 'mp4 / MP4 (MPEG-4 Part 14)')'
Run Code Online (Sandbox Code Playgroud)
我想要实现的不一定是最高质量的输出,而应该是高质量和尽可能小的尺寸。
我正在尝试将 mov 视频转换为 mp4,但我不希望发生任何压缩。我在 Mac 上用 Quicktime 录制了它,并以最高的未压缩质量录制。当我跑步时ffmpeg -i。我得到:
Stream #0:0(und): Video: prores (apcn / 0x6E637061), yuv422p10le(bt709), 1280x720, 72073 kb/s, 30.09 fps, 30 tbr, 30k tbn, 30k tbc (default)
Run Code Online (Sandbox Code Playgroud)
请注意,kb/s 为 72,073。我想保留这个比特率。
我尝试了一些不同的转换命令,包括:
ffmpeg -i input.mov output.mp4
Run Code Online (Sandbox Code Playgroud)
和:
ffmpeg -i input.mov -qscale 0 output.mp4
Run Code Online (Sandbox Code Playgroud)
两者都有效,但都会导致比特率损失。查看有关两者结果的信息
Stream #0:0(und): Video: h264 (High 4:2:2) (avc1 / 0x31637661), yuv422p, 1280x720, 4569 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)
Run Code Online (Sandbox Code Playgroud)
如何转换为 mp4 并且仍然具有 ~72,000 kb/s?这可能吗?