- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想做的是从音频或视频文件中获取元数据并将其保存到数据库记录中,到目前为止,唯一的方法似乎是使用子进程将 AVCONV 保存到文件中。打开调用然后读取文件,是否有任何图书馆可以这样做以节省一些步骤?我找不到使用 Pydub 或 PySox 的方法。这是我使用的简单的 hamfisted 初学者代码,它确实有效并将比特率、持续时间等信息放入变量 audio_info 中,将元数据放入元数据中。 OGG 输出的工作方式与我测试的其他格式不同(这是大量的视频和音频!)。
try:
p = subprocess.Popen(["avconv" , "-i" , music_file], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = p.communicate()
retcode = p.wait()
except IOError,e:
pass
extension = uploaded_music_file[-3:]
if "ogg" not in [err , extension]:
if "Metadata:" in err:
list = err.split("Metadata:")
holder = list[1].split("Duration:")
metadata = holder[0]
audio_info = holder[1].replace("At least one output file must be specified","")
print metadata
print audio_info
else:
list = err.split("Duration:")
audio_info = list[1].replace("At least one output file must be specified","")
print "No Metadata"
print audio_info
else:
list = err.split("Duration:")
if "Metadata:" in list[1]:
data = list[1].split("Metadata:")
metadata = data[1].replace("At least one output file must be specified","")
audio_info = data[0]
print metadata
print audio_info
else:
audio_info = list[1].replace("At least one output file must be specified","")
print "No Metadata"
print audio_info
if (audio_info):
print "AUDIO INFO:"
cursor.execute("UPDATE songDB SET audio_info = %s WHERE id = %s" ,[ audio_info , song_id ] )
if (metadata):
print "METADATA:"
cursor.execute("songDB pack_song SET metadata = %s WHERE id = %s" ,[ metadata , song_id ] )
最佳答案
Pydub 确实包含一个用于检索元数据的函数,pydub.utils.mediainfo("/path/to/file")
,尽管 pydub 仅设计用于处理音频文件。然而,mediainfo
的当前实现似乎并没有做任何特定于音频的事情,因此它可能适合您。
它返回由 ffmpeg/libav(特别是 ffprobe/avprobe 实用程序)提供的元数据字典
>>> from pydub.utils import mediainfo
>>> mediainfo("/path/to/file.mp3")
对于 pydub 的单元测试使用的 test1.mp3 文件,返回:
{
u'DISPOSITION': {
u'attached_pic': u'0',
u'clean_effects': u'0',
u'comment': u'0',
u'default': u'0',
u'dub': u'0',
u'forced': u'0',
u'hearing_impaired': u'0',
u'karaoke': u'0',
u'lyrics': u'0',
u'original': u'0',
u'visual_impaired': u'0'
},
u'TAG': {u'encoder': u'Lavf55.12.100'},
u'avg_frame_rate': u'0/0',
u'bit_rate': u'96179',
u'bits_per_sample': u'0',
u'channel_layout': u'stereo',
u'channels': u'2',
u'codec_long_name': u'MP3 (MPEG audio layer 3)',
u'codec_name': u'mp3',
u'codec_tag': u'0x0000',
u'codec_tag_string': u'[0][0][0][0]',
u'codec_time_base': u'1/32000',
u'codec_type': u'audio',
u'duration': u'10.044000',
u'duration_ts': u'141740928',
u'filename': u'/Users/jiaaro/Documents/code/pydub/test/data/test1.mp3',
u'format_long_name': u'MP2/3 (MPEG audio layer 2/3)',
u'format_name': u'mp3',
u'id': u'N/A',
u'index': u'0',
u'max_bit_rate': u'N/A',
u'nb_frames': u'N/A',
u'nb_programs': u'0',
u'nb_read_frames': u'N/A',
u'nb_read_packets': u'N/A',
u'nb_streams': u'1',
u'probe_score': u'51',
u'profile': u'unknown',
u'r_frame_rate': u'0/0',
u'sample_fmt': u's16p',
u'sample_rate': u'32000',
u'size': u'120753',
u'start_pts': u'487305',
u'start_time': u'0.034531',
u'time_base': u'1/14112000'
}
关于python - 如何从 python 中的音频/视频文件中提取元数据和比特率信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27745134/
我一直在为实时流和静态文件(HTTP 上的 MP3)构建网络广播播放器。我选了Howler.js作为规范化 quirks 的后端的 HTML5 Audio (思考:自动播放、淡入/淡出、进度事件)。
vue移动端input上传视频、音频,供大家参考,具体内容如下 html部分 ?
关闭。这个问题需要更多 focused .它目前不接受答案。 想改进这个问题?更新问题,使其仅关注一个问题 editing this post . 7年前关闭。 Improve this questi
我想在我的程序中访问音频和视频。 MAC里面可以吗? 我们的程序在 Windows 上运行,我使用 directshow 进行音频/视频编程。但我想在 MAC 中开发相同的东西。 有没有像direct
我的应用程序(使用 Flutter 制作,但这应该无关紧要)具有类似于计时器的功能,可以定期(10 秒到 3 分钟)发出滴答声。我在我的 Info.plist 中激活了背景模式 Audio、AirPl
我是 ionic 2 的初学者 我使用了音频文件。 import { Component } from '@angular/core'; import {NavController, Alert
我有一个包含ListView和图片的数据库,我想在每个语音数据中包含它们。我已经尝试过,但是有很多错误。以下是我的java和xml。 数据库.java package com.example.data
我在zend framework 2上建立了一个音乐社交网络。您可以想象它与SoundCloud相同,用户上传歌曲,其他用户播放它们,这些是网站上的基本操作。 我知道将要托管该页面的服务器将需要大量带
我正在尝试在android应用中播放音频,但是在代码中AssetFileDescriptor asset1及其下一行存在错误。这是代码: MediaPlayer mp; @Override prote
我对 WordPress Audio Shortcode有问题。我这样使用它: 但是在前面,在HTML代码中我得到了: document.createElement('audio');
我正在做一项关于降低噪音的滤波技术的实验。我在数据集中的样本是音频文件(.wav),因此,我有:原始录制的音频文件,我将它们与噪声混合,因此变得混合(噪声信号),我将这些噪声信号通过滤波算法传递,输出
一个人会使用哪种类型的神经网络架构将声音映射到其他声音?神经网络擅长学习从序列到其他序列,因此声音增强/生成似乎是它们的一种非常流行的应用(但不幸的是,事实并非如此-我只能找到一个(相当古老的)洋红色
这个让我抓狂: 在专用于此声音播放/录制应用程序的 Vista+ 计算机上,我需要我的应用程序确保(默认)麦克风电平被推到最大。我该怎么做? 我找到了 Core Audio lib ,找到了如何将 I
{ "manifest_version": 2, "name": "Kitten Radio Extension", "description": "Listen while browsi
class Main { WaveFileReader reader; short[] sample; Complex[] tmpComplexArray; publi
我正在使用电话录音软件(android),该软件可以记录2个人在电话中的通话。每个电话的输出是一个音频文件,其中包含来自 call 者和被 call 者的声音。 但是,大多数情况下,运行此软件的电话发
我正在构建一个需要语音激活命令的Web应用程序。我正在使用getUserMedia作为音频输入。 对于语音激活命令,该过程是用户将需要通过记录其语音来“校准”命令。例如,对于“停止”命令,用户将说出“
我正在开发一个Cordova应用程序,并将PouchDB用作数据库,当连接可用时,它将所有信息复制到CouchDB。 我成功存储了简单的文本和图像。 我一直在尝试存储视频和音频,但是没有运气。 我存储
我正在开发web application,我必须在其中使用.MP3的地方使用播放声音,但是会发生问题。 声音为play good in chrome, Firefox,但为safari its not
如何减少音频文件的位深?是否忽略了MSB或LSB?两者混合吗? (旁问:这叫什么?) 最佳答案 TL / DR:将音频曲线高度变量右移至较低位深度 可以将音频视为幅度(Y轴)随时间(X轴)的模拟曲线。
我是一名优秀的程序员,十分优秀!