【问题标题】:How to convert video file to string using javascript?如何使用javascript将视频文件转换为字符串?
【发布时间】:2016-02-29 17:27:31
【问题描述】:

我在 signalR 工作,我想通过将视频文件拆分为不同部分来将视频文件从一个客户端发送到另一个客户端。 我已经通过拆分图像 src 数据发送了图像,并在另一个客户端上接收到了。

    document.getElementById("fileUpload").addEventListener("change", readImage, false);
        function readImage() {
            if (this.files && this.files[0]) {
                var FR = new FileReader();
                FR.onload = function (e) {
                    var img = new Image();
                    img.onload = function () {
                        var imageString = img.src.toString()
                        var spliceStr = "";
                        var i = 0;
                        while (i < imageString.length)
                        {
                            spliceStr = imageString.substring(i, (i+50000));
                            ImageSpliceArray.push(spliceStr);
                            i = i + 50000;
                        }
                        $("#imageId").html('<img src="' + img.src + '"/>');
                        testR.server.hello("Start", imageString.length,"");
                        testR.server.hello("FragmentCount", ImageSpliceArray.length,"");
                        for(k=0;k<ImageSpliceArray.length;k++)
                        {
                            testR.server.hello("FragmentData", ImageSpliceArray[k], k);
                        }
                        testR.server.hello("Done", "", "");
                    };
                    img.src = e.target.result;

                };
                FR.readAsDataURL(this.files[0]);
            }
        }

现在我想为视频做同样的事情。我阅读了来自input type ="file" 的视频。然后我知道将该视频放在 html 视频元素中,但我希望视频的所有数据都以字符串格式通过将该字符串拆分为不同部分来将该视频发送到另一个视频。

注意:SignalR 用于将文本从一个客户端发送到另一个客户端。数据大小约为(50kb)。

【问题讨论】:

  • 那么为什么不从源视频文件中读取 50 000 个字节并发送字节值文本(例如:“FF-A0-17-AF-BC”等),读取下一个 50kb 发送。依此类推,直到读取所有字节。接收方可以将这些字节值组合到整个文件中(您编写这样的应用程序,或者将它们粘贴到一些十六进制编辑器中)。

标签: javascript html video signalr video-processing


【解决方案1】:

这是我今天发现的第二件事,我认为这是不可能的。我拍摄了一个小型 MP4 视频文件 (86KB),然后将其编码为基于 site 的数据 URI 基 64。我用它的 src 属性集制作了一个 &lt;video&gt; 元素的简单测试页:

`src="data:video/mp4;base64,AAAAIGZ0eXBpc29tAAACAGlzb21pc28yYXZj....

所以一串文本可以是一个视频,虽然我在我的驱动器上找不到一个 50KB 的视频文件,但我相信 86KB 的文件大小就足够了。你可以在这个Plunker看到它

从这个article找到这个:

function getDataUri(url, callback) {
    var image = new Image();

image.onload = function () {
    var canvas = document.createElement('canvas');
    canvas.width = this.naturalWidth; // or 'width' if you want a special/scaled size
    canvas.height = this.naturalHeight; // or 'height' if you want a special/scaled size

    canvas.getContext('2d').drawImage(this, 0, 0);

    // Get raw image data
                                                       callback(canvas.toDataURL('image/png').replace(/^data:image\/(png|jpg);base64,/, ''));

    // ... or get as Data URI
    callback(canvas.toDataURL('image/png'));
};

image.src = url;

}

// Usage
 getDataUri('/logo.png', function(dataUri) {
// Do whatever you'd like with the Data URI!
 });

You can modify this script to use videos instead of images.

【讨论】:

  • 感谢您的 rply Zer00ne 。但我已经将图像转换为字符串,因为我已经给出了代码。实际上我不知道如何为视频做同样的事情。我想将完整的视频转换为字符串格式(不播放/画布元素)。
  • 嗨@vimalraturi,我将视频转换为字符串,但它是使用在线工具而不是JavaScript。我很确定这可以使用像 Python 这样的服务器端语言来完成。不过用 JS 找到解决方案也就不足为奇了,也许是 Node?​​span>
猜你喜欢
  • 1970-01-01
  • 2017-01-29
  • 1970-01-01
  • 2021-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-11
  • 2020-09-20
相关资源
最近更新 更多