2011-11-22 67 views
1

我是FFMPEG的新手,我想掃描我的所有文件的採樣率。我不確定這是什麼,因爲我對此很陌生,也不知道如何開始使用FFMPEG的掃描。這些直播流是MP3流,音樂曲目。如果這有什麼不同,我對PHP很熟悉。如何掃描實時mp3流的採樣率?

+0

http://stackoverflow.com/questions/5140085/how-to-get-sampling-rate-and-frequency-of-music-file-mp3-in-android 是一個好的開始。 – Jonathan

+1

「流媒體」究竟是什麼意思?我以爲你有一堆文件? – Brad

+0

我通過電子郵件發送了帶有直播流的網址 – Bulvak

回答

1

當你調用FFMPEG與輸入文件時,它會告訴你所有相關的每個流的數據:

ffmpeg -i yourfile.mp3 

有一個單獨的可執行文件通常與FFMPEG捆綁在一起,儘管它可以滿足您的需求,那就是ffprobe。因此,在Windows系統上,你會做這樣的事情,以它的標準輸出重定向到一個文件:

ffprobe -i yourfile.mp3 -show_streams > file_stream_info.txt 

在該文件中,你會發現這樣的事情:

[STREAM] 
index=0 
codec_name=mp3 
codec_long_name=MP3 (MPEG audio layer 3) 
codec_type=audio 
codec_time_base=0/1 
codec_tag_string=[0][0][0][0] 
codec_tag=0x0000 
sample_fmt=s16 
sample_rate=44100 
channels=2 
bits_per_sample=0 
id=N/A 
r_frame_rate=0/0 
avg_frame_rate=1225/32 
time_base=1/14112000 
start_time=0.000 
duration=210.688 
nb_frames=N/A 
[/STREAM] 

所有你必須那麼你可以使用你正在使用的任何腳本語言(PHP?)將它分成鍵/值對(讀取行並在其上運行explode())。我還應該注意到,在大多數語言中,有一種方法可以從您正在執行的某些內容中讀取標準輸出,而無需編寫文件,效率會更高。

+0

布拉德我只是給你發郵件,看看。 – Bulvak

0

試試這個代碼

$var = shell_exec("mpg321 -t my_file.mp3 2>&1 | grep Hz | awk '{print $7}'

+0

我認爲你對比特率和採樣率感到困惑,採樣率是採樣頻率。 – Bulvak

+0

哎呦。 固定我認爲... – Tim