
Recherche avancée
Autres articles (59)
-
Activation de l’inscription des visiteurs
12 avril 2011, parIl est également possible d’activer l’inscription des visiteurs ce qui permettra à tout un chacun d’ouvrir soit même un compte sur le canal en question dans le cadre de projets ouverts par exemple.
Pour ce faire, il suffit d’aller dans l’espace de configuration du site en choisissant le sous menus "Gestion des utilisateurs". Le premier formulaire visible correspond à cette fonctionnalité.
Par défaut, MediaSPIP a créé lors de son initialisation un élément de menu dans le menu du haut de la page menant (...) -
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 (...) -
Librairies et binaires spécifiques au traitement vidéo et sonore
31 janvier 2010, parLes logiciels et librairies suivantes sont utilisées par SPIPmotion d’une manière ou d’une autre.
Binaires obligatoires FFMpeg : encodeur principal, permet de transcoder presque tous les types de fichiers vidéo et sonores dans les formats lisibles sur Internet. CF ce tutoriel pour son installation ; Oggz-tools : outils d’inspection de fichiers ogg ; Mediainfo : récupération d’informations depuis la plupart des formats vidéos et sonores ;
Binaires complémentaires et facultatifs flvtool2 : (...)
Sur d’autres sites (11586)
-
How to publish your plugin or theme on the Piwik Marketplace – Introducing the Piwik Platform
25 septembre 2014, par Thomas Steur — Community, DevelopmentThis is the next post of our blog series where we introduce the capabilities of the Piwik platform. Over the last weeks we have already introduced you to some of the basics on how to create plugins and themes. This time you’ll learn how to publish a plugin or theme on the Piwik Marketplace to share it with all Piwik users.
What is the Piwik Marketplace ?
The Marketplace is a showcase for all plugins and themes that can be used in Piwik. You can browse them either on a standalone website or in Piwik itself by going to Settings => Marketplace. There you can install and update them with just one click. Easy as that ! While some of those plugins are provided by Piwik or Piwik PRO most of them are created and maintained by our community. Everyone is very welcome to distribute plugins or themes on the Marketplace.
Prerequisites
To publish your plugin on the Marketplace you simply need to meet these requirements :
- The plugin name is not already taken by another plugin
- The code of the plugin is hosted in a public GitHub repository
- The GitHub service “Piwik plugins” for this repository is enabled (Repository Settings => Webhooks & Services => Add Service)
- Push permission for this repository
- The plugin is free (as in not paid)
- The license must be compatible with the GNU General Public License v3 or any later version
There is also list of Rules for plugins.
Best practices
Before actually distributing your plugin we recommend to follow a couple of best practices to make sure your plugin looks good on the Marketplace and provides useful information for your future users. If you have used the console to generate a plugin the needed files were already created for you.
Provide a good description
Make sure there is a file named
README.md
in the root of your plugin. When preparing your plugin for the Marketplace we will search for four sections in this file : Description, FAQ, Changelog and Support. Each of those is optional but it is good practice to provide at least a section Description and Support by prefixing them with##
. Any content of your readme outside of those sections will not be displayed on the Marketplace.# Piwik Plugin Name
## Description
Add your plugin description here.
## Support
Please direct any feedback to hello@piwik.org.
If you experience any issues feel free to file an issue at https://github.com/piwik/piwik/issues .A good example can be seen in the README.md of the CustomAlerts plugin and the related CustomAlerts plugin page.
Provide screenshots
This will improve your appearance in the Marketplace a lot and users will be more likely install your plugin. It is as easy as placing “png” or “jpg” files in a folder named
screenshots
. The filename of each image will be shown in the UI with underscores replaced by a whitespace. This way you can provide a nice description. Have a look at the CustomAlerts plugin to see how it works.Provide contact details
Your contact details are specified in the
plugin.json
file of your plugin root folder. Providing at least one author and a link to your homepage is required. If you do not have a website you can use a link to your GitHub profile. This helps your users contact you in case they want to thank you for your great work or if they have any problem with it. An example plugin.json looks like this :{
"name": "MyPluginName",
"homepage": "http://piwik.org",
"authors": [
{
"name": "Piwik",
"email": "hello@piwik.org",
"homepage": "http://piwik.org"
}
],
"support": {
"email": "hello@piwik.org",
"issues": "https://github.com/piwik/piwik/issues",
"forum": "http://forum.piwik.org",
"wiki": "https://github.com/piwik/piwik/wiki",
"irc": "#piwik-dev"
}
}Choose a license
Choosing the right license that works best for you and your users is important. To distribute a plugin via the Piwik Marketplace the license must be compatible with the GNU General Public License v3 or any later version. If you do not specify a license anywhere in your plugin, it is assumed your plugin uses GPLv3 or later. The license must be specified in the
plugin.json
file using the propertylicense
:{
"name": "MyPluginName",
"license": "GPL v3+"
}Provide donation links
You can define a donation link or email for PayPal, Flattr and Bitcoin in the
plugin.json
file. Users that love your work will then be able to donate you money directly from the plugin page.{
"name": "MyPluginName"
"donate": {
"paypal": "sponsor@piwik.org",
"flattr": "https://flattr.com/profile/piwik",
"bitcoin": "1234567890"
}
}How to publish the first version of your plugin
We are trying to make it as easy as possible for you to publish your plugin on the Marketplace. That’s why we don’t require any logins or packaging. To publish your plugin you only have to create a new tag of your plugin and within a minute your plugin will be ready to be installed on hundreds of thousands of Piwik installations.
To tag your plugin you can use one of the following two suggestions :
Using the command line
git tag 0.1.0 && git push --tags
Where “0.1.0” is the name of the tag. While you can use any tag name it is best practice to use the current version number as defined in the
plugin.json
file.Using GitHub UI
To tag a new version via GitHub click on Releases => Draft a new release.
Now you can enter a tag name (version) and press “Publish release” as shown in this screen. That’s it !
How to provide an update for your plugin
To provide an update you only have to increase the version number in the file
plugin.json
and create another tag as explained in the previous section. Your new Plugin update will be visible on the Marketplace within a minute or so. It might take a bit longer until the update appears in Piwik itself as each Piwik server only checks for updates every few hours.For a complete list of information go to our Distributing Your Plugin guide in the Piwik Developer Zone.
If you have any feedback regarding our APIs or our guides in the Developer Zone feel free to let us know.
-
Unable to probe
8 mai 2017, par EtsonI’m using php-ffmpeg on windows with cakephp3, and encountered an issue that says :
Unable to probe /var/www/blogchild.dev/webroot/uploads/records//Танец довольного теннисиста.mp4
MultimediaController
<?php
namespace App\Controller;
use App\Controller\AppController;
class MultimediaController extends AppController
{
public function initialize()
{
parent::initialize(); // TODO: Change the autogenerated stub
$this->Auth->allow(['index', 'addvideo']);
$this->loadModel('Posts');
$this->loadComponent('File');
$this->loadComponent('Flash');
$this->loadComponent('Upload');
}
public function addvideo()
{
$this->viewBuilder()->template('addvideo');
$posts = $this->Posts->newEntity();
// $posts = $this->MsPosts->find()->toArray();
// dump($posts);
// die();
if ($this->request->is('post')) {
$data = $this->request->data;
$data['mentor_id'] = '1';
$data['nbr_of_views'] = '0';
$data['nbr_of_loves'] = '0';
$data['nbr_of_smiles'] = '0';
$data['mentor_id'] = '1';
$data['child_id'] = '1';
$post = $this->Posts->patchEntity($posts, $data);
// var_dump($data);
// die();
// debug($this->MsPosts->save($post));die();
// $upload = $this->File->uploadFile($this->request->data['file'], $post['id']);
// $post->file = $upload['url'];
if (!empty($this->request->data['file']['name'])) {
$path = '/uploads' . DS . 'records' . DS . $post->id;
$this->uploadFile($_FILES['file'], $path, $post->id);
$post->file = $path . DS . $_FILES['file']['name'];
$this->Posts->save($post);
} else {
$this->Posts->save($post);
}
$this->Flash->success(__('The post saved'));
return $this->redirect(['action' => 'addvideo']);AppController
<?php
/**
* CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
* Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
*
* Licensed under The MIT License
* For full copyright and license information, please see the LICENSE.txt
* Redistributions of files must retain the above copyright notice.
*
* @copyright Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
* @link http://cakephp.org CakePHP(tm) Project
* @since 0.2.9
* @license http://www.opensource.org/licenses/mit-license.php MIT License
*/
namespace App\Controller;
use Cake\Controller\Controller;
use Cake\Event\Event;
use Cake\Filesystem\Folder;
use FFMpeg\Coordinate\TimeCode;
use FFMpeg\FFMpeg;
use Cake\Controller\Component;
use Cake\I18n\I18n;
/**
* Application Controller
*
* Add your application-wide methods in the class below, your controllers
* will inherit them.
*
* @link http://book.cakephp.org/3.0/en/controllers.html#the-app-controller
*/
class AppController extends Controller
{
/**
* Initialization hook method.
*
* Use this method to add common initialization code like loading components.
*
* e.g. `$this->loadComponent('Security');`
*
* @return void
*/
public function initialize()
{
parent::initialize();
$this->loadComponent('Cookie');
$this->loadComponent('RequestHandler');
$this->loadComponent('Flash');
$provider = $this->request->query('provider');
//if ($provider === null) {
$this->loadComponent('Auth', [
'authenticate' => [
'Form' => [
'finder' => 'auth',
'fields' => [
'username' => 'email',
'password' => 'password'
],
'loginAction' => [
'controller' => 'Auth',
'action' => 'login'
],
'loginRedirect' => [
'controller' => 'Auth',
'action' => 'login'
],
'logoutRedirect' => [
'controller' => 'Auth',
'action' => 'login'
]
],
'ADmad/HybridAuth.HybridAuth' => [
// All keys shown below are defaults
'fields' => [
'provider' => 'provider',
'openid_identifier' => 'openid_identifier',
'email' => 'email'
],
'profileModel' => 'ADmad/HybridAuth.SocialProfiles',
'profileModelFkField' => 'user_id',
// The URL Hybridauth lib should redirect to after authentication.
// If no value is specified you are redirect to this plugin's
// HybridAuthController::authenticated() which handles persisting
// user info to AuthComponent and redirection.
'hauth_return_to' => null,
'loginRedirect' => [
'controller' => 'Auth',
'action' => 'login'
],
'logoutRedirect' => [
'controller' => 'Auth',
'action' => 'login'
]
],
],
]);
// } else {
// $this->loadComponent('Auth', [
// 'authenticate' => [
// 'Form',
//
//
// ]
//
// ]);
// }
}
/**
* Before render callback.
*
* @param \Cake\Event\Event $event The beforeRender event.
* @return void
*/
public function beforeRender(Event $event)
{
if (!array_key_exists('_serialize', $this->viewVars) &&
in_array($this->response->type(), ['application/json', 'application/xml'])
) {
$this->set('_serialize', true);
}
if ($this->request->session()->read('Auth.User')) {
$this->set('loggedIn', true);
} else {
$this->set('loggedIn', false);
}
}
protected function uploadFile(array $file, $path, $postId)
{
$objFile = $file;
$path = $_SERVER['DOCUMENT_ROOT'] . $path;
//@TODO check file size|Return error
$folder = new Folder();
$folder->create($path, 0755);
move_uploaded_file($objFile['tmp_name'], $path . DS . $objFile['name']);
$ffmpeg = FFMpeg::create(
array(
'ffmpeg.binaries' => '/usr/bin/ffmpeg',
'ffprobe.binaries' => '/usr/bin/ffprobe',
'timeout' => 3600, // The timeout for the underlying process
'ffmpeg.threads' => 12, // The number of threads that FFMpeg should use
)
);
$temp = explode('.', $objFile['name']);
$video = $ffmpeg->open(WWW_ROOT . 'uploads/records' . DS . $postId . DS . $objFile['name']);
$frame = $video->frame(TimeCode::fromSeconds(1));
$userPath = 'uploads/records' . DS . $postId . DS . $temp[0] . '.jpg';
$frame->save(WWW_ROOT . $userPath);
}WARNING !!!!! Help me......
enter image description here -
How to transfer video as rtp stream with least delay by FFmpeg
2 décembre 2020, par Yasushi2019I use AXIS M1045-LW supporting rtsp/http access, and my Windows 10 PC can access to the camera through LAN.


I would like to transfer the video as rtp with keeping H.264 codec which is supported by the camera.



Image


[Camera] == (rtsp or http) ==> [FFmpeg on Win10] == (rtp) ==>



When I accessed the camera through Google Chrome on my Win10 PC, there is only 1 or 2 sec delay.


However, when I tried access by the following command, I found over 10 sec delay.


How could I reduce the delay as much as possible ?



[Windows Command Prompt A ] (sender)



C :\Users\xxxx\ffmpeg-4.3.1-2020-11-19-full_build\bin>ffmpeg -re -i rtsp ://xxx:xxx@xxx.xxx.xxx.xxx/axis-media/media.amp -codec:v copy -f rtp rtp ://localhost:30002 -sdp_file stream.sdp

ffmpeg version 4.3.1-2020-11-19-full_build-www.gyan.dev Copyright (c) 2000-2020 the FFmpeg developers
 built with gcc 10.2.0 (Rev5, Built by MSYS2 project)
 configuration : —enable-gpl —enable-version3 —enable-static —disable-w32threads —disable-autodetect —enable-fontconfig —enable-iconv —enable-gnutls —enable-libxml2 —enable-gmp —enable-lzma —enable-libsnappy —enable-zlib —enable-libsrt —enable-libssh —enable-libzmq —enable-avisynth —enable-libbluray —enable-libcaca —enable-sdl2 —enable-libdav1d —enable-libzvbi —enable-librav1e —enable-libwebp —enable-libx264 —enable-libx265 —enable-libxvid —enable-libaom —enable-libopenjpeg —enable-libvpx —enable-libass —enable-frei0r —enable-libfreetype —enable-libfribidi —enable-libvidstab —enable-libvmaf —enable-libzimg —enable-amf —enable-cuda-llvm —enable-cuvid —enable-ffnvcodec —enable-nvdec —enable-nvenc —enable-d3d11va —enable-dxva2 —enable-libmfx —enable-libcdio —enable-libgme —enable-libmodplug —enable-libopenmpt —enable-libopencore-amrwb —enable-libmp3lame —enable-libshine —enable-libtheora —enable-libtwolame —enable-libvo-amrwbenc —enable-libilbc —enable-libgsm —enable-libopencore-amrnb —enable-libopus —enable-libspeex —enable-libvorbis —enable-ladspa —enable-libbs2b —enable-libflite —enable-libmysofa —enable-librubberband —enable-libsoxr —enable-chromaprint
 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, rtsp, from 'rtsp ://xxx:xxx@xxx.xxx.xxx.xxx/axis-media/media.amp' :
 Metadata :
 title : Session streamed with GStreamer
 comment : rtsp-server
 Duration : N/A, start : 2.979633, bitrate : N/A
 Stream #0:0 : Video : h264 (Baseline), yuvj420p(pc, bt709, progressive), 320x240 [SAR 1:1 DAR 4:3], 2 fps, 25 tbr, 90k tbn, 4 tbc
Output #0, rtp, to 'rtp ://localhost:30002' :
 Metadata :
 title : Session streamed with GStreamer
 comment : rtsp-server
 encoder : Lavf58.45.100
 Stream #0:0 : Video : h264 (Baseline), yuvj420p(pc, bt709, progressive), 320x240 [SAR 1:1 DAR 4:3], q=2-31, 2 fps, 25 tbr, 90k tbn, 2 tbc
Stream mapping :
 Stream #0:0 -> #0:0 (copy)
Press [q] to stop, [?] for help
[rtp @ 000002da44da33c0] Non-monotonous DTS in output stream 0:0 ; previous : 0, current : -224986 ; changing to 0. This may result in incorrect timestamps in the output file.
[rtp @ 000002da44da33c0] Non-monotonous DTS in output stream 0:0 ; previous : 0, current : -178194 ; changing to 0. This may result in incorrect timestamps in the output file.
[rtp @ 000002da44da33c0] Non-monotonous DTS in output stream 0:0 ; previous : 0, current : -134998 ; changing to 0. This may result in incorrect timestamps in the output file.
[rtp @ 000002da44da33c0] Non-monotonous DTS in output stream 0:0 ; previous : 0, current : -88201 ; changing to 0. This may result in incorrect timestamps in the output file.
[rtp @ 000002da44da33c0] Non-monotonous DTS in output stream 0:0 ; previous : 0, current : -45002 ; changing to 0. This may result in incorrect timestamps in the output file.
frame= 89 fps=2.1 q=-1.0 size= 142kB time=00:00:43.01 bitrate= 27.0kbits/s speed= 1x



[Windows Command Prompt B ] (receiver)



C :\Users\xxx\ffmpeg-4.3.1-2020-11-19-full_build\bin>ffplay -protocol_whitelist "file,udp,rtp" stream.sdp

ffplay version 4.3.1-2020-11-19-full_build-www.gyan.dev Copyright (c) 2003-2020 the FFmpeg developers
 built with gcc 10.2.0 (Rev5, Built by MSYS2 project)
 configuration : —enable-gpl —enable-version3 —enable-static —disable-w32threads —disable-autodetect —enable-fontconfig —enable-iconv —enable-gnutls —enable-libxml2 —enable-gmp —enable-lzma —enable-libsnappy —enable-zlib —enable-libsrt —enable-libssh —enable-libzmq —enable-avisynth —enable-libbluray —enable-libcaca —enable-sdl2 —enable-libdav1d —enable-libzvbi —enable-librav1e —enable-libwebp —enable-libx264 —enable-libx265 —enable-libxvid —enable-libaom —enable-libopenjpeg —enable-libvpx —enable-libass —enable-frei0r —enable-libfreetype —enable-libfribidi —enable-libvidstab —enable-libvmaf —enable-libzimg —enable-amf —enable-cuda-llvm —enable-cuvid —enable-ffnvcodec —enable-nvdec —enable-nvenc —enable-d3d11va —enable-dxva2 —enable-libmfx —enable-libcdio —enable-libgme —enable-libmodplug —enable-libopenmpt —enable-libopencore-amrwb —enable-libmp3lame —enable-libshine —enable-libtheora —enable-libtwolame —enable-libvo-amrwbenc —enable-libilbc —enable-libgsm —enable-libopencore-amrnb —enable-libopus —enable-libspeex —enable-libvorbis —enable-ladspa —enable-libbs2b —enable-libflite —enable-libmysofa —enable-librubberband —enable-libsoxr —enable-chromaprint
 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
[sdp @ 000001832f4ecec0] decoding for stream 0 failed 0B f=0/0
Input #0, sdp, from 'stream.sdp' :
 Metadata :
 title : Session streamed with GStreamer
 Duration : N/A, bitrate : N/A
 Stream #0:0 : Video : h264 (Baseline), yuvj420p(pc, bt709, progressive), 320x240 [SAR 1:1 DAR 4:3], 2 fps, 2 tbr, 90k tbn, 4 tbc
[swscaler @ 0000018336868d00] deprecated pixel format used, make sure you did set range correctly
 127.52 M-V : -0.021 fd= 12 aq= 0KB vq= 11KB sq= 0B f=0/0