ffmpeg webm 提取_将Webm转换为音频文件(流畅的ffmpeg)

本文介绍了如何使用ffmpeg工具从Webm视频文件中提取音频,并将其转换为单独的音频文件。通过调用ffmpeg的noVideo()方法或使用CLI API的-map选项,可以实现这一目标。为了限制输出音频文件的大小,可以调整比特率,但需要预先计算合适的比特率以确保不超过100MB。
摘要由CSDN通过智能技术生成

I have a video file and its properties are as the following when I check via the ffprobe command;

My purpose is to take the audio file only and its size should not be >100mb.

Is there any proper way of doing it in an NPM project?

ffprobe 2.webm

ffprobe version N-86175-g64ea4d1 Copyright (c) 2007-2017 the FFmpeg

developers built with gcc 6.3.0 (GCC) configuration: --enable-gpl --

nable-version3 --enable-cuda --enable-cuvid --enable-d3d11va --enable-dxva2

--

nable-libmfx --enable-nvenc --enable-avisynth --enable-bzlib --enable-

ontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --

nable-libbluray --enable-libbs2b --enable-libcaca --enable-libfreetype --

nable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-

ibmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-

ibopenh264 --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-

ibsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-

ibtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --

nable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-

ibx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-lzma --

nable-zlib libavutil 55. 63.100 / 55. 63.100 libavcodec 57.

96.101

7. 96.101

libavformat 57. 72.101 / 57. 72.101

libavdevice 57. 7.100 / 57. 7.100

libavfilter 6. 90.100 / 6. 90.100

libswscale 4. 7.101 / 4. 7.101

libswresample 2. 8.100 / 2. 8.100

libpostproc 54. 6.100 / 54. 6.100

Input #0, matroska,webm, from '2.webm':

Metadata:

encoder : libwebm-0.2.1.0

creation_time : 2017-05-04T14:59:01.639000Z

Duration: 00:02:35.16, start: 0.000000, bitrate: 32 kb/s

Stream #0:0(eng): Audio: opus, 48000 Hz, mono, fltp (default)

Stream #0:1(eng): Video: vp8, yuv420p(progressive), 640x480, SAR 1:1 DAR

4:3, 14.99 tbr, 1k tbn, 1k tbc (default)

解决方案

Using fluent-ffmpeg's API

You could use the noVideo() method which tells ffmpeg to produce output with "no video".

ffmpeg('/path/to/file.avi').noVideo();

Using ffmpeg's CLI API

I'm not sure of fluent-ffmpeg, but using ffmpeg, you would use the -map option to dictate what streams you want from you inputs in your output. So for your example, the command to get an MP3 file that contains only the first audio stream from your input would be:

ffmpeg -i 2.webm -map 0:a:0 out.mp3

Alternatively, you could tell ffmpeg to not include video streams using the -vn option; but I like to be explicit. Your command would then be:

ffmpeg -i 2.webm -vn out.mp3

You can also use the -acodec option to dictate what encoder you want to use such as AAC or whatever. ffmpeg will use the best guess by looking at the extension you gave your output if you don't give it enough options.

As to limiting filesize, I'm not sure of a clean way to do that, but this question on the Video Production StackExchange may help: How to limit file size with ffmpeg?. It suggests playing with your bitrate until you get the size you want. I would assume you could calculate correct bitrate ahead of time.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值