Tôi đang sử dụng node.js và thông qua thư viện socket.io Tôi nhận được các khối dữ liệu thực sự là hình ảnh jpeg. Những hình ảnh này là khung của video thời gian thực được chụp từ webcam từ xa. Tôi buộc phải phát video dưới dạng khung hình jpeg. Tôi đang tìm kiếm một cách để chuyển đổi trên bay những hình ảnh jpeg trong một tập tin video (mpeg 4 hoặc mjpeg tập tin). Nút có thư viện có thể thực hiện việc này không? Tôi đã xem qua thư viện Node-fluent-FFMPEG nhưng các ví dụ duy nhất được đưa ra là về chuyển đổi tệp jpeg thành video chứ không phải chuyển đổi khi đang phát trực tiếp từ luồng hình ảnh jpeg. Hoặc cách khác, không ffmpeg cho các cửa sổ hỗ trợ một dòng hình ảnh jpeg như đầu vào?Node.js: chuyển đổi thời gian thực từ hình ảnh jpeg sang tệp video
Trả lời
Sử dụng require("child_process")
bạn có thể sử dụng ffmpeg hoặc có thể là các mô-đun npm để trợ giúp việc này. ffmpeg sẽ cho phép bạn đầu tiên lấy danh sách các jpeg và chuyển đổi nó thành video, thứ hai bạn có thể thêm một danh sách (hoặc chỉ một) jpeg vào đầu hoặc cuối video.
Tôi nghĩ rằng bạn nên xem xét videofy
var exec = require("child_process").exec;
var escape = require("shell-escape");
var debug = require("debug")("videofy");
var mkdirp = require("mkdirp");
var uid = require("uid2");
/*
* Expose videofy
*/
module.exports = videofy;
/**
* Convert `input` file to `output` video with the given `opts`:
*
* - `rate` frame rate [10]
* - `encoders` the video codec format, default is libx264
*
* @param {String} input
* @param {String} output
* @return
* @api public
*/
function videofy(input, output, opts, fn) {
if (!input) throw new Error('input filename required');
if (!output) throw new Error('output filename required');
var FORMAT = '-%05d';
// options
if ('function' == typeof opts) {
fn = opts;
opts = {};
} else {
opts = opts || {};
}
opts.rate = opts.rate || 10;
opts.codec = opts.codec || 'libx264';
// tmpfile(s)
var id = uid(10);
var dir = 'tmp/' + id;
var tmp = dir + '/tmp' + FORMAT + '.jpg';
function gc(err) {
debug('remove %s', dir);
exec('rm -fr ' + dir);
fn(err);
}
debug('mkdirp -p %s', dir);
mkdirp(dir, function(error) {
if (error) return fn(error);
// convert gif to tmp jpg
var cmd = ['convert', input, tmp];
cmd = escape(cmd);
debug('exec %s', cmd);
// covert jpg collection to video
exec(cmd, function(err) {
if (err) return gc(err);
var cmd = ['ffmpeg'];
cmd.push('-f', 'image2');
cmd.push('-r', String(opts.rate));
cmd.push('-i', tmp);
cmd.push('-c:v', String(opts.codec));
cmd.push(output);
cmd = escape(cmd);
debug("exec %s", cmd);
exec(cmd, gc);
});
});
}
FFMPEG hỗ trợ suối như đầu vào, như đã nêu trong docs.
Bạn có thể thêm bất kỳ số lượng đầu vào nào vào lệnh Ffmpeg. Một đầu vào có thể được [...] một dòng có thể đọc được
Vì vậy, ví dụ như nó hỗ trợ sử dụng
ffmpeg().input(fs.createReadStream('/path/to/input3.avi'));
mà tạo ra một Readable stream từ tập tin tại '/path/to/input3.avi'
.
Tôi không biết gì về FFMPEG, nhưng bạn có thể kéo tin nhắn của bạn đến từ socket.io (tin nhắn may be a Buffer đã) và gói nó với việc thực hiện của riêng bạn Readable stream.
- 1. Video thời gian thực (hình ảnh) khâu
- 2. Chuyển đổi tệp .html sang hình ảnh
- 3. Chuyển đổi tệp ASCII nguồn sang dạng JPEG
- 4. Chuyển đổi tệp PDF sang hình ảnh
- 5. Chuyển đổi video thành JPEG Sprite
- 6. Chuyển đổi từ HBITMAP sang Jpeg hoặc Png trong C++
- 7. Chuyển đổi chuỗi hình ảnh thành tệp video android java
- 8. Gần Tải lên Video Thời gian Thực từ iPhone
- 9. Làm thế nào để chuyển đổi hình ảnh JPEG sang định dạng SVG bằng ImageMagick?
- 10. Làm thế nào để chuyển đổi ppt slide sang jpeg hình ảnh trong php
- 11. Cách chuyển đổi TIFF sang JPEG/PNG trong java
- 12. Java - Chuyển đổi hình ảnh sang Base64
- 13. ImageMagick không chuyển đổi ảnh JPEG
- 14. Chuyển đổi nhị phân màu xám nguyên sang JPEG
- 15. Chuyển đổi PDF sang hàng loạt hình ảnh bằng Python
- 16. Chuyển đổi hình ảnh JPG/GIF sang PNG bằng PHP?
- 17. Chuyển đổi hình ảnh .jpg sang .png
- 18. Chuyển đổi hình ảnh từ RGB sang không gian màu HSV
- 19. Cách chuyển đổi thời gian epoch sang năm
- 20. Thời gian Joda - Chuyển đổi đối tượng Lịch sang LocalDate
- 21. Chuyển đổi PDF sang hình ảnh tự động
- 22. Cách chuyển đổi tệp SVG sang các định dạng hình ảnh khác
- 23. Chuyển mã/Chuyển đổi video sang Mp4 trên Android
- 24. Tạo video từ hình ảnh
- 25. Chuyển đổi PDF sang hình ảnh tạm thời với mục đích đọc mã QR
- 26. Chuyển đổi định dạng video sang Flash Video tự động
- 27. Chuyển đổi từ Windows-1251 sang UTF-8 trong Node.js
- 28. Hình ảnh JPEG có màu sai
- 29. Filepicker.io - chuyển đổi hình ảnh ngăn video tải lên
- 30. Chuyển đổi từ thời gian dài Postgres
Tôi không thực sự có câu trả lời cho bạn, nhưng tôi nghi ngờ bạn sẽ phải đệm hình ảnh và mã hóa chúng thành nhiều phần - hầu hết các thuật toán mã hóa yêu cầu nhiều khung hình theo thứ tự để có được nén cơ bản. Tôi thực sự không biết trường hợp sử dụng của bạn để có thể nén không quan trọng. Có thể webRTC là một lựa chọn cho bạn? –
Nó có phải là một đoạn video, chẳng hạn bạn có thể vẽ các khung hình jpeg trên canvas không? –