gobsor Posted December 15, 2010 Share Posted December 15, 2010 (edited) Hello,I was trying to get the length (playtime) of a MP3 file. I came across that on the ID3 website:TLEN The 'Length' frame contains the length of the audiofile in milliseconds, represented as a numeric string.Though i was searching the autoit-forums - et voila!:exactly what I've been looking for.So, first thing i did was downloading the ID3.au3 UDF and the example ID3_Example_GUI.au3. I modified the exampleand added MsgBox(0, "", "LENGTH: " & _ID3GetTagField("TLEN"))to line 147. Though, when opening a MP3 file it shows the message box with content "LENGTH:" but apparently the _ID3GetTagField("TLEN") returns"" - an empty string. Why? Did I do something wrong? When I view the MP3 file's information in WinAMP it shows playtime 194s. What am I doing wrong?EDIT:actually one doesn't need to add the MsgBox to line 147 since the example itself already contains a field on the GUI that should contain the playtime of the MP3 file after it got opened. Still the with the UDF provided example doesn't work for TLEN. Any suggestions? Edited December 15, 2010 by gobsor Link to comment Share on other sites More sharing options...
BrewManNH Posted December 15, 2010 Share Posted December 15, 2010 (edited) I've found that the MP3 files I have don't have a TLEN field set in almost all of them. There are other ways of obtaining the information you're looking for though. Using the you can get the information you need. Here's an example script that will show you the length of an MP3 in seconds.#include <bass.au3> _Bass_Startup("Bass.dll") _BASS_Init(0, -1, 44100, 0, "") $Filename = FileOpenDialog("Select MP3 File", "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}", "MP3 (*.mp3)", 1 + 4 ) $Bass_File = _BASS_StreamCreateFile(False, $Filename, 0, 0, 0) $SetTime = _BASS_ChannelGetLength($Bass_File, $BASS_POS_BYTE) $SetTime = _BASS_ChannelBytes2Seconds($Bass_File, $SetTime) MsgBox(0, "", "LENGTH: " & $SetTime & " seconds") Edited December 15, 2010 by BrewManNH If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag GudeHow to ask questions the smart way! I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from. Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays. - ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script. - Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label. - _FileGetProperty - Retrieve the properties of a file - SciTE Toolbar - A toolbar demo for use with the SciTE editor - GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI. - Latin Square password generator Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted December 15, 2010 Moderators Share Posted December 15, 2010 gobsor,If you look inside Sound.au3 you will find several ways to get the length of an mp3 file.The _SoundOpen function first tries to get the time from the Windows properties of the file; if that fails tries to read the Xing header (needed to get the correct result for VBR encoded files); if that fails tries to read the TLEN tag; and if that fails asks the MCI DLL if it can produce anything (which will only be correct for a CBR encoded file). After that it gives up - because I could not find any another way to do it! As I wrote those bits of the code, please feel free to use them if they are of use to you. M23 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area Link to comment Share on other sites More sharing options...
gobsor Posted December 15, 2010 Author Share Posted December 15, 2010 Thanks Brew, your example just works fine and gives me the exact length in seconds, I'll probably stick to that. Hey M23, I had a look into Sound.au3 earlier, using it in other scripts, its definately great work! Though, it does not always give me the exact length - for some mp3 files it fails and misses a few seconds - I compared the results to the length shown in WinAMP. I just tested the Bass.au3 UDF on ~80 files and it seems to be very accurate. Thanks though Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now