最近很多小伙伴都在问如何在不必重新分配数据的情况下将数据添加到sourceBuffer中?这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展java–如何在不编辑源文件的情况下将方法
最近很多小伙伴都在问如何在不必重新分配数据的情况下将数据添加到 sourceBuffer 中?这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展java – 如何在不编辑源文件的情况下将方法添加到源文件?、javascript – MediaSource附加到SourceBuffer在第一次不工作、linux – Postfix – 如何在不交付的情况下将电子邮件添加到队列中?、linux – 在不丢失数据的情况下重新分区两个磁盘等相关知识,下面开始了哦!
本文目录一览:- 如何在不必重新分配数据的情况下将数据添加到 sourceBuffer 中?
- java – 如何在不编辑源文件的情况下将方法添加到源文件?
- javascript – MediaSource附加到SourceBuffer在第一次不工作
- linux – Postfix – 如何在不交付的情况下将电子邮件添加到队列中?
- linux – 在不丢失数据的情况下重新分区两个磁盘
如何在不必重新分配数据的情况下将数据添加到 sourceBuffer 中?
如何解决如何在不必重新分配数据的情况下将数据添加到 sourceBuffer 中??
我正在使用带有媒体源扩展的视频播放器。我正在将 MP4 片段流式传输到我的客户端并显示生成的视频。我可以轻松地将数据附加到我的 SourceBuffer
,但似乎没有任何方法可以将数据附加到它。这很重要,因为我可能有可用的以前的 MP4 文件,并且我希望将它们提供给用户。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
java – 如何在不编辑源文件的情况下将方法添加到源文件?
解决方法
这是通过利用Object Web发布的ASM Bytecode操作框架来实现的.此框架允许您编写可在加载时读取和操作类的字节码的Java代码.
我不可能解释你必须采取的每一步来完成这一壮举,所以我会发布链接到我自己的coremod注入类,并试图解释每一个.
Here is the CorePlugin
class.
CorePlugin类告诉Forge ModLoader在哪里找到执行代码注入的转换器类.
FML根据您的.jar文件清单找到此类:
Manifest-Version: 1.0 FMLCorePlugin: bspkrs.treecapitator.fml.asm.TreeCapitatorCorePlugin FMLCorePluginContainsFMLMod: bspkrs.treecapitator.fml.TreeCapitatorMod Created-By: 1.7.0 (Oracle Corporation)
FMLCorePlugin指定CorePlugin类的完全限定路径.如果你的.jar文件要包含一个常规的@Mod样式Forge ModLoader mod类,你还需要指定FMLCorePluginContainsFMLMod(尽管期望的值是未知的;我认为它实际上并不重要你为那里的值,但关键必须在那里).
现在为有趣的部分……实际的字节码转换器. Here is a link to the transformer for Treecapitator
在没有详细介绍的情况下,我编写了这个类,以便能够在Eclipse和“生产”中处理执行.这就是为什么有两个HashMaps;一个用于MCP执行,另一个用于混淆执行.每个加载的类首先传递给transform()方法.代码检查它是否是我们想要转换的类,如果是,则转换它.
实现所有这一切的最终结果是,无论何时创建ItemInWorldManager的实例,变换器都会运行,并将一行添加到removeBlock()方法中的特定位置.这一行作为一个廉价的块中断钩子,允许代码在玩家打破一个块时执行.
提示:
>获取Eclipse的ByteCode Outline插件.您可以在Object Web网站上找到它.
>有时,Eclipse / MCP中的类结构与混淆环境中的类结构不同
>这些都不是简单易懂的概念.使用Bytecode Outline插件查看要转换的类,无论是否包含要包含的代码.这应该可以帮助您找出要查找的“标记”以及您需要插入的ASM节点.
我希望有所帮助!
编辑:修复损坏的链接以引用仍包含类的旧分支.
javascript – MediaSource附加到SourceBuffer在第一次不工作
将第一个Uint8Array附加到SourceBuffer可以正常工作,但追加更多的它不起作用并引发以下错误:
未捕获DOMException:无法在“SourceBuffer”上执行“appendBuffer”:HTMLMediaElement.error属性不为空.
我当前的代码:
'use strict'; let socket = io.connect('http://localhost:1337'); let mediaSource = new MediaSource(); let video = document.getElementById("player"); let queue = []; let sourceBuffer; video.src = window.URL.createObjectURL(mediaSource); mediaSource.addEventListener('sourceopen',function() { sourceBuffer = mediaSource.addSourceBuffer('video/webm; codecs="vorbis,vp8"'); socket.on("video",function(data) { let uIntArray = new Uint8Array(data); if (!sourceBuffer.updating) { sourceBuffer.appendBuffer(uIntArray); } else { queue.push(data); } }); });
服务器端代码(代码段)
io.on('connection',function(socket) { console.log("Client connected"); let readStream = fs.createReadStream("bunny.webm"); readStream.addListener('data',function(data) { socket.emit('video',data); }); });
我也删除了webkit检查,因为这只能在Chromium浏览器上运行.
解决方法
http://w3c.github.io/media-source/#widl-SourceBuffer-remove-void-double-start-unrestricted-double-end
让我知道是否有帮助.
linux – Postfix – 如何在不交付的情况下将电子邮件添加到队列中?
总结
以上是小编为你收集整理的linux – Postfix – 如何在不交付的情况下将电子邮件添加到队列中?全部内容。
如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。
linux – 在不丢失数据的情况下重新分区两个磁盘
问题:我们这里有一些盒子被错误地分区为2 x 500 GB驱动器.实际的驱动器是2 x 1 TB驱动器.这些本质上是机器,只使用了一半的可用磁盘空间.我的任务是编写一个脚本来重新分区这些驱动器.
解决方案迄今为止:我有一个禁用所有进程和重新启动的脚本,然后是另一个修复分区的脚本.问题是数据丢失.
我在寻找:我需要一个能够解决所有数据的解决方案.我的第一个就是将分区增加到合适的大小,但我不确定这是否可行.另一种解决方案是将所有数据复制到disk2,分区disk1,将数据移回disk1,最后分区disk2.问题是我对Linux很新,我真的不知道怎么做.我可以访问fdisk实用程序和parted实用程序.
它们都是ext3类型.
编辑:11/3/11
好的.所以我在两个磁盘上都有大约1GB未使用的未分配空间.我想做如下:
>在SDB上创建一个大小为1GB的新扩展分区,称为sdb99,以供参考
>将sda5 sda6 sda7复制到新的SDB分区sdb99
>我可以将这些中的每个“/”复制到这个新分区中的某个文件夹吗?
>我是否需要在这个新分区上放置一个文件系统来复制那里的所有文件?
>如果我只是复制“/”,那会保留整个目录结构吗?
>像这样在磁盘之间移动文件是一项简单的任务吗?
>删除sda5 sda6 sda7,然后以两倍大小重新创建它们
>我真的需要删除这些吗?我不认为我可以增长3个连续的分区,即使我可以,文件系统也不会增长……对吗?
>将数据从sdb99复制回新的sda5 sda6 sda7分区
>这应该像移动包含所有“/”的目录的内容一样简单,对吧?
>将sdb5 sdb6 sdb7复制到新的sda5 sda6 sda7到单独的文件夹中.
>应该有足够的空间,因为现在可用的空间增加了……我希望如此
>删除并重新分区SDB
>将文件从sdb5 sdb6 sdb7移回SDB
有没有人看到任何明显的问题,有任何指针,警告,建议等?
感谢大家.同样,这需要编写脚本.谢谢.
编辑2
这是实际的脚本……
#!/bin/bash LOG=./repartition.log date > $LOG 2>&1 echo "Ok,let's get started." >> $LOG 2>&1 # Resize logical partitons parted -s /dev/sda resize 4 45GB 2000GB >> $LOG 2>&1 parted -s /dev/sdb resize 4 90GB 2000GB >> $LOG 2>&1 # Create the temporary file systems on disk 2 mke2fs -j /dev/sdb8 >> $LOG 2>&1 # copy sda6 sda7 sda8 to sdb8 cp -r -L -p /dev/sda6 /dev/sdb8/home/sda6 >> $LOG 2>&1 cp -r -L -p /dev/sda7 /dev/sdb8/home/sda7 >> $LOG 2>&1 cp -r -L -p /dev/sda8 /dev/sdb8/home/sda8 >> $LOG 2>&1 # Remove NBD partitions on disk 1 parted -s /dev/sda rm 8 >> $LOG 2>&1 parted -s /dev/sda rm 7 >> $LOG 2>&1 parted -s /dev/sda rm 6 >> $LOG 2>&1 # Create NBD partitons on disk 1 parted -s /dev/sda mkpart logical 70GB 713GB >> $LOG 2>&1 parted -s /dev/sda mkpart logical 713GB 1356GB >> $LOG 2>&1 parted -s /dev/sda mkpart logical 1356GB 2000GB >> $LOG 2>&1 # Create the file systems on disk 1 mke2fs -j /dev/sda6 >> $LOG 2>&1 mke2fs -j /dev/sda7 >> $LOG 2>&1 mke2fs -j /dev/sda8 >> $LOG 2>&1 # copy sda6 sda7 sda8 back to sda cp -r -L -p /dev/sdb8/home/sda6 /dev/sda6 >> $LOG 2>&1 cp -r -L -p /dev/sdb8/home/sda7 /dev/sda7 >> $LOG 2>&1 cp -r -L -p /dev/sdb8/home/sda8 /dev/sda8 >> $LOG 2>&1 # copy sdb5 sdb6 sdb7 to sda6 sda7 sda8 cp -r -L -p /dev/sdb5 /dev/sda6/home/sdb5 >> $LOG 2>&1 cp -r -L -p /dev/sdb6 /dev/sda7/home/sdb6 >> $LOG 2>&1 cp -r -L -p /dev/sdb7 /dev/sda8/home/sdb7 >> $LOG 2>&1 # Remove NBD partitions on disk 2 parted -s /dev/sdb rm 8 >> $LOG 2>&1 parted -s /dev/sdb rm 7 >> $LOG 2>&1 parted -s /dev/sdb rm 6 >> $LOG 2>&1 parted -s /dev/sdb rm 5 >> $LOG 2>&1 # Create NBD partitons on disk 2 parted -s /dev/sdb mkpart logical 90GB 726GB >> $LOG 2>&1 parted -s /dev/sdb mkpart logical 726GB 1362GB >> $LOG 2>&1 parted -s /dev/sdb mkpart logical 1362GB 2000GB >> $LOG 2>&1 # Create the file systems on disk 2 mke2fs -j /dev/sdb5 >> $LOG 2>&1 mke2fs -j /dev/sdb6 >> $LOG 2>&1 mke2fs -j /dev/sdb7 >> $LOG 2>&1 # copy sdb5 sdb6 sdb7 back to sdb cp -r -L -p /dev/sda8/home/sdb7 /dev/sdb7 >> $LOG 2>&1 cp -r -L -p /dev/sda7/home/sdb6 /dev/sdb6 >> $LOG 2>&1 cp -r -L -p /dev/sda6/home/sdb5 /dev/sdb5 >> $LOG 2>&1 rm /etc/init.d/fix_partitions >> $LOG 2>&1 rm /etc/init.d/local/99fix_partitions >> $LOG 2>&1 mv /etc/init.d/local/gca_init.off /etc/init.d/local/99gca_init >> $LOG 2>&1 echo "All set. Please reboot. Have a nice day." >> $LOG 2>&1 date >> $LOG 2>&1 reboot >> $LOG 2>&1
解决方法
但
你应该有数据的备份
如果这是重要的数据,没有备份和分区播放,那简直太愚蠢了.或者是彻头彻尾的愚蠢,取决于数据的重要性.
我们今天的关于如何在不必重新分配数据的情况下将数据添加到 sourceBuffer 中?的分享已经告一段落,感谢您的关注,如果您想了解更多关于java – 如何在不编辑源文件的情况下将方法添加到源文件?、javascript – MediaSource附加到SourceBuffer在第一次不工作、linux – Postfix – 如何在不交付的情况下将电子邮件添加到队列中?、linux – 在不丢失数据的情况下重新分区两个磁盘的相关信息,请在本站查询。
本文标签: