gpt4 book ai didi

javascript - Node.js 视频上传获取Codec

转载 作者:行者123 更新时间:2023-11-30 15:29:41 25 4
gpt4 key购买 nike

我的用户可以上传视频到我的网站。然而,出现了一些视频文件的编解码器不受浏览器 (YUV) 支持的问题。

所以我想研究如何查看编解码器。

目前我正在使用 multer 来处理我的文件:

app.use(multer({
dest: './uploads/',
rename: function (fieldname, filename) {
return filename + Date.now();
},

onFileUploadStart: function (file) {
var i = 0;
},
onFileUploadComplete: function (file) {
//Redirects request to path
var i = 0;
}
}));

设置断点并检查文件我得到的唯一信息:

enter image description here

所以我的问题是:是否可以查看上传文件的编解码器?

最佳答案

首先,值得一提的是,YUV 是一个色彩空间而不是编解码器 - 类似于可能更容易理解的 RGB(红绿蓝)色彩空间。它是表示图像中像素的亮度和颜色的一种方式。许多编解码器使用 YUV 颜色空间,因为它有助于编解码器需要执行的计算类型并减少冗余。

如果您确实想找到特定视频文件正在使用的编解码器,以及相当多的其他信息,那么进行基本分析以查看您上传的视频的类型和格式是相当不错的艰巨的任务,因为格式太多了。

我认为最简单的方法是尽可能利用 ffprobe 功能:

有些模块提供了 ffprobe 的包装器,因此您可以从 Node 使用它 - 例如:

使用这种方法可以让您非常简单地生成视频文件信息,然后您可以为编解码器解析这些信息。上述链接中的用法示例(在撰写本文时正确无误):

var probe = require('node-ffprobe');

var track = '/path/to/media/file.mp3';

probe(track, function(err, probeData) {
console.log(probeData);
});

以及 ffprobe 为无处不在的 BigBuckBunny 视频示例生成的输出类型的示例:

ffprobe version 2.6.1 Copyright (c) 2007-2015 the FFmpeg developers
built with llvm-gcc 4.2.1 (LLVM build 2336.11.00)
configuration: --prefix=/Volumes/Ramdisk/sw --enable-gpl --enable-pthreads --enable-version3 --enable-libspeex --enable-libvpx --disable-decoder=libvpx --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libx264 --enable-avfilter --enable-libopencore_amrwb --enable-libopencore_amrnb --enable-filters --enable-libgsm --enable-libvidstab --enable-libx265 --disable-doc --arch=x86_64 --enable-runtime-cpudetect
libavutil 54. 20.100 / 54. 20.100
libavcodec 56. 26.100 / 56. 26.100
libavformat 56. 25.101 / 56. 25.101
libavdevice 56. 4.100 / 56. 4.100
libavfilter 5. 11.102 / 5. 11.102
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 1.100 / 1. 1.100
libpostproc 53. 3.100 / 53. 3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '.../vid_bigbuckbunny.mp4':
Metadata:
major_brand : mp42
minor_version : 1
compatible_brands: mp42avc1
creation_time : 2010-02-09 01:55:39
Duration: 00:01:00.10, start: 0.000000, bitrate: 733 kb/s
Stream #0:0(eng): Audio: aac (LC) (mp4a / 0x6134706D), 22050 Hz, stereo, fltp, 65 kb/s (default)
Metadata:
creation_time : 2010-02-09 01:55:39
handler_name : Apple Sound Media Handler
Stream #0:1(eng): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p(tv, smpte170m/smpte170m/bt709), 640x360, 612 kb/s, 23.96 fps, 24 tbr, 600 tbn, 1200 tbc (default)
Metadata:
creation_time : 2010-02-09 01:55:39
handler_name : Apple Video Media Handler
Stream #0:2(eng): Data: none (rtp / 0x20707472), 45 kb/s
Metadata:
creation_time : 2010-02-09 01:55:39
handler_name : hint media handler
Stream #0:3(eng): Data: none (rtp / 0x20707472), 5 kb/s
Metadata:
creation_time : 2010-02-09 01:55:39
handler_name : hint media handler

ffprobe 无法识别的任何内容大多不是视频,或者即使是视频也不会在常规浏览器中播放。

值得检查 ffmpeg/ffprobe 许可以确保它也满足您的需求。

关于javascript - Node.js 视频上传获取Codec,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42420310/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com