
Recherche avancée
Autres articles (95)
-
Publier sur MédiaSpip
13 juin 2013Puis-je poster des contenus à partir d’une tablette Ipad ?
Oui, si votre Médiaspip installé est à la version 0.2 ou supérieure. Contacter au besoin l’administrateur de votre MédiaSpip pour le savoir -
Que fait exactement ce script ?
18 janvier 2011, parCe script est écrit en bash. Il est donc facilement utilisable sur n’importe quel serveur.
Il n’est compatible qu’avec une liste de distributions précises (voir Liste des distributions compatibles).
Installation de dépendances de MediaSPIP
Son rôle principal est d’installer l’ensemble des dépendances logicielles nécessaires coté serveur à savoir :
Les outils de base pour pouvoir installer le reste des dépendances Les outils de développements : build-essential (via APT depuis les dépôts officiels) ; (...) -
Multilang : améliorer l’interface pour les blocs multilingues
18 février 2011, parMultilang est un plugin supplémentaire qui n’est pas activé par défaut lors de l’initialisation de MediaSPIP.
Après son activation, une préconfiguration est mise en place automatiquement par MediaSPIP init permettant à la nouvelle fonctionnalité d’être automatiquement opérationnelle. Il n’est donc pas obligatoire de passer par une étape de configuration pour cela.
Sur d’autres sites (3538)
-
The recorded video is distorted (FFMPEG)
13 décembre 2017, par No NameThe source is taken from here.
I’m initializing this :
private void initRecorder() {
Log.i(LOG_TAG, "init mFrameRecorder");
String recordedTime = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault())
.format(new Date());
mVideo = CameraHelper.getOutputMediaFile(recordedTime, CameraHelper.MEDIA_TYPE_VIDEO);
Log.i(LOG_TAG, "Output Video: " + mVideo);
mFrameRecorder = new FFmpegFrameRecorder(mVideo, videoWidth, videoHeight, 1);
mFrameRecorder.setFormat("mp4");
mFrameRecorder.setSampleRate(sampleAudioRateInHz);
mFrameRecorder.setFrameRate(frameRate);
// Use H264
mFrameRecorder.setVideoCodec(avcodec.AV_CODEC_ID_H264);
mFrameRecorder.setVideoQuality(2);
mFrameRecorder.setVideoOption("crf", "20");
mFrameRecorder.setVideoOption("preset", "superfast");
mFrameRecorder.setVideoOption("tune", "zerolatency");
Log.i(LOG_TAG, "mFrameRecorder initialize success");
}where
frameRate = 60
;And video recording :
class VideoRecordThread extends RunningThread {
@Override
public void run() {
List<string> filters = new ArrayList<>();
// Transpose
String transpose = null;
android.hardware.Camera.CameraInfo info =
new android.hardware.Camera.CameraInfo();
android.hardware.Camera.getCameraInfo(mCameraId, info);
if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
switch (info.orientation) {
case 270:
transpose = "transpose=cclock"; // Mirrored horizontally as preview display
break;
case 90:
transpose = "transpose=clock"; // Mirrored horizontally as preview display
break;
}
} else {
switch (info.orientation) {
case 270:
transpose = "transpose=cclock";
break;
case 90:
transpose = "transpose=clock";
break;
}
}
if (transpose != null) {
filters.add(transpose);
}
// Crop (only vertically)
int width = previewHeight;
int height = width * videoHeight / videoWidth;
String crop = String.format(Locale.getDefault(),"crop=%d:%d:%d:%d",
width, height,
(previewHeight - width) / 2, (previewWidth - height) / 2);
filters.add(crop);
// Scale (to designated size)
String scale = String.format(Locale.getDefault(),"scale=%d:%d", videoHeight, videoWidth);
filters.add(scale);
FFmpegFrameFilter frameFilter = new FFmpegFrameFilter(TextUtils.join(",", filters),
previewWidth, previewHeight);
frameFilter.setPixelFormat(avutil.AV_PIX_FMT_NV21);
frameFilter.setFrameRate(frameRate);
try {
frameFilter.start();
} catch (FrameFilter.Exception e) {
e.printStackTrace();
}
isRunning = true;
FrameToRecord recordedFrame;
while (isRunning || !mFrameToRecordQueue.isEmpty()) {
try {
recordedFrame = mFrameToRecordQueue.take();
} catch (InterruptedException ie) {
ie.printStackTrace();
try {
frameFilter.stop();
} catch (FrameFilter.Exception e) {
e.printStackTrace();
}
break;
}
if (mFrameRecorder != null) {
long timestamp = recordedFrame.getTimestamp();
if (timestamp > mFrameRecorder.getTimestamp()) {
mFrameRecorder.setTimestamp(timestamp);
}
long startTime = System.currentTimeMillis();
Frame filteredFrame = null;
try {
frameFilter.push(recordedFrame.getFrame());
filteredFrame = frameFilter.pull();
} catch (FrameFilter.Exception e) {
e.printStackTrace();
}
try {
mFrameRecorder.record(filteredFrame);
} catch (FFmpegFrameRecorder.Exception e) {
e.printStackTrace();
}
long endTime = System.currentTimeMillis();
long processTime = endTime - startTime;
mTotalProcessFrameTime += processTime;
Log.d(LOG_TAG, "This frame process time: " + processTime + "ms");
long totalAvg = mTotalProcessFrameTime / ++mFrameRecordedCount;
Log.d(LOG_TAG, "Avg frame process time: " + totalAvg + "ms");
}
Log.d(LOG_TAG, mFrameRecordedCount + " / " + mFrameToRecordCount);
mRecycledFrameQueue.offer(recordedFrame);
}
}
public void stopRunning() {
super.stopRunning();
if (getState() == WAITING) {
interrupt();
}
}
}
</string>The fact is that when recording video no lags(freezes) are not noticeable. After recording the video, when you look carefully, the lags are noticeable, and if you move the phone quickly when recording, then after the recording you can see the freezes, as if you have glued several GIFs.
I tried everything I could : the frame rate changed for 30, 60, 100. I changed the Video quality, pixelFormat (although I do not know why) and many things that
I did not understand. But still no use. Maybe there is someone who understands. Tell me how to correct these distortions(freezes) ?
UPD : LogCat :
> 12-13 08:51:21.987 2968-2968/io.dev.videosample
> D/FFmpegRecordActivity: Preview frame interval: 98ms
> 12-13 08:51:22.056 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 69ms
> 12-13 08:51:22.137 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 81ms
>12-13 08:51:22.205 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 68ms
>12-13 08:51:22.254 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 49ms
>12-13 08:51:22.305 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 51ms
>12-13 08:51:22.336 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 31ms
>12-13 08:51:22.454 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 118ms
>12-13 08:51:22.494 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 40ms
>12-13 08:51:22.585 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 91ms
>12-13 08:51:22.634 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 49ms
>12-13 08:51:22.720 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 86ms
>12-13 08:51:22.783 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 63ms
>12-13 08:51:22.835 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 52ms
>12-13 08:51:22.903 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 67ms
>12-13 08:51:22.983 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 81ms
>12-13 08:51:23.070 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 87ms
>12-13 08:51:23.149 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 78ms
>12-13 08:51:23.234 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 86ms
>12-13 08:51:23.312 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 78ms
>12-13 08:51:23.395 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 83ms
>12-13 08:51:23.472 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 77ms
>12-13 08:51:23.540 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 67ms
>12-13 08:51:23.627 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 88ms
>12-13 08:51:23.660 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 33ms
>12-13 08:51:23.727 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 67ms
>12-13 08:51:23.792 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 65ms
>12-13 08:51:23.874 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 82ms
>12-13 08:51:23.942 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 68ms
>12-13 08:51:23.995 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 53ms
>12-13 08:51:24.090 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 95ms
>12-13 08:51:24.139 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 49ms
>12-13 08:51:24.224 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 85ms
>12-13 08:51:24.272 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 48ms
>12-13 08:51:24.307 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 35ms
>12-13 08:51:24.371 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 64ms
>12-13 08:51:24.437 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 66ms
>12-13 08:51:24.521 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 84ms
>12-13 08:51:24.587 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 66ms
>12-13 08:51:24.636 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 49ms
>12-13 08:51:24.719 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 83ms
>12-13 08:51:24.808 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 89ms
>12-13 08:51:24.869 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 61ms
>12-13 08:51:24.905 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 36ms
>12-13 08:51:24.952 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 46ms
>12-13 08:51:25.017 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 66ms
>12-13 08:51:25.068 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 51ms
>12-13 08:51:25.102 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 34ms
>12-13 08:51:25.204 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 102ms
>12-13 08:51:25.299 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 95ms
>12-13 08:51:25.413 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 114ms
>12-13 08:51:25.481 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 68ms
>12-13 08:51:25.563 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 82ms
>12-13 08:51:25.630 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 67ms
>12-13 08:51:25.712 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 82ms
>12-13 08:51:25.761 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 49ms
>12-13 08:51:25.844 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 83ms
>12-13 08:51:25.862 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 18ms
>12-13 08:51:25.910 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 48ms
>12-13 08:51:25.946 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 36ms
>12-13 08:51:26.033 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 87ms
>12-13 08:51:26.126 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 93ms
>12-13 08:51:26.192 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 66ms
>12-13 08:51:26.225 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 33ms
>12-13 08:51:26.275 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 50ms
>12-13 08:51:26.357 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 82ms
>12-13 08:51:26.440 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 83ms
>12-13 08:51:26.522 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 82ms
>12-13 08:51:26.589 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 67ms
>12-13 08:51:26.640 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 50ms
>12-13 08:51:26.721 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 82ms
>12-13 08:51:26.826 2968-2968/io.dev.videosample D/FFmpegRecordActivity: Preview frame interval: 105ms
>12-13 08:51:28.408 1976-4266/? E/VDO_LOG: u4FrameTsInterval value is 0x411a, u4FrameTimingInfo 0xf000
>12-13 08:51:28.421 1976-4266/? E/MtkOmxVdecEx: [0xb872bb60] ERROR: query VDEC_DRV_GET_TYPE_GET_FRAME_INTERVAL failed -
Piwik 2.1 – Changes for Plugin developers
24 février 2014, par Piwik Core Team — DevelopmentThis blog post is aimed at developers of Piwik Plugins. If you are simply using Piwik and not developing plugins for Piwik, you do not need to read this post.
Piwik 2.1 will be released in a few days . This blog post will inform Piwik Plugin developers of the changes in Piwik 2.1 that may require that you update your plugin to work with this latest version.
Breaking API changes
Piwik can now handle an unlimited number of users having Super User access (#2589 #4564). In the past Piwik was limited to one Super User who was defined in the config file. From now on all users with Super User access are defined in the database the same way a regular user is. This brought some API changes but we will stay backward compatible until the first of April 2014. This gives you some time to migrate any custom plugins you may use. Although there is a layer for backward compatibility we recommend to make sure your plugin works with Piwik as soon as possible before April 1st.
List of changes
Deprecated methods
The following methods are deprecated and we recommend to use the new methods from now on. There are also some methods which won’t be replaced so make sure to adjust the logic of your plugin.
\Piwik\Piwik::isUserIsSuperUser => \Piwik\Piwik::hasUserSuperUserAccess
\Piwik\Piwik::setUserIsSuperUser => \Piwik\Piwik::setUserHasSuperUserAccess
\Piwik\Piwik::checkUserIsSuperUser => \Piwik\Piwik::checkUserHasSuperUserAccess
\Piwik\Access::isSuperUser => \Piwik\Access::hasSuperUserAccess
\Piwik\Access::checkUserIsSuperUser => \Piwik\Access::checkUserHasSuperUserAccess
\Piwik\Access::setSuperUser => \Piwik\Access::setSuperUserAccess
\FakeAccess::checkUserIsSuperUser => FakeAccess::checkUserHasSuperUserAccess
\FakeAccess::setSuperUser => FakeAccess::setSuperUserAccess
\Piwik\Piwik::isUserIsSuperUserOrTheUser => \Piwik\Piwik::hasUserSuperUserAccessOrIsTheUser
\Piwik\Piwik::checkUserIsSuperUserOrTheUser => \Piwik\Piwik::checkUserHasSuperUserAccessOrIsTheUser
\FakeAccess::getSuperUserLogin => No replacement
\Piwik\Piwik::getSuperUserLogin => No replacement, returns the userLogin of the first Super User we find in the database
\Piwik\Piwik::getSuperUserEmail => No replacement, returns an empty string from now on
\Piwik\Access::getSuperUserLogin => No replacement, returns the userLogin of the first Super User we find in the databaseConfig Super User
As mentioned, the Super User was defined in the config and you have accessed the Super User’s data either by using a convenient method like Piwik::getSuperUserLogin or directly via the Config object as follows :
\Piwik\Config::getInstance->superUser
As the config user is no longer defined in the config this will no longer work in the future. To stay backward compatible we return the first super user found in the database. This is not necessarily always the same user. So if you have used the super user login in some way in your plugin, make sure you are using the new function such as Piwik::getSuperUserLogin
Extended Auth Interface
The last change affects plugins who specify their own Authentication mechanism, for instance when using the custom LoginLDAP plugin. From now on the interface \Piwik\Auth (https://github.com/piwik/piwik/blob/master/core/Auth.php) requires the methods setTokenAuth and setLogin. There is no backward compatibility layer but we had a look at some plugins defining a custom Authentication adapter to make sure those methods are already defined there as expected.
For another example of a Login plugin, check out the LoginHttpAuth plugin on the Marketplace.
After updating the plugin
After you have made changes in your plugin to keep it compatible with Piwik 2.1, your plugin will no longer work with previous Piwik versions. Therefore you should define the minimum required version in your plugin.json file as follows :
"require": {
"piwik": ">=2.1"
}Summary
Piwik 2.1 introduces some changes in the Piwik Core APIs. This blog post explains how to modify any Plugins compatible with Piwik 2.0 to be compatible with Piwik 2.1. Thank you for taking the time to update your plugins !
Let us know if you have any feedback. Happy hacking !
PS : if you use the Web Analytics APIs and the Web Tracking APIs, we guarantee that we will support backwards compatibility of our Web APIs.
-
Evolution #4065 (Fermé) : le lien vers les articles liés à chaque document
19 décembre 2017, par b bSuper, on peut fermer :)