我有一个Tornado Python服务器,它一次接受一个可变比特率mp3文件(块由固定数量的帧组成).
我正在做的就是向前传递二进制文件,但是,我想知道块的持续时间.因为它是可变比特率我不能做一个简单的计算.我正在研究pymedia,但我在Mac OS上开发,似乎pymedia无法在那里安装(此外,它自2006年以来一直没有更新).我也试过pymad但是无法安装它(自2007年以来它没有更新),无论如何它似乎更加以文件为中心.
理想情况下,我想,该方式从每个块中提取比特率诱变会为例子.但是,mutagen需要一个文件作为输入,而我希望输入一个mp3帧或一系列这样的帧.
def _on_read_frames(self, data):
logging.info('read from input:\n%s', data)
binary_audio = base64.b64decode(data)
# need to find out how many miliseconds went by here
Run Code Online (Sandbox Code Playgroud)
更新:这是近实时流式架构的一部分,因此mp3以小块编码,因此我目前的解决方案是使用恒定比特率,这允许简单的计算,我意识到使用可变比特率几乎没有任何好处这里.
我有一个 11 分钟的 .mkv 文件,其中包含一个 h264 视频流,占用 184MB 的空间。我想减小这个文件的大小。我想我可以降低比特率。但是 ffprobe 不输出任何内容。事实上,它说文件的长度是根据比特率计算的,因此可能不准确,但摘要或 [FORMAT] 条目中都没有比特率:
> ffprobe -show_format file.mkv
[matroska,webm @ 0x7f8e8084b200] Estimating duration from bitrate, this may be inaccurate
Input #0, matroska,webm, from 'file.mkv':
Duration: 00:11:11.59, start: 0.000000, bitrate: N/A
Stream #0.0: Video: h264 (High), yuv420p, 1280x720 [PAR 1:1 DAR 16:9], 29.97 fps, 29.97 tbr, 1k tbn, 59.94 tbc (default)
Stream #0.1: Audio: aac, 48000 Hz, 5.1, s16 (default)
[FORMAT]
...
bit_rate=0.000000
[/FORMAT]
Run Code Online (Sandbox Code Playgroud)
谢谢你。
编辑:我的理解是 H.264 是一种协议。因此,根据 ffprobe 文档,我无法判断 h264 编解码器使用了什么实现。如果有人知道,我将不胜感激。
试图找出ffmpeg,目前致力于将24bit/96khz FLAC文件转换为16bit/48khz.
我继承了一个项目,该项目将视频发送到远程编码器以编码为FLV.
今天,我注意到我们要求他们以1024kbps的速度编码对我而言,这似乎非常高.
其他人用的是什么?YouTube用于"标准"版本与"高质量"版本的用途是什么?
先感谢您.
在我的应用程序中,我使用媒体录音机进行录音。我想使用不同的比特率 32,64,128,160 等。
recorder = new MediaRecorder();
/******Audio Source******/
try{
if(audio_source.equals("Camcorder"))
recorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
else if(audio_source.equals("MIC"))
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
else recorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
}
catch(Exception e){
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
}
/******Audio Channel******/
try{
if(audio_channel.equalsIgnoreCase("mono")){
recorder.setAudioChannels(1);
}
else if(audio_channel.equalsIgnoreCase("stereo")){
recorder.setAudioChannels(2);
}
}
catch(Exception e){
recorder.setAudioChannels(1);
}
System.out.println(" bitrate -- "+bit_rate);
if (Build.VERSION.SDK_INT >= 10) {
recorder.setAudioSamplingRate(44100);//44100
}
else{
recorder.setAudioSamplingRate(8000);//44100
}
/******AudioEncodingBitRate******/
try{
System.out.println(" in try ..."+bit_rate);
if(bit_rate.equalsIgnoreCase("32")){
recorder.setAudioEncodingBitRate(32000);
}
else if(bit_rate.equalsIgnoreCase("64")){
recorder.setAudioEncodingBitRate(64000);
}
else if(bit_rate.equalsIgnoreCase("96")){
recorder.setAudioEncodingBitRate(96000);
}
else if(bit_rate.equalsIgnoreCase("128")){
recorder.setAudioEncodingBitRate(128000);
}
else if(bit_rate.equalsIgnoreCase("160")){
recorder.setAudioEncodingBitRate(160000);
}
}
catch(Exception e){
recorder.setAudioEncodingBitRate(64); …Run Code Online (Sandbox Code Playgroud) 我正在尝试获取AVPlayer播放视频流的比特率。我尝试使用的observed bit rate属性AVPlayerItemAccessLogEvent,但它提供了很高Observed-bit-rate的价值download rate of a segment。进一步研究属性后,我了解到该属性显示的值。我需要知道播放器播放流的比特率。
下图显示了LIVE流的“观察到的比特率”与“指示的比特率”。

请就这个问题提出您的建议。
我尝试了以下链接,但没有运气:
MPMoviePlayerController MovieAccessLogEvent-膨胀的observedBitrate。
有什么方法可以获取任何视频中每秒的位数?
英语:
ffmpeg/mediainfo -commands input.mkv
Run Code Online (Sandbox Code Playgroud)
结果:
sec 1 - 500bits
sec 2 - 600bits
sec 3 - 300bits
Run Code Online (Sandbox Code Playgroud)
谢谢!
我已经使用 pydub 输出文件(将文件切成较短的文件),一切都很好,但比特率已从 256k 变为 124k(为什么我会得到这个数字而不是 128k?)。我知道 AudioSegment 有一个设置比特率的参数,但我只想要相同的比特率而不是每次手动设置。有什么办法可以解决这个问题?
我使用 ffmpeg 旋转视频,代码如下:
ffmpeg -i nd750_a0040.MOV -vf "transpose=dir=clock, transpose=dir=clock" out.mkv
Run Code Online (Sandbox Code Playgroud)
生成的文件几乎比输入文件小 10 倍。我发现这个问题解决了一个相关问题,并建议将从以下内容获得的编解码器和比特率传递给 ffmpeg:
bitratev="$(ffmpeg -i "$1" -f null - |& grep video: | awk -F'[:|kB]' '{print $2}')"
codecv="$(ffprobe -loglevel error -select_streams v:0 -show_entries stream=codec_name -of default=nk=1:nw=1 "$1")"
Run Code Online (Sandbox Code Playgroud)
但是,这两个命令分别为两个文件提供了相同的输出:2643和h264。我假设 ffmpeg 默认情况下将这些值保持为相同的输出是否正确?
但是,如果我检查文件,ffmpeg -i我会得到不同的比特率值:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'nd750_a0040.MOV':
Metadata:
major_brand : qt
minor_version : 537331968
compatible_brands: qt niko
creation_time : 2016-06-18 04:28:03
Duration: 00:15:40.74, start: 0.000000, bitrate: 11569 kb/s
Stream #0:0(eng): Video: …Run Code Online (Sandbox Code Playgroud) 据我所知,两个命令行参数都改变了音频比特率,但我不确定,因为我也看到了它们的组合。基本上我找不到任何解释这两个命令的文档。也可能是 -ab 被替换为 -b:a 但我不确定。
泰