ffmpeg 改变帧率,分辨率,时长等命令

ffmpeg -i elva.mp4 -ss 00:00:20 -t 00:00:30 -c:v copy -c:a copy output1.mp4 视频截取,开始时间和时长,-ss 00:00:20 -t 00:00:30
ffmpeg -i output1.mp4 -c:v libx265 output265.mp4 -c:v libx265,264转265
ffmpeg -i output1.mp4 -c:v libx264 output264.mp4 -c:v libx264,265转264
ffmpeg -i output1.mp4 -r 30 output_264_30.mp4 -r 改变帧率
ffmpeg -i output1.mp4 -s 8192x8192 output_8192_8192.mp4 -s改变分辨率
ffmpeg -i output1.mp4 -vf scale=4096:2160 -y output4096.mp4 改变分辨率

ffmpeg -i input -c:v copy -f null - 查看input的fps,可以是文件,也可以是串流

ffprobe -select_streams v:0 -show_entries frame=pict_type -of csv -i output1.mp4 查看每帧帧类型

在加载数据之前获取视频的信息是比较困难的,因为在视频数据加载完成之前,无法获取到视频的元数据。不过,你可以通过一些第三方库来获取视频的信息,比如FFmpeg.js。FFmpeg.js是一个基于FFmpeg的JavaScript库,可以在浏览器中解码和转码各种视频格式。 以下是一个使用FFmpeg.js获取视频信息的示例代码: ```javascript // 加载FFmpeg.js ffmpeg = createFFmpeg({ log: true, }); // 加载视频文件 const fileInput = document.querySelector('input[type="file"]'); fileInput.addEventListener('change', async (e) => { const file = e.target.files[0]; await ffmpeg.load(); await ffmpeg.FS('writeFile', 'input.mp4', await fetchFile(file)); // 获取视频信息 await ffmpeg.run('-i', 'input.mp4', '-f', 'null', '-'); const output = ffmpeg.lastConsoleMessage; const info = parseOutput(output); // 输出结果 console.log('分辨率:' + info.resolution); console.log('帧率:' + info.fps + 'fps'); console.log('码率:' + info.bitrate + 'Mbps'); console.log('时长:' + info.duration + '秒'); }); // 解析FFmpeg输出的信息 function parseOutput(output) { const regex = /Stream.*Video:.* (\d+)x(\d+).* (\d+) fps.* (\d+) kb\/s.*Duration: (\d+:\d+:\d+\.\d+)/; const match = regex.exec(output); const resolution = match[1] + 'x' + match[2]; const fps = match[3]; const bitrate = Math.round(match[4] / 1000); const duration = parseDuration(match[5]); return { resolution, fps, bitrate, duration }; } // 解析视频时长 function parseDuration(durationStr) { const regex = /(\d+):(\d+):(\d+\.\d+)/; const match = regex.exec(durationStr); const hours = parseInt(match[1]); const minutes = parseInt(match[2]); const seconds = parseFloat(match[3]); return hours * 3600 + minutes * 60 + seconds; } // 将文件转换成Uint8Array async function fetchFile(file) { const reader = new FileReader(); reader.readAsArrayBuffer(file); await new Promise(resolve => reader.onload = resolve); return new Uint8Array(reader.result); } ``` 这个例子中,我们使用FFmpeg.js加载视频文件,并使用FFmpeg命令行工具获取视频信息。解析视频信息的正则表达式可能需要根据不同的视频格式进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值