
Recherche avancée
Autres articles (90)
-
Possibilité de déploiement en ferme
12 avril 2011, parMediaSPIP peut être installé comme une ferme, avec un seul "noyau" hébergé sur un serveur dédié et utilisé par une multitude de sites différents.
Cela permet, par exemple : de pouvoir partager les frais de mise en œuvre entre plusieurs projets / individus ; de pouvoir déployer rapidement une multitude de sites uniques ; d’éviter d’avoir à mettre l’ensemble des créations dans un fourre-tout numérique comme c’est le cas pour les grandes plate-formes tout public disséminées sur le (...) -
Ajouter des informations spécifiques aux utilisateurs et autres modifications de comportement liées aux auteurs
12 avril 2011, parLa manière la plus simple d’ajouter des informations aux auteurs est d’installer le plugin Inscription3. Il permet également de modifier certains comportements liés aux utilisateurs (référez-vous à sa documentation pour plus d’informations).
Il est également possible d’ajouter des champs aux auteurs en installant les plugins champs extras 2 et Interface pour champs extras. -
MediaSPIP 0.1 Beta version
25 avril 2011, parMediaSPIP 0.1 beta is the first version of MediaSPIP proclaimed as "usable".
The zip file provided here only contains the sources of MediaSPIP in its standalone version.
To get a working installation, you must manually install all-software dependencies on the server.
If you want to use this archive for an installation in "farm mode", you will also need to proceed to other manual (...)
Sur d’autres sites (8971)
-
ffmpeg to generate dash and HLS - best practise
8 septembre 2017, par LaborCLooking for the correct way to encode a given input video in multiple bitrates and then package it for dash and HLS. I thought this is a basic task, but for me it was quite a challenge. So the way I do it is as follows :
First I split my video (mp4) into video and audio (I encode the audio, because I need to make sure that the output codec is aac, which is a requirement for web I think).
ffmpeg -c:v copy -an video_na.mp4 -i source_input.mp4
ffmpeg -c:a aac -ac 2 -async 1 -vn audio.mp4 -i source_input.mp4Then I encode the video with the following commands :
ffmpeg.exe -i video_na.mp4 -an -c:v libx264 -crf 18 \
-preset fast -profile:v high -level 4.2 -b:v 2000k -minrate 2000k \
-maxrate 2000k -bufsize 4000k -g 96 -keyint_min 96 -sc_threshold 0 \
-filter:v "scale='trunc(oh*a/2)*2:576'" -movflags +faststart \
-pix_fmt yuv420p -threads 4 -f mp4 video-2000k.mp4
ffmpeg.exe -i video_na.mp4 -an -c:v libx264 -crf 18 \
-preset fast -profile:v high -level 4.2 -b:v 1500k -minrate 1500k \
-maxrate 1500k -bufsize 3000k -g 96 -keyint_min 96 -sc_threshold 0 \
-filter:v "scale='trunc(oh*a/2)*2:480'" -movflags +faststart \
-pix_fmt yuv420p -threads 4 -f mp4 video-1500k.mp4After that I fragment the videos (I used the parameter —timescale 10000 but then the result was out of sync).
Sidenote : the -g parameter is 4 times 24 (frames). this is important because the fragmentation is 4000 (4 seconds)mp4fragment --fragment-duration 4000 video-2000k.mp4 \
video-2000k-f.mp4
mp4fragment --fragment-duration 4000 video-1500k.mp4 \
video-1500k-f.mp4And finally package everything together again for dash (I used to use —use-segment-timeline but then again the result was out-of-sync).
I use mp4dash and not mp4box because I want to be able to encrypt everything later on for DRM.mp4dash --media-prefix=out \
video-2000k-f.mp4 \
video-1500k-f.mp4 \
--out dashThe result works in Firefox, Chrome, IE Edge via a webserver and via Cloudfront AWS Streaming also on older browsers.
So for me there are still 2 tasks to accomplish.
First I need to generate a HLS package for Apple Phone, IPad Users.
And second : I need to encrypt everything.So far my HLS command is :
ffmpeg -y -loglevel info ^
-i video-2000k.mp4 \
-i video-1500k.mp4 \
-i audio.mp4 \
-profile:v baseline -start_number 0 -hls_time 10 \
-flags -global_header -hls_list_size 0 -f hls hls/master.m3u8This basically works, but generates only 1 bandwith without the posibility of multi-streams.
I am not certain about that statement, but it looks that way.
Has anyone an idea on what I am doing wrong ? -
Streaming from Icecast to Facebook Live with ffmpeg on Ubuntu 16.04
24 juillet 2017, par MatthieuI have a webradio streamed by Liquidsoap+Icecast on a DigitalOcean droplet (Ubuntu 16.04), and I want to combine this audio stream with a simple jpeg image with ffmpeg, transform it to a video stream and send it to Facebook live.
Facebook Live specifications :
Video Format :
We accept video in maximum 720p (1280 x 720) resolution, at 30 frames
per second. (or 1 key frame every 2 seconds). You must send an I-frame
(keyframe) at least once every two seconds throughout the stream..
Recommended max bit rate is 4000 Kbps. Titles must be less than 255
characters otherwise the stream will fail. The Live API accepts H264
encoded video and AAC encoded audio only.Video Length :
240 minute maximum length, with the exception of continuous live (see
above). 240 minute maximum length for preview streams (either through
Live dialog or publisher tools). After 240 minutes, a new stream key
must be generated.Advanced Settings :
Pixel Aspect Ratio : Square. Frame Types : Progressive Scan. Audio
Sample Rate : 44.1 KHz. Audio Bitrate : 128 Kbps stereo. Bitrate
Encoding : CBR.And the ffmpeg command I tried :
ffmpeg -loop 1 -i radio-background.jpg -thread_queue_size 20480 -i http://localhost:8000/radio -framerate 30 -r 30 -acodec aac -strict -2 -c:v libx264 -strict experimental -b:a 128k -pix_fmt yuvj444p -x264-params keyint=60 -b:v 256k -minrate 128k -maxrate 512k -bufsize 768k -f flv 'rtmp://rtmp-api.facebook.com:80/rtmp/'
This is actually working, as Facebook receives the live video and allows me to publish it. But I can’t figured out why there is a lag almost every 2 or 3 seconds. I asked different people to watch the test video, and everyone gets the same problem : every 2 or 3 seconds the playing "freezes" for half a second and seems to load the video, I even can see the loading icon spinning on the screen.
I tried different combinations of values for the following options : -thread_queue_size / -b:v / -minrate / -maxrate / -bufsize. Nothing seems to produce any change.
Video streaming is new for me, I’m not really confortable with the options listed before, so I think I’m missing something here...
Also, note that the icecast audio stream perfectly works, and according to DigitalOcean graphs, the server is not overloaded. So I think my ffmpeg command is wrong.
What ffmpeg parameters would be working for that case ?
-
How to track single-page websites and web applications using Piwik Analytics
21 février 2017, par InnoCraft — Community, DevelopmentSingle-page websites and web applications have become a standard over the last years. Getting the tracking of such websites and apps right is crucial to your success as you need to ensure the measured data is meaningful and correct. That’s why we, at InnoCraft, help our clients setting up their web tracking and measurement strategy. Some challenges our clients face are the tracking of single-page websites and web applications. We will cover this challenge in this post with a complete example at the bottom.
Embedding the Tracking Code
First you need to embed your JavaScript tracking code into your single-page website or web application as usual. To do this go to “Administration” in the top right in your Piwik, click on “Tracking Code” and adjust the tracking code to your needs.
Tracking a New Page View
The challenge begins when you need to track a new page view. A single-page app is different from a usual website as there is no regular new page load and Piwik cannot detect automatically when a new page is viewed. This means you need to let Piwik know whenever the URL and the page title changes. You can do this using the methods
setCustomUrl
andsetDocumentTitle
like this :window.addEventListener('hashchange', function() {
_paq.push(['setCustomUrl', '/' + window.location.hash.substr(1)']);
_paq.push(['setDocumentTitle', 'My New Title']);
_paq.push(['trackPageView']);
}Resetting previously set custom variables
If you have set any Custom Variables in scope “page”, you need to make sure to delete these custom variables again as they would be attributed to the new page view as well otherwise. The following code requires Piwik 3.0.2 :
_paq.push(['deleteCustomVariables', 'page']);
_paq.push(['trackPageView']);Updating the generation time
Next you need to update the generation time before tracking a new page view. Otherwise, the initial page generation time will be attributed to all of your subsequent pageviews.
If you don’t load new content from the server when the page changes, simply set the value to zero :
_paq.push(['setGenerationTimeMs', 0]);
_paq.push(['trackPageView']);In case you load new content from the server, we recommend to measure the time it took to load this content (in milliseconds) and set the needed time :
_paq.push(['setGenerationTimeMs', timeItTookToLoadPage]);
_paq.push(['trackPageView']);Updating the referrer
Depending on whether you want to track the previous page as a referrer for the new page view, you should update the referrer URL by setting it to the previous page URL :
_paq.push(['setReferrerUrl', previousPageUrl]);
_paq.push(['trackPageView']);Making Piwik Aware of New Content
When you show a new page, your single-page DOM might change as well. For example, you might replace parts of your page with new content that you loaded from your server via Ajax. This means you need to instruct Piwik to scan the DOM for new content. We’ll now go over various content types (Videos & Audio, Forms, Links and Downloads, Content tracking).
Video and Audio tracking
If you use the Media Analytics feature to track your videos and audios, whenever a new page is displayed you need to call the following method :
_paq.push(['MediaAnalytics::scanForMedia', documentOrElement]);
When you don’t pass any parameter, it will scan the entire DOM for new media. Alternatively, you can pass an element to scan only a certain area of your website or app for new media.
Form tracking
If you use the Form Analytics feature to measure the performance of your online forms, whenever a new page is displayed you need to call the following method :
_paq.push(['FormAnalytics::scanForForms', docuemntOrElement]);
Where
documentOrElement
points either todocument
to re-scan the entire DOM (the default when no parameter is set) or you can pass an element to restrict the re-scan to a specific area.Link tracking
Supposing that you use the link tracking feature to measure outlinks and downloads, Piwik needs to re-scan the entire DOM for newly added links whenever your DOM changes. To make sure Piwik will track such links, call this method :
_paq.push(['enableLinkTracking']);
Content tracking
If you use the Content Tracking feature, whenever a new page is displayed and some parts of your DOM changes, you need to call this method :
_paq.push(['trackContentImpressionsWithinNode', documentOrElement]);
Where
documentOrElement
points either todocument
or an element similar to the other methods. Piwik will then scan the page for newly added content blocks.Measuring Single-Page Apps : Complete Example
In this example we show how everything works together assuming you want to track a new page whenever a hash changes :
var currentUrl = location.href;
window.addEventListener('hashchange', function() {
_paq.push(['setReferrerUrl', currentUrl]);
currentUrl = '' + window.location.hash.substr(1);
_paq.push(['setCustomUrl', currentUrl]);
_paq.push(['setDocumentTitle', 'My New Title']);
// remove all previously assigned custom variables, requires Piwik 3.0.2
_paq.push(['deleteCustomVariables', 'page']);
_paq.push(['setGenerationTimeMs', 0]);
_paq.push(['trackPageView']);
// make Piwik aware of newly added content
var content = document.getElementById('content');
_paq.push(['MediaAnalytics::scanForMedia', content]);
_paq.push(['FormAnalytics::scanForForms', content]);
_paq.push(['trackContentImpressionsWithinNode', content]);
_paq.push(['enableLinkTracking']);
});Questions ?
If you have any questions or need help, please get in touch with us. You can find more information about the Piwik JavaScript tracker on the Piwik Developer Zone.