
Recherche avancée
Autres articles (20)
-
Taille des images et des logos définissables
9 février 2011, parDans beaucoup d’endroits du site, logos et images sont redimensionnées pour correspondre aux emplacements définis par les thèmes. L’ensemble des ces tailles pouvant changer d’un thème à un autre peuvent être définies directement dans le thème et éviter ainsi à l’utilisateur de devoir les configurer manuellement après avoir changé l’apparence de son site.
Ces tailles d’images sont également disponibles dans la configuration spécifique de MediaSPIP Core. La taille maximale du logo du site en pixels, on permet (...) -
Configuration spécifique d’Apache
4 février 2011, parModules spécifiques
Pour la configuration d’Apache, il est conseillé d’activer certains modules non spécifiques à MediaSPIP, mais permettant d’améliorer les performances : mod_deflate et mod_headers pour compresser automatiquement via Apache les pages. Cf ce tutoriel ; mode_expires pour gérer correctement l’expiration des hits. Cf ce tutoriel ;
Il est également conseillé d’ajouter la prise en charge par apache du mime-type pour les fichiers WebM comme indiqué dans ce tutoriel.
Création d’un (...) -
Submit bugs and patches
13 avril 2011Unfortunately a software is never perfect.
If you think you have found a bug, report it using our ticket system. Please to help us to fix it by providing the following information : the browser you are using, including the exact version as precise an explanation as possible of the problem if possible, the steps taken resulting in the problem a link to the site / page in question
If you think you have solved the bug, fill in a ticket and attach to it a corrective patch.
You may also (...)
Sur d’autres sites (5985)
-
Adding FFMPEG Layer to HLS streaming causes video playback issues
25 juin 2023, par MoeI have been searching a lot about HLS streaming and have succeeded to create a simple HLS streaming server with nodejs, the problem now is I need to add a layer of ffmpeg encoding to the .ts chunks before streaming to the user, without this layer everything works fine and on my server only 3 requests are seen :


manifest.m3u8
output_000.ts
output_000.ts
output_001.ts
output_002.ts



But then when I add a simple ffmpeg layer that literally copies everything from the ts file and output the stream (I will add of course dynamic filters to each request, thats why I need this ffmpeg layer), the player goes insane and request the whole video in just 5 seconds or something :


manifest.m3u8
output_000.ts
output_000.ts
output_001.ts
output_002.ts
output_001.ts
output_003.ts
output_002.ts
...
output_095.ts



I have also notices that the numbers aren't increasing uniformly and suspect this is part of the issue, I have tried adding more ffmpeg options to not do anything to the .ts files that are being fed to it as they are a part of a bigger video.


Here's my NodeJS server (NextJS API route) :



const fs = require(`fs`);
const path = require(`path`);
const {exec, spawn} = require(`child_process`);
const pathToFfmpeg = require(`ffmpeg-static`);

export default function handler(req, res) {
 
 const { filename } = req.query;
 console.log(filename);
 const filePath = path.join(process.cwd(), 'public', 'stream', `${filename}`);
 const inputStream = fs.createReadStream(filePath);

 // first check if that is ts file..
 if(filename.indexOf(`.ts`) != -1){
 
 const ffmpegProcess = spawn(pathToFfmpeg, [
 '-f', `mpegts`,
 '-i', 'pipe:0', // specify input as pipe
 '-c', 'copy', 
 '-avoid_negative_ts', '0',
 `-map_metadata`, `0`, // copy without re-encoding
 '-f', 'mpegts', // output format
 'pipe:1' // specify output as pipe
 ], {
 stdio: ['pipe', 'pipe', 'pipe'] // enable logging by redirecting stderr to stdout
 });
 res.status(200);
 res.setHeader('Content-Type', 'application/vnd.apple.mpegurl');
 res.setHeader('Cache-Control', 'no-cache');
 res.setHeader('Access-Control-Allow-Origin', '*');
 

 // ffmpegProcess.stderr.pipe(process.stdout); // log stderr to stdout
 
 inputStream.pipe(ffmpegProcess.stdin);
 ffmpegProcess.stdout.pipe(res);
 
 ffmpegProcess.on('exit', (code) => {
 if (code !== 0) {
 console.error(`ffmpeg process exited with code ${code}`);
 }
 });
 }else{
 // if not then stream whatever file as it is
 res.status(200);
 res.setHeader('Content-Type', 'application/vnd.apple.mpegurl');
 inputStream.pipe(res);
 }
 }



I have tried to feed the request's player appropriate headers but that didn't work, I have also tried to add the '-re' option to the ffmpeg encoder itself and hoped for minimal performance hits, but that also caused playback issue due to being too slow.


-
Cracking Aztec Game Audio
7 juin 2011, par Multimedia Mike — Game HackingHere’s a mild multimedia-related reverse engineering challenge for you. It’s pretty straightforward for those skilled in the art.
The Setup
One side effect of running this ridiculously niche interest blog at the intersection of multimedia, reverse engineering, and game hacking is that people occasionally contact me for assistance on those very matters. So it was when one of my MobyGames peers asked if I can help to extract some music from a game called Aztec Wars. The game consists of 2 discs, each with a music.xbe file that contains multiple tunes and is hundreds of megabytes large.
That’s all the data I received from the first email. At first I’m wondering what makes people think I have some magical insight into cracking these formats with such little information. Ordinarily, I would need to have the entire data file to work with and possibly the game binaries. But I didn’t want to ask him to upload hundreds of megabytes of data and I didn’t feel like downloading it ; commitment issues and all.
But then I gathered a little confidence and remembered that the .xbe files are probably just Game Resource Archive Formats (GRAF) which are, traditionally, absurdly simple. I asked my colleague to send me a hexdump of the first kilobyte of one of the .xbe GRAFs (
'hexdump -C -n 1024 music.xbe > file'
) as well as the total file size of the GRAF.The Hexdump
The first music.xbe file is 192817376 bytes large. These are the first1024144 bytes (more than enough) :00000000 01 00 00 00 60 04 00 00 14 00 00 00 01 00 00 00 |....`...........| 00000010 0d 00 00 00 48 00 00 00 94 39 63 01 1c a4 21 03 |....H....9c..¤ !.| 00000020 7a d2 54 04 04 28 ad 05 d8 88 fd 06 d8 88 fd 06 |zÒT..(.Ø.ý.Ø.ý.| 00000030 2a 6e 46 08 2a 6e 46 08 2a 6e 46 08 2a 6e 46 08 |*nF.*nF.*nF.*nF.| 00000040 50 13 2f 0a e0 28 7e 0b 52 49 46 46 44 39 63 01 |P./.à( .RIFFD9c.| 00000050 57 41 56 45 66 6d 74 20 10 00 00 00 01 00 02 00 |WAVEfmt ........| 00000060 44 ac 00 00 10 b1 02 00 04 00 10 00 64 61 74 61 |D¬...±......data| 00000070 fc 13 63 01 00 00 00 00 00 00 00 00 00 00 00 00 |ü.c.............| 00000080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
The Challenge
Armed with only the information in the foregoing section, figure out a method for extracting all the audio files in that file and advise on their playback/conversion. Ideally, this method should require minimal effort from both you and the person on the other end of the conversation.The Resolution
The reason I ask is because I came up with a solution but knew, deep down, that there must be a slightly easier way. How would you solve this ?The music files in question are now preserved on YouTube (until they see fit to remove them for one reason or another).
-
OpenCV VideoWriter will not open
21 février 2015, par ChrisCI’m having trouble instantiating and opening an OpenCV
VideoWriter
for recording video on a Raspberry Pi (Raspbian Weezy).My project is written in C++, but I’ve written a minimal Python program that demonstrates the problem.
https://gist.github.com/chriscollins/11ff2f43852e1c93dae8
Both my C++ code and the Python code above run without problem on my Windows machine. Sometimes the writer does not open, but that’s to be expected - I don’t have all of the listed codecs installed (the list of codecs comes from the Open CV source), but a good number of them work correctly. However, on a Raspberry Pi, both the C++ code and the Python code fail with the
VideoWriter
never being opened. In the above Python code,writer.isOpened()
returns false for every single codec, when run on a Raspberry Pi.I’ve
chown
ed the destination directory to the user I’m running the Python script as, andchmod
ded it to777
so I don’t believe that it is a permissions problem. I think it may be connected with how I’ve installed OpenCV or some of its dependencies, but I’m not sure how to rectify it.The install process I’ve used is as follows :
-
Update firmware/packages via
rpi-update
,apt-get update
andapt-get upgrade
. -
Install the following dependencies via
apt-get
:libjpeg8
libjpeg8-dev
libjpeg8-dbg
libjpeg-progs
ffmpeg
libavcodec-dev
libavcodec53
libavformat53
libavformat-dev
libgstreamer0.10-0-dbg
libgstreamer0.10-0
libgstreamer0.10-dev
libxine1-ffmpeg
libxine-dev
libxine1-bin
libunicap2
libunicap2-dev
swig
libv4l-0
libv4l-dev
python-numpy
libpython2.6
python-dev
python2.6-dev
libgtk2.0-dev -
Download and unzip http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.4.9/opencv-2.4.9.zip to
/root/opencv-2.4.9
. -
cd /root/opencv-2.4.9
and runcmake -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=/usr/local -DBUILD_PERF_TESTS=OFF -DBUILD_opencv_gpu=OFF -DBUILD_opencv_ocl=OFF
. Output of cmake is available at https://gist.github.com/chriscollins/d8060e03a6acd6d4336c -
make
andmake install
from the same directory.
Various other OpenCV functionality works correctly on the Raspberry Pi (in C++ or in Python) - e.g. viewing a webcam via
VideoCapture
, but I can’t get theVideoWriter
to work. I’m tempted to try installing FFMPEG from source instead of viaapt-get
, but asmake
takes 5+ hours to run on a Raspberry Pi, I was hoping I’d find the answer here, rather than proceeding with a trial and error approach !Any advice on how to solve (or debug) this is appreciated.
EDIT : Added output of cmake command (https://gist.github.com/chriscollins/d8060e03a6acd6d4336c)
-