
Recherche avancée
Médias (1)
-
Publier une image simplement
13 avril 2011, par ,
Mis à jour : Février 2012
Langue : français
Type : Video
Autres articles (42)
-
Les autorisations surchargées par les plugins
27 avril 2010, parMediaspip core
autoriser_auteur_modifier() afin que les visiteurs soient capables de modifier leurs informations sur la page d’auteurs -
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 (...) -
Support audio et vidéo HTML5
10 avril 2011MediaSPIP utilise les balises HTML5 video et audio pour la lecture de documents multimedia en profitant des dernières innovations du W3C supportées par les navigateurs modernes.
Pour les navigateurs plus anciens, le lecteur flash Flowplayer est utilisé.
Le lecteur HTML5 utilisé a été spécifiquement créé pour MediaSPIP : il est complètement modifiable graphiquement pour correspondre à un thème choisi.
Ces technologies permettent de distribuer vidéo et son à la fois sur des ordinateurs conventionnels (...)
Sur d’autres sites (5520)
-
How to add new pages and menu items to Piwik – Introducing the Piwik Platform
11 septembre 2014, par Thomas Steur — DevelopmentThis is the next post of our blog series where we introduce the capabilities of the Piwik platform (our previous post was How to create a widget). This time you’ll learn how to extend Piwik by adding new pages and menu items. For this tutorial you will need to have basic knowledge of PHP and optionally of Twig which is the template engine we use.
What can be displayed in a page ?
To make it short : You can display any corporate related content, key metrics, news, help pages, custom reports, contact details, information about your server, forms to manage any data and anything else.
Getting started
In this series of posts, we assume that you have already set up your development environment. If not, visit the Piwik Developer Zone where you’ll find the tutorial Setting up Piwik.
To summarize the things you have to do to get setup :
- Install Piwik (for instance via git).
- Activate the developer mode :
./console development:enable --full
. - Generate a plugin :
./console generate:plugin --name="MyControllerPlugin"
. There should now be a folderplugins/MyControllerPlugin
. - And activate the created plugin under Settings => Plugins.
Let’s start creating a page
We start by using the Piwik Console to create a new page :
./console generate:controller
The command will ask you to enter the name of the plugin the controller should belong to. I will simply use the above chosen plugin name “MyControllerPlugin”. There should now be two files
plugins/MyControllerPlugin/Controller.php
andplugins/MyControllerPlugin/templates/index.twig
which both already contain an example to get you started easily :Controller.php
- class Controller extends \Piwik\Plugin\Controller
- {
- public function index()
- {
- 'answerToLife' => 42
- ));
- }
- }
and templates/index.twig
- {% extends 'dashboard.twig' %}
- {% block content %}
- <strong>Hello world!</strong>
- <br/>
- The answer to life is {{ answerToLife }}
- {% endblock %}
Note : If you are generating the Controller before Piwik 2.7.0 the example will look slightly different.
The controller action
index
assigns the view variableanswerToLife
to the view and renders the Twig templatetemplates/index.twig
. Any variable assigned this way can then be used in the view using for example{{ answerToLife }}
.Using a Twig template to generate the content of your page is actually optional : instead feel free to generate any content as desired and return a string in your controller action.
As the above template
index.twig
is extending the dashboard template the Logo as well as the top menu will automatically appear on top of your content which is defined within the blockcontent
.How to display the page within the admin
If you would like to add the admin menu on the left you have to modify the following parts :
- Extend
\Piwik\Plugin\ControllerAdmin
instead of\Piwik\Plugin\Controller
in the fileController.php
. In a future version of Piwik this step will be no longer neccessary, see #6151 - Extend the template
admin.twig
instead ofdashboard.twig
- Define a headline using an H2-element
- {% extends 'admin.twig' %}
- {% block content %}
- <h2>Hello world!</h2>
- <br/>
- The answer to life is {{ answerToLife }}
- {% endblock %}
Note : Often one needs to add a page to the admin to make a plugin configurable. We have a unified solution for this using the Settings API.
How to display a blank page
If you would like to generate a blank page that shows only your content the template should contain only your markup as follows :
- <strong>Hello world!</strong>
- <br/>
- The answer to life is {{ answerToLife }}
Predefined variables, UI components, security and accessing query parameters
In this blog post we only cover the basics to get you started. We highly recommend to read the MVC guide on our developer pages which covers some of those advanced topics. For instance you might be wondering how to securely access
$_GET
or$_POST
parameters, you might want to restrict the content of your page depending on a user role, and much more.If you would like to know how to make use of JavaScript, CSS and Less have a look at our Working with Piwik’s UI guide.
Note : How to include existing UI components such as a site selector or a date selector will be covered in a future blog post. Also, there are default variables assigned to the view depending on the context. A list of those variables that may or may not be defined is unfortunately not available yet but we will catch up on this.
Let’s add a menu item to make the page accessible
So far you have created a page but you can still not access it. Therefore we need to add a menu item to one of the Piwik menus. We start by using the Piwik Console to create a menu template :
./console generate:menu
The command will ask you to enter the name of the plugin the menu should belong to. I will use again the above chosen plugin name “MyControllerPlugin”. There should now be a file
plugins/MyControllerPlugin/Menu.php
which contains an example to get you started easily :Menu.php
- class Menu extends \Piwik\Plugin\Menu
- {
- public function configureUserMenu(MenuUser $menu)
- {
- // reuse an existing category.
- $menu->addManageItem('My User Item', $this->urlForAction('showList'));
- // or create a custom category
- $menu->addItem('My Custom Category', 'My User Item', $this->urlForDefaultAction());
- }
- }
This is only a part of the generated template since all the examples of the different menus are similar. You can add items to four menus :
configureReportingMenu
To add a new item to the reporting menu which includes all the reports like “Actions” and “Visitors”.configureAdminMenu
To add a new item to the admin menu which includes items like “User settings” and “Websites”.configureTopMenu
To add a new item to the top menu which includes items like “All Websites” and “Logout”.configureUserMenu
To add a new item to the user menu which is accessible when clicking on the username on the top right.
In this blog post we will add a new item to the user menu and to do so we adjust the generated template like this :
- class Menu extends \Piwik\Plugin\Menu
- {
- public function configureUserMenu(MenuUser $menu)
- {
- $menu->addManageItem('My User Item', $this->urlForAction($method = 'index'), $orderId = 30);
- }
- }
That’s it. This will add a menu item named “My User Item” to the “Manage” section of the user menu. When a user chooses the menu item, the “index” method of your controller will be executed and your previously created page will be first rendered and then displayed. Optionally, you can define an order to influence the position of the menu item within the manage section. Following this example you can add an item to any menu for any action. I think you get the point !
Note : In Piwik 2.6.0 and before the above example would look like this :
- class Menu extends \Piwik\Plugin\Menu
- {
- public function configureUserMenu(MenuUser $menu)
- {
- $menu->addManageItem('My User Item', array($module = 'MyControllerPlugin', $action = 'index'), $orderId = 30);
- }
- }
How to test a page
After you have created your page you are surely wondering how to test it. A controller should be usually very simple as it is only the connector between model and view. Therefore, we do usually not create unit or integration test for controllers and for the view less than ever. Instead we would create a UI test that takes a screenshot of your page and compares it with an expected screenshot. Luckily, there is already a section UI tests in our Automated tests guide.
Publishing your Plugin on the Marketplace
In case you want to share your page with other Piwik users you can do this by pushing your plugin to a public GitHub repository and creating a tag. Easy as that. Read more about how to distribute a plugin.
Advanced features
Isn’t it easy to create a page ? We never even created a file ! Of course, based on our API design principle “The complexity of our API should never exceed the complexity of your use case.” you can accomplish more if you want : You can make use of Vanilla JavaScript, jQuery, AngularJS, Less and CSS, you can reuse UI components, you can access query parameters and much more.
Would you like to know more about this ? Go to our MVC (Model-View-Controller) and Working with Piwik’s UI guides in the Piwik Developer Zone.
If you have any feedback regarding our APIs or our guides in the Developer Zone feel free to send it to us.
-
How to add new pages and menu items to Piwik – Introducing the Piwik Platform
11 septembre 2014, par Thomas Steur — DevelopmentThis is the next post of our blog series where we introduce the capabilities of the Piwik platform (our previous post was How to create a widget). This time you’ll learn how to extend Piwik by adding new pages and menu items. For this tutorial you will need to have basic knowledge of PHP and optionally of Twig which is the template engine we use.
What can be displayed in a page ?
To make it short : You can display any corporate related content, key metrics, news, help pages, custom reports, contact details, information about your server, forms to manage any data and anything else.
Getting started
In this series of posts, we assume that you have already set up your development environment. If not, visit the Piwik Developer Zone where you’ll find the tutorial Setting up Piwik.
To summarize the things you have to do to get setup :
- Install Piwik (for instance via git).
- Activate the developer mode :
./console development:enable --full
. - Generate a plugin :
./console generate:plugin --name="MyControllerPlugin"
. There should now be a folderplugins/MyControllerPlugin
. - And activate the created plugin under Settings => Plugins.
Let’s start creating a page
We start by using the Piwik Console to create a new page :
./console generate:controller
The command will ask you to enter the name of the plugin the controller should belong to. I will simply use the above chosen plugin name “MyControllerPlugin”. There should now be two files
plugins/MyControllerPlugin/Controller.php
andplugins/MyControllerPlugin/templates/index.twig
which both already contain an example to get you started easily :Controller.php
- class Controller extends \Piwik\Plugin\Controller
- {
- public function index()
- {
- 'answerToLife' => 42
- ));
- }
- }
and templates/index.twig
- {% extends 'dashboard.twig' %}
- {% block content %}
- <strong>Hello world!</strong>
- <br/>
- The answer to life is {{ answerToLife }}
- {% endblock %}
Note : If you are generating the Controller before Piwik 2.7.0 the example will look slightly different.
The controller action
index
assigns the view variableanswerToLife
to the view and renders the Twig templatetemplates/index.twig
. Any variable assigned this way can then be used in the view using for example{{ answerToLife }}
.Using a Twig template to generate the content of your page is actually optional : instead feel free to generate any content as desired and return a string in your controller action.
As the above template
index.twig
is extending the dashboard template the Logo as well as the top menu will automatically appear on top of your content which is defined within the blockcontent
.How to display the page within the admin
If you would like to add the admin menu on the left you have to modify the following parts :
- Extend
\Piwik\Plugin\ControllerAdmin
instead of\Piwik\Plugin\Controller
in the fileController.php
. In a future version of Piwik this step will be no longer neccessary, see #6151 - Extend the template
admin.twig
instead ofdashboard.twig
- Define a headline using an H2-element
- {% extends 'admin.twig' %}
- {% block content %}
- <h2>Hello world!</h2>
- <br/>
- The answer to life is {{ answerToLife }}
- {% endblock %}
Note : Often one needs to add a page to the admin to make a plugin configurable. We have a unified solution for this using the Settings API.
How to display a blank page
If you would like to generate a blank page that shows only your content the template should contain only your markup as follows :
- <strong>Hello world!</strong>
- <br/>
- The answer to life is {{ answerToLife }}
Predefined variables, UI components, security and accessing query parameters
In this blog post we only cover the basics to get you started. We highly recommend to read the MVC guide on our developer pages which covers some of those advanced topics. For instance you might be wondering how to securely access
$_GET
or$_POST
parameters, you might want to restrict the content of your page depending on a user role, and much more.If you would like to know how to make use of JavaScript, CSS and Less have a look at our Working with Piwik’s UI guide.
Note : How to include existing UI components such as a site selector or a date selector will be covered in a future blog post. Also, there are default variables assigned to the view depending on the context. A list of those variables that may or may not be defined is unfortunately not available yet but we will catch up on this.
Let’s add a menu item to make the page accessible
So far you have created a page but you can still not access it. Therefore we need to add a menu item to one of the Piwik menus. We start by using the Piwik Console to create a menu template :
./console generate:menu
The command will ask you to enter the name of the plugin the menu should belong to. I will use again the above chosen plugin name “MyControllerPlugin”. There should now be a file
plugins/MyControllerPlugin/Menu.php
which contains an example to get you started easily :Menu.php
- class Menu extends \Piwik\Plugin\Menu
- {
- public function configureUserMenu(MenuUser $menu)
- {
- // reuse an existing category.
- $menu->addManageItem('My User Item', $this->urlForAction('showList'));
- // or create a custom category
- $menu->addItem('My Custom Category', 'My User Item', $this->urlForDefaultAction());
- }
- }
This is only a part of the generated template since all the examples of the different menus are similar. You can add items to four menus :
configureReportingMenu
To add a new item to the reporting menu which includes all the reports like “Actions” and “Visitors”.configureAdminMenu
To add a new item to the admin menu which includes items like “User settings” and “Websites”.configureTopMenu
To add a new item to the top menu which includes items like “All Websites” and “Logout”.configureUserMenu
To add a new item to the user menu which is accessible when clicking on the username on the top right.
In this blog post we will add a new item to the user menu and to do so we adjust the generated template like this :
- class Menu extends \Piwik\Plugin\Menu
- {
- public function configureUserMenu(MenuUser $menu)
- {
- $menu->addManageItem('My User Item', $this->urlForAction($method = 'index'), $orderId = 30);
- }
- }
That’s it. This will add a menu item named “My User Item” to the “Manage” section of the user menu. When a user chooses the menu item, the “index” method of your controller will be executed and your previously created page will be first rendered and then displayed. Optionally, you can define an order to influence the position of the menu item within the manage section. Following this example you can add an item to any menu for any action. I think you get the point !
Note : In Piwik 2.6.0 and before the above example would look like this :
- class Menu extends \Piwik\Plugin\Menu
- {
- public function configureUserMenu(MenuUser $menu)
- {
- $menu->addManageItem('My User Item', array($module = 'MyControllerPlugin', $action = 'index'), $orderId = 30);
- }
- }
How to test a page
After you have created your page you are surely wondering how to test it. A controller should be usually very simple as it is only the connector between model and view. Therefore, we do usually not create unit or integration test for controllers and for the view less than ever. Instead we would create a UI test that takes a screenshot of your page and compares it with an expected screenshot. Luckily, there is already a section UI tests in our Automated tests guide.
Publishing your Plugin on the Marketplace
In case you want to share your page with other Piwik users you can do this by pushing your plugin to a public GitHub repository and creating a tag. Easy as that. Read more about how to distribute a plugin.
Advanced features
Isn’t it easy to create a page ? We never even created a file ! Of course, based on our API design principle “The complexity of our API should never exceed the complexity of your use case.” you can accomplish more if you want : You can make use of Vanilla JavaScript, jQuery, AngularJS, Less and CSS, you can reuse UI components, you can access query parameters and much more.
Would you like to know more about this ? Go to our MVC (Model-View-Controller) and Working with Piwik’s UI guides in the Piwik Developer Zone.
If you have any feedback regarding our APIs or our guides in the Developer Zone feel free to send it to us.
-
ffmpeg error when using non root user
29 août 2014, par mkernI have installed ffmpeg and it works perfect if you are root or using sudo but it errors out when trying to use it as a non-root user. I have performed the same install on a test VPS and it installs without issue so it appears to be isolated to this cPanel server. I haven’t been able to identify why.
Non-Root :
> ffmpeg -v debug -i 1.mov 1.avi ffmpeg version N-65949-g0ddb051
> Copyright (c) 2000-2014 the FFmpeg developers built on Aug 28 2014
> 11:39:47 with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-4)
> configuration: --enable-gpl --enable-libmp3lame --enable-libvorbis
> --enable-libvpx --enable-libx264 libavutil 54. 7.100 / 54. 7.100 libavcodec 56. 0.101 / 56. 0.101 libavformat 56. 3.100 / 56. 3.100 libavdevice 56. 0.100 / 56. 0.100 libavfilter 5. 0.103 / 5. 0.103 libswscale 3. 0.100 /
> 3. 0.100 libswresample 1. 1.100 / 1. 1.100 libpostproc 53. 0.100 / 53. 0.100 Splitting the commandline. Reading option '-v' ... matched as option 'v' (set logging level) with argument 'debug'.
> Reading option '-i' ... matched as input file with argument '1.mov'.
> Reading option '1.avi' ... matched as output file. Finished splitting
> the commandline. Parsing a group of options: global . Applying option
> v (set logging level) with argument debug. Successfully parsed a group
> of options. Parsing a group of options: input file 1.mov. Successfully
> parsed a group of options. Opening an input file: 1.mov.
> [mov,mp4,m4a,3gp,3g2,mj2 @ 0x348fc20] Format mov,mp4,m4a,3gp,3g2,mj2
> probed with size=2048 and score=100 [mov,mp4,m4a,3gp,3g2,mj2 @
> 0x348fc20] ISO: File Type Major Brand: qt [mov,mp4,m4a,3gp,3g2,mj2 @
> 0x348fc20] Before avformat_find_stream_info() pos: 698348 bytes
> read:39602 seeks:1 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x348fc20] All info
> found [mov,mp4,m4a,3gp,3g2,mj2 @ 0x348fc20] After
> avformat_find_stream_info() pos: 169190 bytes read:2333362 seeks:67
> frames:148 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '1.mov':
> Metadata:
> major_brand : qt
> minor_version : 0
> compatible_brands: qt
> creation_time : 2014-06-05 04:40:27
> model : iPhone 5
> model-eng : iPhone 5
> encoder : 7.1.1
> encoder-eng : 7.1.1
> date : 2014-06-04T21:40:27-0700
> date-eng : 2014-06-04T21:40:27-0700
> make : Apple
> make-eng : Apple Duration: 00:00:07.15, start: 0.000023, bitrate: 781 kb/s
> Stream #0:0(und), 41, 1/600: Video: h264 (Baseline) (avc1 / 0x31637661), yuv420p(tv, smpte170m), 480x360, 1/1200, 710 kb/s, 29.09
> fps, 600 tbr, 600 tbn, 1200 tbc (default)
> Metadata:
> rotate : 90
> creation_time : 2014-06-05 04:40:27
> handler_name : Core Media Data Handler
> encoder : H.264
> Side data:
> displaymatrix: rotation of -90.00 degrees
> Stream #0:1(und), 107, 1/44100: Audio: aac (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 63 kb/s (default)
> Metadata:
> creation_time : 2014-06-05 04:40:27
> handler_name : Core Media Data Handler Successfully opened the file. Parsing a group of options: output file 1.avi. Successfully
> parsed a group of options. Opening an output file: 1.avi. Successfully
> opened the file. detected 24 logical cores [graph 0 input from stream
> 0:0 @ 0x34aa3a0] Setting 'video_size' to value '480x360' [graph 0
> input from stream 0:0 @ 0x34aa3a0] Setting 'pix_fmt' to value '0'
> [graph 0 input from stream 0:0 @ 0x34aa3a0] Setting 'time_base' to
> value '1/600' [graph 0 input from stream 0:0 @ 0x34aa3a0] Setting
> 'pixel_aspect' to value '0/1' [graph 0 input from stream 0:0 @
> 0x34aa3a0] Setting 'sws_param' to value 'flags=2' [graph 0 input from
> stream 0:0 @ 0x34aa3a0] Setting 'frame_rate' to value '320/11' [graph
> 0 input from stream 0:0 @ 0x34aa3a0] w:480 h:360 pixfmt:yuv420p
> tb:1/600 fr:320/11 sar:0/1 sws_param:flags=2 [format @ 0x3496b00]
> compat: called with args=[yuv420p] [format @ 0x3496b00] Setting
> 'pix_fmts' to value 'yuv420p' [AVFilterGraph @ 0x348f320]
> query_formats: 4 queried, 3 merged, 0 already done, 0 delayed
> [AVFilterGraph @ 0x34bbe60] Error initializing threading.
> [AVFilterGraph @ 0x34bbe60] Error creating filter 'anull' Error
> opening filters! [AVIOContext @ 0x34967c0] Statistics: 0 seeks, 0
> writeouts [AVIOContext @ 0x348f1e0] Statistics: 2333362 bytes read, 67
> seeks[AVFilterGraph @ 0x34bbe60] Error initializing threading.
[AVFilterGraph @ 0x34bbe60] Error creating filter ’anull’ Error
opening filters !As ROOT :
ffmpeg -v verbose -i 1.mov 1.avi
ffmpeg version N-65949-g0ddb051 Copyright (c) 2000-2014 the FFmpeg developers
built on Aug 28 2014 11:39:47 with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-4)
configuration: --enable-gpl --enable-libmp3lame --enable-libvorbis --enable-libvpx --enable-libx264
libavutil 54. 7.100 / 54. 7.100
libavcodec 56. 0.101 / 56. 0.101
libavformat 56. 3.100 / 56. 3.100
libavdevice 56. 0.100 / 56. 0.100
libavfilter 5. 0.103 / 5. 0.103
libswscale 3. 0.100 / 3. 0.100
libswresample 1. 1.100 / 1. 1.100
libpostproc 53. 0.100 / 53. 0.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '1.mov':
Metadata:
major_brand : qt
minor_version : 0
compatible_brands: qt
creation_time : 2014-06-05 04:40:27
model : iPhone 5
model-eng : iPhone 5
encoder : 7.1.1
encoder-eng : 7.1.1
date : 2014-06-04T21:40:27-0700
date-eng : 2014-06-04T21:40:27-0700
make : Apple
make-eng : Apple
Duration: 00:00:07.15, start: 0.000023, bitrate: 781 kb/s
Stream #0:0(und): Video: h264 (Baseline) (avc1 / 0x31637661), yuv420p(tv, smpte170m), 480x360, 710 kb/s, 29.09 fps, 600 tbr, 600 tbn, 1200 tbc (default)
Metadata:
rotate : 90
creation_time : 2014-06-05 04:40:27
handler_name : Core Media Data Handler
encoder : H.264
Side data:
displaymatrix: rotation of -90.00 degrees
Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 63 kb/s (default)
Metadata:
creation_time : 2014-06-05 04:40:27
handler_name : Core Media Data Handler
[graph 0 input from stream 0:0 @ 0x27ed3a0] w:480 h:360 pixfmt:yuv420p tb:1/600 fr:320/11 sar:0/1 sws_param:flags=2
[graph 1 input from stream 0:1 @ 0x2800700] tb:1/44100 samplefmt:fltp samplerate:44100 chlayout:0x4
Output #0, avi, to '1.avi':
Metadata:
major_brand : qt
minor_version : 0
compatible_brands: qt
make-eng : Apple
model : iPhone 5
model-eng : iPhone 5
make : Apple
ISFT : Lavf56.3.100
ICRD : 2014-06-04T21:40:27-0700
date-eng : 2014-06-04T21:40:27-0700
Stream #0:0(und): Video: mpeg4 (FMP4 / 0x34504D46), yuv420p, 480x360, q=2-31, 200 kb/s, 29.09 fps, 29.09 tbn, 29.09 tbc (default)
Metadata:
rotate : 90
creation_time : 2014-06-05 04:40:27
handler_name : Core Media Data Handler
encoder : Lavc56.0.101 mpeg4
Stream #0:1(und): Audio: mp3 (libmp3lame) (U[0][0][0] / 0x0055), 44100 Hz, mono, fltp (default)
Metadata:
creation_time : 2014-06-05 04:40:27
handler_name : Core Media Data Handler
encoder : Lavc56.0.101 libmp3lame
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> mpeg4 (native))
Stream #0:1 -> #0:1 (aac (native) -> mp3 (libmp3lame))
Press [q] to stop, [?] for help
*** dropping frame 79 from stream 0 at ts 80
*** dropping frame 113 from stream 0 at ts 114
*** dropping frame 145 from stream 0 at ts 146
*** dropping frame 177 from stream 0 at ts 178
No more output streams to write to, finishing.
frame= 204 fps=0.0 q=27.2 Lsize= 348kB time=00:00:07.15 bitrate= 398.4kbits/s dup=0 drop=4
video:271kB audio:56kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 6.560985%
Input file #0 (1.mov):
Input stream #0:0 (video): 208 packets read (634624 bytes); 208 frames decoded;
Input stream #0:1 (audio): 308 packets read (56854 bytes); 308 frames decoded (315392 samples);
Total: 516 packets (691478 bytes) demuxed
Output file #0 (1.avi):
Output stream #0:0 (video): 204 frames encoded; 204 packets muxed (276993 bytes);
Output stream #0:1 (audio): 274 frames encoded (315392 samples); 275 packets muxed (57469 bytes);
Total: 479 packets (334462 bytes) muxedstrace and strace -e outputs :
strace non root :579 clone(child_stack=0x7fd3bfd07ff0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS| CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7fd3bfd089d0, tls=0x7fd3bfd08700, child_tidptr=0x7fd3bfd089d0) = 3 2637
580 mmap(NULL, 8392704, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7fd3bed07000
581 mprotect(0x7fd3bed07000, 4096, PROT_NONE) = 0
582 clone(child_stack=0x7fd3bf506ff0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS| CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7fd3bf5079d0, tls=0x7fd3bf507700, child_tidptr=0x7fd3bf5079d0) = - 1 EAGAIN (Resource temporarily unavailable)
583 futex(0x253b420, FUTEX_WAKE_PRIVATE, 1) = 1
584 futex(0x253b3f4, FUTEX_CMP_REQUEUE_PRIVATE, 1, 2147483647, 0x253b420, 4) = 2
585 futex(0x253b420, FUTEX_WAKE_PRIVATE, 1) = 1
586 futex(0x7fd3c2d0e9d0, FUTEX_WAIT, 32631, NULL) = 0
587 munmap(0x7fd3bed07000, 8392704) = 0
588 munmap(0x7fd3c250e000, 8392704) = 0
589 munmap(0x7fd3c1d0d000, 8392704) = 0
590 munmap(0x7fd3c150c000, 8392704) = 0
591 write(2, "\33[1;32m[AVFilterGraph @ 0x253b0a"..., 39[AVFilterGraph @ 0x253b0a0] ) = 39
592 write(2, "\33[1;31mError initializing thread"..., 41Error initializing threading.
593 ) = 41
594 write(2, "\33[1;32m[AVFilterGraph @ 0x253b0a"..., 39[AVFilterGraph @ 0x253b0a0] ) = 39
595 write(2, "\33[1;31mError creating filter 'an"..., 41Error creating filter 'anull'
596 ) = 41
597 write(2, "\33[4;31mError opening filters!\n\33["..., 34Error opening filters!
598 ) = 34strace -e non root :
strace -e open ffmpeg -i 1.mov 5.avi
open("/etc/ld.so.cache", O_RDONLY) = 3
open("/lib64/libasound.so.2", O_RDONLY) = 3
open("/usr/lib64/libSDL-1.2.so.0", O_RDONLY) = 3
open("/lib64/libpthread.so.0", O_RDONLY) = 3
open("/usr/lib64/libx264.so.142", O_RDONLY) = 3
open("/usr/lib64/libvpx.so.0", O_RDONLY) = 3
open("/usr/local/lib/libvorbisenc.so.2", O_RDONLY) = 3
open("/usr/local/lib/libvorbis.so.0", O_RDONLY) = 3
open("/usr/local/lib/libmp3lame.so.0", O_RDONLY) = 3
open("/lib64/libm.so.6", O_RDONLY) = 3
open("/lib64/libbz2.so.1", O_RDONLY) = 3
open("/usr/local/lib/libz.so.1", O_RDONLY) = 3
open("/lib64/librt.so.1", O_RDONLY) = 3
open("/lib64/libc.so.6", O_RDONLY) = 3
open("/lib64/libdl.so.2", O_RDONLY) = 3
open("/usr/local/lib/libogg.so.0", O_RDONLY) = 3
ffmpeg version N-65949-g0ddb051 Copyright (c) 2000-2014 the FFmpeg developers
built on Aug 28 2014 11:39:47 with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-4)
configuration: --enable-gpl --enable-libmp3lame --enable-libvorbis --enable-libvpx --enable-libx264
libavutil 54. 7.100 / 54. 7.100
libavcodec 56. 0.101 / 56. 0.101
libavformat 56. 3.100 / 56. 3.100
libavdevice 56. 0.100 / 56. 0.100
libavfilter 5. 0.103 / 5. 0.103
libswscale 3. 0.100 / 3. 0.100
libswresample 1. 1.100 / 1. 1.100
libpostproc 53. 0.100 / 53. 0.100
open("1.mov", O_RDONLY|O_CLOEXEC) = 3
open("/etc/localtime", O_RDONLY) = 4
open("/proc/meminfo", O_RDONLY|O_CLOEXEC) = 4
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '1.mov':
Metadata:
major_brand : qt
minor_version : 0
compatible_brands: qt
creation_time : 2014-06-05 04:40:27
model : iPhone 5
model-eng : iPhone 5
encoder : 7.1.1
encoder-eng : 7.1.1
date : 2014-06-04T21:40:27-0700
date-eng : 2014-06-04T21:40:27-0700
make : Apple
make-eng : Apple
Duration: 00:00:07.15, start: 0.000023, bitrate: 781 kb/s
Stream #0:0(und): Video: h264 (Baseline) (avc1 / 0x31637661), yuv420p(tv, smpte170m), 480x360, 710 kb/s, 29.09 fps, 600 tbr, 600 tbn, 1200 tbc (default)
Metadata:
rotate : 90
creation_time : 2014-06-05 04:40:27
handler_name : Core Media Data Handler
encoder : H.264
Side data:
displaymatrix: rotation of -90.00 degrees
Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 63 kb/s (default)
Metadata:
creation_time : 2014-06-05 04:40:27
handler_name : Core Media Data Handler
open("5.avi", O_WRONLY|O_CREAT|O_TRUNC|O_CLOEXEC, 0666) = 4
[AVFilterGraph @ 0x26ff4a0] Error initializing threading.
[AVFilterGraph @ 0x26ff4a0] Error creating filter 'anull'
Error opening filters!strace root :
579 clone(child_stack=0x7f4eb7c34ff0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS| CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7f4eb7c359d0, tls=0x7f4eb7c35700, child_tidptr=0x7f4eb7c359d0) = 3 383
580 mmap(NULL, 8392704, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f4eb6c34000
581 mprotect(0x7f4eb6c34000, 4096, PROT_NONE) = 0
582 clone(child_stack=0x7f4eb7433ff0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS| CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7f4eb74349d0, tls=0x7f4eb7434700, child_tidptr=0x7f4eb74349d0) = 3 384
583 mmap(NULL, 8392704, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f4eb6433000
584 mprotect(0x7f4eb6433000, 4096, PROT_NONE) = 0
585 clone(child_stack=0x7f4eb6c32ff0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS| CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7f4eb6c339d0, tls=0x7f4eb6c33700, child_tidptr=0x7f4eb6c339d0) = 3 385
586 mmap(NULL, 8392704, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f4eb5c32000
587 mprotect(0x7f4eb5c32000, 4096, PROT_NONE) = 0
588 clone(child_stack=0x7f4eb6431ff0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS| CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7f4eb64329d0, tls=0x7f4eb6432700, child_tidptr=0x7f4eb64329d0) = 3 386
589 mmap(NULL, 8392704, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f4eb5431000
590 mprotect(0x7f4eb5431000, 4096, PROT_NONE) = 0
591 clone(child_stack=0x7f4eb5c30ff0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS| CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7f4eb5c319d0, tls=0x7f4eb5c31700, child_tidptr=0x7f4eb5c319d0) = 3 387
592 mmap(NULL, 8392704, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f4eb4c30000
593 mprotect(0x7f4eb4c30000, 4096, PROT_NONE) = 0
594 clone(child_stack=0x7f4eb542fff0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS| CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7f4eb54309d0, tls=0x7f4eb5430700, child_tidptr=0x7f4eb54309d0) = 3 388
595 mmap(NULL, 8392704, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f4eb442f000
596 mprotect(0x7f4eb442f000, 4096, PROT_NONE) = 0
597 clone(child_stack=0x7f4eb4c2eff0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS| CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7f4eb4c2f9d0, tls=0x7f4eb4c2f700, child_tidptr=0x7f4eb4c2f9d0) = 3 389
598 mmap(NULL, 8392704, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f4eb3c2e000strace -e root :
strace -e open ffmpeg -i 1.mov 5.avi
open("/etc/ld.so.cache", O_RDONLY) = 3
open("/lib64/libasound.so.2", O_RDONLY) = 3
open("/usr/lib64/libSDL-1.2.so.0", O_RDONLY) = 3
open("/lib64/libpthread.so.0", O_RDONLY) = 3
open("/usr/lib64/libx264.so.142", O_RDONLY) = 3
open("/usr/lib64/libvpx.so.0", O_RDONLY) = 3
open("/usr/local/lib/libvorbisenc.so.2", O_RDONLY) = 3
open("/usr/local/lib/libvorbis.so.0", O_RDONLY) = 3
open("/usr/local/lib/libmp3lame.so.0", O_RDONLY) = 3
open("/lib64/libm.so.6", O_RDONLY) = 3
open("/lib64/libbz2.so.1", O_RDONLY) = 3
open("/usr/local/lib/libz.so.1", O_RDONLY) = 3
open("/lib64/librt.so.1", O_RDONLY) = 3
open("/lib64/libc.so.6", O_RDONLY) = 3
open("/lib64/libdl.so.2", O_RDONLY) = 3
open("/usr/local/lib/libogg.so.0", O_RDONLY) = 3
ffmpeg version N-65957-gc6a3b00 Copyright (c) 2000-2014 the FFmpeg developers
built on Aug 28 2014 13:37:32 with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-4)
configuration: --enable-gpl --enable-libmp3lame --enable-libvorbis --enable-libvpx --enable-libx264 --prefix=/usr --libdir=/usr/lib64 --enable-gpl --enable-libmp3lame --enable-libvorbis --enable-libvpx --enable-libx264
libavutil 54. 7.100 / 54. 7.100
libavcodec 56. 0.101 / 56. 0.101
libavformat 56. 3.100 / 56. 3.100
libavdevice 56. 0.100 / 56. 0.100
libavfilter 5. 0.103 / 5. 0.103
libswscale 3. 0.100 / 3. 0.100
libswresample 1. 1.100 / 1. 1.100
libpostproc 53. 0.100 / 53. 0.100
open("1.mov", O_RDONLY|O_CLOEXEC) = 3
open("/etc/localtime", O_RDONLY) = 4
open("/proc/meminfo", O_RDONLY|O_CLOEXEC) = 4
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '1.mov':
Metadata:
major_brand : qt
minor_version : 0
compatible_brands: qt
creation_time : 2014-06-05 04:40:27
model : iPhone 5
model-eng : iPhone 5
encoder : 7.1.1
encoder-eng : 7.1.1
date : 2014-06-04T21:40:27-0700
date-eng : 2014-06-04T21:40:27-0700
make : Apple
make-eng : Apple
Duration: 00:00:07.15, start: 0.000023, bitrate: 781 kb/s
Stream #0:0(und): Video: h264 (Baseline) (avc1 / 0x31637661), yuv420p(tv, smpte170m), 480x360, 710 kb/s, 29.09 fps, 600 tbr, 600 tbn, 1200 tbc (default)
Metadata:
rotate : 90
creation_time : 2014-06-05 04:40:27
handler_name : Core Media Data Handler
encoder : H.264
Side data:
displaymatrix: rotation of -90.00 degrees
Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 63 kb/s (default)
Metadata:
creation_time : 2014-06-05 04:40:27
handler_name : Core Media Data Handler
File '5.avi' already exists. Overwrite ? [y/N] y
open("5.avi", O_WRONLY|O_CREAT|O_TRUNC|O_CLOEXEC, 0666) = 4
Output #0, avi, to '5.avi':
Metadata:
major_brand : qt
minor_version : 0
compatible_brands: qt
make-eng : Apple
model : iPhone 5
model-eng : iPhone 5
make : Apple
ISFT : Lavf56.3.100
ICRD : 2014-06-04T21:40:27-0700
date-eng : 2014-06-04T21:40:27-0700
Stream #0:0(und): Video: mpeg4 (FMP4 / 0x34504D46), yuv420p, 480x360, q=2-31, 200 kb/s, 29.09 fps, 29.09 tbn, 29.09 tbc (default)
Metadata:
rotate : 90
creation_time : 2014-06-05 04:40:27
handler_name : Core Media Data Handler
encoder : Lavc56.0.101 mpeg4
Stream #0:1(und): Audio: mp3 (libmp3lame) (U[0][0][0] / 0x0055), 44100 Hz, mono, fltp (default)
Metadata:
creation_time : 2014-06-05 04:40:27
handler_name : Core Media Data Handler
encoder : Lavc56.0.101 libmp3lame
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> mpeg4 (native))
Stream #0:1 -> #0:1 (aac (native) -> mp3 (libmp3lame))
Press [q] to stop, [?] for help
frame= 204 fps=0.0 q=27.2 Lsize= 348kB time=00:00:07.15 bitrate= 398.4kbits/s dup=0 drop=4
video:271kB audio:56kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 6.560985%