
Recherche avancée
Autres articles (99)
-
Des sites réalisés avec MediaSPIP
2 mai 2011, parCette page présente quelques-uns des sites fonctionnant sous MediaSPIP.
Vous pouvez bien entendu ajouter le votre grâce au formulaire en bas de page. -
HTML5 audio and video support
13 avril 2011, parMediaSPIP uses HTML5 video and audio tags to play multimedia files, taking advantage of the latest W3C innovations supported by modern browsers.
The MediaSPIP player used has been created specifically for MediaSPIP and can be easily adapted to fit in with a specific theme.
For older browsers the Flowplayer flash fallback is used.
MediaSPIP allows for media playback on major mobile platforms with the above (...) -
De l’upload à la vidéo finale [version standalone]
31 janvier 2010, parLe chemin d’un document audio ou vidéo dans SPIPMotion est divisé en trois étapes distinctes.
Upload et récupération d’informations de la vidéo source
Dans un premier temps, il est nécessaire de créer un article SPIP et de lui joindre le document vidéo "source".
Au moment où ce document est joint à l’article, deux actions supplémentaires au comportement normal sont exécutées : La récupération des informations techniques des flux audio et video du fichier ; La génération d’une vignette : extraction d’une (...)
Sur d’autres sites (7763)
-
12 ways Matomo Analytics helps you to protect your visitor’s privacy
-
ffmpeg conversion from Flac to Ogg produces corrupted files
8 avril 2021, par experimentali transcoded flac files to ogg using this command


ffmpeg -i input.flac -c:a libvorbis -b:a 500k output.ogg



yes i use 500k to keep the highest quality possible, some of the files are ok, but some of them can not be played - Unsupported format or corrupted file says the foobar - also my icecast streamer cant read it. So there is something wrong with the files.


I believed it was due to the high bitrate so I tried


ffmpeg -i input.flac -c:a libvorbis -b:a 320k output.ogg



the same happened, some files were ok, some were not playable.
so I tried again with default using this command


ffmpeg -i input.flac -c:a libvorbis output.ogg



same thing. some files were ok, some were corrupted and not playable.


i have no clue why.


both flac and ogg are in the same family, what happened during the transcoding that it became a corrupted file ?


the spectral analysis does not show anything wrong - here it the ogg https://prnt.sc/115zdjl, here is the original flac https://prnt.sc/115zegw


i am really interested what is going on and how to make it work ?


can anyone explain ?


here is complete log


C:\Users\lukas.kotatko>ffmpeg -i "\\192.168.0.128\lukas\online radio resources\Atma FM playlists\channel 1\flac lossless\Tuu\One Thousand Years\02 One Thousand Years.flac" -c:a libvorbis -b:a 500k "\\192.168.0.128\lukas\online radio resources\Atma FM playlists\channel 1\flac lossless\Tuu\One Thousand Years\02 One Thousand Years [500k test].ogg"
ffmpeg version 4.3.1 Copyright (c) 2000-2020 the FFmpeg developers
 built with gcc 10.2.1 (GCC) 20200726
 configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libsrt --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libgsm --disable-w32threads --enable-libmfx --enable-ffnvcodec --enable-cuda-llvm --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt --enable-amf
 libavutil 56. 51.100 / 56. 51.100
 libavcodec 58. 91.100 / 58. 91.100
 libavformat 58. 45.100 / 58. 45.100
 libavdevice 58. 10.100 / 58. 10.100
 libavfilter 7. 85.100 / 7. 85.100
 libswscale 5. 7.100 / 5. 7.100
 libswresample 3. 7.100 / 3. 7.100
 libpostproc 55. 7.100 / 55. 7.100
Input #0, flac, from '\\192.168.0.128\lukas\online radio resources\Atma FM playlists\channel 1\flac lossless\Tuu\One Thousand Years\02 One Thousand Years.flac':
 Metadata:
 GENRE : Tribal / Ambient
 ORGANIZATION : Waveform Records
 ISRC : 01101-2
 COMMENT : US reissue featuring the six original tracks plus two taken from the Invocation album.
 MUSICBRAINZ_RELEASEGROUPID: 737d0518-3dc2-36b3-9419-282c0ade0e50
 ORIGINALDATE : 1993
 ORIGINALYEAR : 1993
 RELEASETYPE : album
 MUSICBRAINZ_ALBUMID: f6339129-f662-43a1-93df-2f20540f73cc
 ALBUM : One Thousand Years
 BARCODE : 789060110125
 MUSICBRAINZ_ALBUMARTISTID: e05a42e7-60a3-4d2d-983c-51dc4eb67cad
 album_artist : Tuu
 ALBUMARTISTSORT : Tuu
 ASIN : B00005B9TT
 SCRIPT : Latn
 RELEASESTATUS : official
 LABEL : Waveform Records
 CATALOGNUMBER : 01101-2
 RELEASECOUNTRY : US
 DATE : 2001-05-08
 TOTALDISCS : 1
 disc : 1
 TOTALTRACKS : 8
 MEDIA : CD
 MUSICBRAINZ_TRACKID: aef9824d-e4a6-4ae6-aebe-50a83dd14f71
 TITLE : One Thousand Years
 MUSICBRAINZ_ARTISTID: e05a42e7-60a3-4d2d-983c-51dc4eb67cad
 ARTIST : Tuu
 ARTISTSORT : Tuu
 ARTISTS : Tuu
 MUSICBRAINZ_RELEASETRACKID: 621c9da6-a85d-3f8b-b485-5e6f74a60cd0
 track : 2
 TRACKTOTAL : 8
 DISCTOTAL : 1
 Duration: 00:08:03.67, start: 0.000000, bitrate: 792 kb/s
 Stream #0:0: Audio: flac, 44100 Hz, stereo, s16
 Stream #0:1: Video: mjpeg (Baseline), yuvj420p(pc, bt470bg/unknown/unknown), 600x600 [SAR 1:1 DAR 1:1], 90k tbr, 90k tbn, 90k tbc (attached pic)
 Metadata:
 comment : Cover (front)
Stream mapping:
 Stream #0:1 -> #0:0 (mjpeg (native) -> theora (libtheora))
 Stream #0:0 -> #0:1 (flac (native) -> vorbis (libvorbis))
Press [q] to stop, [?] for help
[swscaler @ 0000015307581a00] deprecated pixel format used, make sure you did set range correctly
[ogg @ 00000153073f1680] Frame rate very high for a muxer not efficiently supporting it.
Please consider specifying a lower framerate, a different muxer or -vsync 2
Output #0, ogg, to '\\192.168.0.128\lukas\online radio resources\Atma FM playlists\channel 1\flac lossless\Tuu\One Thousand Years\02 One Thousand Years [500k test].ogg':
 Metadata:
 GENRE : Tribal / Ambient
 ORGANIZATION : Waveform Records
 ISRC : 01101-2
 COMMENT : US reissue featuring the six original tracks plus two taken from the Invocation album.
 MUSICBRAINZ_RELEASEGROUPID: 737d0518-3dc2-36b3-9419-282c0ade0e50
 ORIGINALDATE : 1993
 ORIGINALYEAR : 1993
 RELEASETYPE : album
 MUSICBRAINZ_ALBUMID: f6339129-f662-43a1-93df-2f20540f73cc
 ALBUM : One Thousand Years
 BARCODE : 789060110125
 MUSICBRAINZ_ALBUMARTISTID: e05a42e7-60a3-4d2d-983c-51dc4eb67cad
 album_artist : Tuu
 ALBUMARTISTSORT : Tuu
 ASIN : B00005B9TT
 SCRIPT : Latn
 RELEASESTATUS : official
 LABEL : Waveform Records
 CATALOGNUMBER : 01101-2
 RELEASECOUNTRY : US
 DATE : 2001-05-08
 TOTALDISCS : 1
 disc : 1
 TOTALTRACKS : 8
 MEDIA : CD
 MUSICBRAINZ_TRACKID: aef9824d-e4a6-4ae6-aebe-50a83dd14f71
 TITLE : One Thousand Years
 MUSICBRAINZ_ARTISTID: e05a42e7-60a3-4d2d-983c-51dc4eb67cad
 ARTIST : Tuu
 ARTISTSORT : Tuu
 ARTISTS : Tuu
 MUSICBRAINZ_RELEASETRACKID: 621c9da6-a85d-3f8b-b485-5e6f74a60cd0
 track : 2
 TRACKTOTAL : 8
 DISCTOTAL : 1
 encoder : Lavf58.45.100
 Stream #0:0: Video: theora (libtheora), yuv420p(progressive), 600x600 [SAR 1:1 DAR 1:1], q=2-31, 200 kb/s, 90k fps, 90k tbn, 90k tbc (attached pic)
 Metadata:
 DESCRIPTION : Cover (front)
 encoder : Lavc58.91.100 libtheora
 GENRE : Tribal / Ambient
 ORGANIZATION : Waveform Records
 ISRC : 01101-2
 MUSICBRAINZ_RELEASEGROUPID: 737d0518-3dc2-36b3-9419-282c0ade0e50
 ORIGINALDATE : 1993
 ORIGINALYEAR : 1993
 RELEASETYPE : album
 MUSICBRAINZ_ALBUMID: f6339129-f662-43a1-93df-2f20540f73cc
 ALBUM : One Thousand Years
 BARCODE : 789060110125
 MUSICBRAINZ_ALBUMARTISTID: e05a42e7-60a3-4d2d-983c-51dc4eb67cad
 ALBUMARTIST : Tuu
 ALBUMARTISTSORT : Tuu
 ASIN : B00005B9TT
 SCRIPT : Latn
 RELEASESTATUS : official
 LABEL : Waveform Records
 CATALOGNUMBER : 01101-2
 RELEASECOUNTRY : US
 DATE : 2001-05-08
 TOTALDISCS : 1
 DISCNUMBER : 1
 TOTALTRACKS : 8
 MEDIA : CD
 MUSICBRAINZ_TRACKID: aef9824d-e4a6-4ae6-aebe-50a83dd14f71
 TITLE : One Thousand Years
 MUSICBRAINZ_ARTISTID: e05a42e7-60a3-4d2d-983c-51dc4eb67cad
 ARTIST : Tuu
 ARTISTSORT : Tuu
 ARTISTS : Tuu
 MUSICBRAINZ_RELEASETRACKID: 621c9da6-a85d-3f8b-b485-5e6f74a60cd0
 TRACKNUMBER : 2
 TRACKTOTAL : 8
 DISCTOTAL : 1
 Stream #0:1: Audio: vorbis (libvorbis), 44100 Hz, stereo, fltp (16 bit), 500 kb/s
 Metadata:
 encoder : Lavc58.91.100 libvorbis
 GENRE : Tribal / Ambient
 ORGANIZATION : Waveform Records
 ISRC : 01101-2
 DESCRIPTION : US reissue featuring the six original tracks plus two taken from the Invocation album.
 MUSICBRAINZ_RELEASEGROUPID: 737d0518-3dc2-36b3-9419-282c0ade0e50
 ORIGINALDATE : 1993
 ORIGINALYEAR : 1993
 RELEASETYPE : album
 MUSICBRAINZ_ALBUMID: f6339129-f662-43a1-93df-2f20540f73cc
 ALBUM : One Thousand Years
 BARCODE : 789060110125
 MUSICBRAINZ_ALBUMARTISTID: e05a42e7-60a3-4d2d-983c-51dc4eb67cad
 ALBUMARTIST : Tuu
 ALBUMARTISTSORT : Tuu
 ASIN : B00005B9TT
 SCRIPT : Latn
 RELEASESTATUS : official
 LABEL : Waveform Records
 CATALOGNUMBER : 01101-2
 RELEASECOUNTRY : US
 DATE : 2001-05-08
 TOTALDISCS : 1
 DISCNUMBER : 1
 TOTALTRACKS : 8
 MEDIA : CD
 MUSICBRAINZ_TRACKID: aef9824d-e4a6-4ae6-aebe-50a83dd14f71
 TITLE : One Thousand Years
 MUSICBRAINZ_ARTISTID: e05a42e7-60a3-4d2d-983c-51dc4eb67cad
 ARTIST : Tuu
 ARTISTSORT : Tuu
 ARTISTS : Tuu
 MUSICBRAINZ_RELEASETRACKID: 621c9da6-a85d-3f8b-b485-5e6f74a60cd0
 TRACKNUMBER : 2
 TRACKTOTAL : 8
 DISCTOTAL : 1
frame= 1 fps=0.1 q=-0.0 Lsize= 25860kB time=00:08:03.66 bitrate= 438.0kbits/s speed=44.6x
video:8kB audio:25721kB subtitle:0kB other streams:0kB global headers:7kB muxing overhead: 0.511663%



-
Adjusting The Timetable and SQL Shame
My Game Music Appreciation website has a big problem that many visitors quickly notice and comment upon. The problem looks like this :
The problem is that all of these songs are 2m30s in length. During the initial import process, unless a chiptune file already had curated length metadata attached, my metadata utility emitted a default play length of 150 seconds. This is not good if you want to listen to all the songs in a soundtrack without interacting with the player page, but have various short songs (think “game over” or other quick jingles) that are over in a few seconds. Such songs still pad out 150 seconds of silence.
So I needed to correct this. Possible solutions :
- Manually : At first, I figured I could ask the database which songs needed fixing and listen to them to determine the proper lengths. Then I realized that there were well over 1400 games affected by this problem. This just screams “automated solution”.
- Automatically : Ask the database which songs need fixing and then somehow ask the computer to listen to the songs and decide their proper lengths. This sounds like a winner, provided that I can figure out how to programmatically determine if a song has “finished”.
SQL Shame
This play adjustment task has been on my plate for a long time. A key factor that has blocked me is that I couldn’t figure out a single SQL query to feed to the SQLite database underlying the site which would give me all the songs I needed. To be clear, it was very simple and obvious to me how to write a program that would query the database in phases to get all the information. However, I felt that it would be impure to proceed with the task unless I could figure out one giant query to get all the information.This always seems to come up whenever I start interacting with a database in any serious way. I call it SQL shame. This task got some traction when I got over this nagging doubt and told myself that there’s nothing wrong with the multi-step query program if it solves the problem at hand.
Suddenly, I had a flash of inspiration about why the so-called NoSQL movement exists. Maybe there are a lot more people who don’t like trying to derive such long queries and are happy to allow other languages to pick up the slack.
Estimating Lengths
Anyway, my solution involved writing a Python script to iterate through all the games whose metadata was output by a certain engine (the one that makes the default play length 150 seconds). For each of those games, the script queries the song table and determines if each song is exactly 150 seconds. If it is, then go to work trying to estimate the true length.The forgoing paragraph describes what I figured was possible with only a single (possibly large) SQL query.
For each song represented in the chiptune file, I ran it through a custom length estimator program. My brilliant (err, naïve) solution to the length estimation problem was to synthesize seconds of audio up to a maximum of 120 seconds (tightening up the default length just a bit) and counting how many of those seconds had all 0 samples. If the count reached 5 consecutive seconds of silence, then the estimator rewound the running length by 5 seconds and declared that to be the proper length. Update the database.
There were about 1430 chiptune files whose songs needed updates. Some files had 1 single song. Some files had over 100. When I let the script run, it took nearly 65 minutes to process all the files. That was a single-threaded solution, of course. Even though I already had the data I needed, I wanted to try to hand at parallelizing the script. So I went to work with Python’s multiprocessing module and quickly refactored it to use all 4 CPU threads on the machine where the files live. Results :
- Single-threaded solution : 64m42s to process corpus (22 games/minute)
- Multi-threaded solution : 18m48s with 4 CPU threads (75 games/minute)
More than a 3x speedup across 4 CPU threads, which is decent for a primarily CPU-bound operation.
Epilogue
I suspect that this task will require some refinement or manual intervention. Maybe there are songs which actually have more than 5 legitimate seconds of silence. Also, I entertained the possibility that some songs would generate very low amplitude noise rather than being perfectly silent. In that case, I could refine the script to stipulate that amplitudes below a certain threshold count as 0. Fortunately, I marked which games were modified by this method, so I can run a new script as necessary.SQL Schema
Here is the schema of my SQlite3 database, for those who want to try their hand at a proper query. I am confident that it’s possible ; I just didn’t have the patience to work it out. The task is to retrieve all the rows from the games table where all of the corresponding songs in the songs table is 150000 milliseconds.
-
CREATE TABLE games
-
(
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
-
uncompressed_sha1 TEXT,
-
uncompressed_size INTEGER,
-
compressed_sha1 TEXT,
-
compressed_size INTEGER,
-
system TEXT,
-
game TEXT,
-
gme_system TEXT default NULL,
-
canonical_url TEXT default NULL,
-
extension TEXT default "gamemusicxz",
-
enabled INTEGER default 1,
-
redirect_to_id INT DEFAULT -1,
-
play_lengths_modified INT DEFAULT NULL) ;
-
CREATE TABLE songs
-
(
-
game_id INTEGER,
-
song_number INTEGER NOT NULL,
-
song TEXT,
-
author TEXT,
-
copyright TEXT,
-
dumper TEXT,
-
length INTEGER,
-
intro_length INTEGER,
-
loop_length INTEGER,
-
play_length INTEGER,
-
play_order INTEGER default -1) ;
-
CREATE TABLE tags
-
(
-
game_id INTEGER,
-
tag TEXT NOT NULL,
-
tag_type TEXT default "filename") ;
-
CREATE INDEX gameid_index_songs ON songs(game_id) ;
-
CREATE INDEX gameid_index_tag ON tags(game_id) ;
-
CREATE UNIQUE INDEX sha1_index ON games(uncompressed_sha1) ;