首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对某一范围内某一数字的Grep -检测WAV质量

对某一范围内某一数字的Grep -检测WAV质量
EN

Stack Overflow用户
提问于 2014-08-08 11:56:41
回答 3查看 127关注 0票数 0

我正在尝试编写一个正则表达式(与ffmpeg一起使用),它可以检查WAV文件是否超过了某种质量。

最低限度应是:

音频频道:2(立体声)

音频采样率: 44,100 Hz

音频比特率: 1411 Kbps

音频位深度: 16位

因此,到目前为止,我已经尝试了以下命令:

  • /usr/local/bin/ffmpeg -i "/path/to/file.wav" 2>&1 | egrep 'stereo|2 channels'

这可以很好地得到一个立体(2通道) WAV。我对下一部分有问题,在一系列数字之间搜索。

  • /usr/local/bin/ffmpeg -i "/path/to/file.wav" 2>&1 | egrep 'stereo|2 channels' | egrep '[41000-196000] Hz'

很明显,这只会逐个搜索每个数字,所以如果有4或1或0等,就会找到结果.

比特率和比特深度只需分别超过1411和16。

谢谢

编辑-这里是低质量WAV的ffmpeg输出,应该被拒绝:

ffmpeg version git-2012-05-22-27127eb Copyright (c) 2000-2012 the FFmpeg developers built on May 22 2012 12:27:21 with gcc 4.6.1 configuration: --enable-gpl --enable-libfaac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libx264 --enable-nonfree --enable-postproc --enable-version3 --enable-x11grab libavutil 51. 53.100 / 51. 53.100 libavcodec 54. 21.101 / 54. 21.101 libavformat 54. 6.100 / 54. 6.100 libavdevice 53. 4.100 / 53. 4.100 libavfilter 2. 75.100 / 2. 75.100 libswscale 2. 1.100 / 2. 1.100 libswresample 0. 15.100 / 0. 15.100 libpostproc 52. 0.100 / 52. 0.100 [wav @ 0x355b140] max_analyze_duration 5000000 reached at 5056000 Guessed Channel Layout for Input Stream #0.0 : stereo Input #0, wav, from '/path/to/file.wav': Duration: 00:02:28.47, bitrate: 512 kb/s Stream #0:0: Audio: pcm_u8 ([1][0][0][0] / 0x0001), 32000 Hz, stereo, u8, 512 kb/s

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-08-11 14:09:13

感谢每一个回复的人。

我可能应该在我最初的问题中提到,这最终将在PHP中使用,对不起!之前它正在对命令行进行基本检查,并试图盲目地遵循这条路线,而不考虑其他PHP解决方案。

最后,我使用GetID3获取我们需要的信息,并在PHP中进行检查。它在一个数组中很好地列出了它们。

票数 0
EN

Stack Overflow用户

发布于 2014-08-08 12:13:28

在你的白鹭里试试这个:

代码语言:javascript
复制
egrep '( 4[1-9][0-9][0-9][0-9] Hz| [5-9][0-9][0-9][0-9][0-9] Hz| 19[0-6][0-9][0-9][0-9] Hz| 1[0-8][0-9][0-9][0-9][0-9] Hz)'
票数 0
EN

Stack Overflow用户

发布于 2014-08-08 12:17:09

不幸的是,在正则表达式中,数字范围并不是简单而直接的。这应该适用于你的样本率,但是我不认为有任何方法可以用正则表达式做大于x的运算。你可能想看看awk,看看那里是否有可能。

代码语言:javascript
复制
egrep '(?:4[4-9][0-9]{3}|[5-9][0-9]{4}|1[0-8][0-9]{4}|19[0-5][0-9]{3}|196000) Hz'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25202990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档