
Recherche avancée
Autres articles (74)
-
Des sites réalisés avec MediaSPIP
2 mai 2011, parCette page présente quelques-uns des sites fonctionnant sous MediaSPIP.
Vous pouvez bien entendu ajouter le votre grâce au formulaire en bas de page. -
Participer à sa traduction
10 avril 2011Vous pouvez nous aider à améliorer les locutions utilisées dans le logiciel ou à traduire celui-ci dans n’importe qu’elle nouvelle langue permettant sa diffusion à de nouvelles communautés linguistiques.
Pour ce faire, on utilise l’interface de traduction de SPIP où l’ensemble des modules de langue de MediaSPIP sont à disposition. ll vous suffit de vous inscrire sur la liste de discussion des traducteurs pour demander plus d’informations.
Actuellement MediaSPIP n’est disponible qu’en français et (...) -
MediaSPIP v0.2
21 juin 2013, parMediaSPIP 0.2 est la première version de MediaSPIP stable.
Sa date de sortie officielle est le 21 juin 2013 et est annoncée ici.
Le fichier zip ici présent contient uniquement les sources de MediaSPIP en version standalone.
Comme pour la version précédente, il est nécessaire d’installer manuellement l’ensemble des dépendances logicielles sur le serveur.
Si vous souhaitez utiliser cette archive pour une installation en mode ferme, il vous faudra également procéder à d’autres modifications (...)
Sur d’autres sites (14347)
-
ffmpeg detects a videofile path when it does not exist
17 novembre 2020, par Nejc Kejzarthis is boggling my mind. I am using ffmpeg to compress videos within the following python script :


import re
import os

kage = 'MH5'
year = '2020'
month = '11'
day = '10'

# Set output dir; create it if it doesn't exist yet
downsampled_video_dir = home_data_dir + f'piCamera/downsampled_videos/{kage}/{year}/{month}/{day}/'
Path(downsampled_video_dir).mkdir(parents=True, exist_ok=True)
 
for i, video in enumerate(videos):
 # Set ffmpeg video compression terminal command and output directory for downsampled videos
 video_name = re.findall('\d+_\d+.mp4', video)[0]
 ds_output = downsampled_video_dir + video_name
 compress_command = f"ffmpeg -i {video} -vf scale={video_res[0]}:-2 {ds_output}"
 
 # Run ffmpeg video compression
 os.system(compress_command)



videos
is a list of full video paths of the videos that I wish to compress, andds_output
is a full path of where to write the compressed video.video_res[0]
contains the desired height of the video with the following-2
automatically calculating the width so that the aspect ratio is preserved.

For some reason when running this, ffmpeg detects some of the videos in the output directory as already existing and asks if I wish to overwrite them. The videos of course aren't there yet, so when I pass
y
, ffmpeg complains that no such file exists. Here is an example output for one of the problematic videos :

ffmpeg -y -i '/home/piCamera/MH4/2020/11/10/20201110_085451.mp4' -vf scale=400:300 '/home/piCamera/downsampled_videos/MH4/2020/11/10/20201110_085451.mp4'
ffmpeg version 4.2.4-1ubuntu0.1 Copyright (c) 2000-2020 the FFmpeg developers
 built with gcc 9 (Ubuntu 9.3.0-10ubuntu2)
 configuration: --prefix=/usr --extra-version=1ubuntu0.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-nvenc --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
 libavutil 56. 31.100 / 56. 31.100
 libavcodec 58. 54.100 / 58. 54.100
 libavformat 58. 29.100 / 58. 29.100
 libavdevice 58. 8.100 / 58. 8.100
 libavfilter 7. 57.100 / 7. 57.100
 libavresample 4. 0. 0 / 4. 0. 0
 libswscale 5. 5.100 / 5. 5.100
 libswresample 3. 5.100 / 3. 5.100
 libpostproc 55. 5.100 / 55. 5.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/home/piCamera/MH4/2020/11/10/20201110_085451.mp4':
 Metadata:
 major_brand : isom
 minor_version : 512
 compatible_brands: isomiso2avc1mp41
 encoder : Lavf58.20.100
 Duration: 00:03:58.84, start: 0.000000, bitrate: 1190 kb/s
 Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 960x720, 1190 kb/s, 5 fps, 5 tbr, 10240 tbn, 20480 tbc (default)
 Metadata:
 handler_name : VideoHandler
/home/piCamera/downsampled_videos/MH4/2020/11/10/20201110_085451.mp4: No such file or directory



This happens with about 3 videos out of 53, the rest run normally. I've tried restarting the terminal, deleted the whole created
downsampled_video_dir
and run again, but no matter how many times I restart, the same videos are the problem. The only thing that appears to help is if I change the output directory name. Any ideas of why this strange error is happening ?

This is being run on Ubuntu20 with python3.7.9 in a Jupyter Notebook.


Many, many thanks for all the insights !


-
App crashes on Google TV when playing MP4 videos
14 avril 2023, par fabI am having problems with an Android app that was developed for me. The issue occurs when playing MP4 videos ; the app plays them correctly, but at some point, the app crashes and exits. I have been reviewing errors using Android Studio, and the only error that appears is the following :


2023-04-14 00:45:45.846 7221-7650 SurfaceUtils com.app.X D connecting to surface 0xbf0d2808, reason connectToSurface(reconnect) 2023-04-14 00:45:45.848 7221-7654 ACodec com.app.X E [OMX.amlogic.avc.decoder.awesome2] setPortMode on output to DynamicANWBuffer failed w/ err -2147483648 2023-04-14 00:45:45.855 7221-7334 com.app.X com.app.X I get_buffer_dataspace_setting get_metadata return 0 dataspace:268500992 2023-04-14 00:45:45.875 7221-7334 NdkImageReader com.app.X D acquireImageLocked: Overriding buffer format YUV_420_888 to 0x11. 2023-04-14 00:45:45.877 7221-7334 com.app.X com.app.X I get_buffer_dataspace_setting get_metadata return 0 dataspace:268500992 2023-04-14 00:45:45.887 7221-7280 MediaCodec com.app.X D keep callback message for reclaim 2023-04-14 00:45:45.896 7221-7334 com.app.X com.app.X I get_buffer_dataspace_setting get_metadata return 0 dataspace:268500992 2023-04-14 00:45:45.914 7221-7334 com.app.X com.app.X I get_buffer_dataspace_setting get_metadata return 0 dataspace:268500992 2023-04-14 00:45:45.915 7221-7654 SurfaceUtils com.app.X D disconnecting from surface 0xbf0d2808, reason setNativeWindowSizeFormatAndUsage 2023-04-14 00:45:45.915 7221-7654 SurfaceUtils com.app.X D connecting to surface 0xbf0d2808, reason setNativeWindowSizeFormatAndUsage 2023-04-14 00:45:45.915 7221-7654 SurfaceUtils com.app.X D set up nativeWindow 0xbf0d2808 for 1920x1080, color 0x11, rotation 0, usage 0x402b00 2023-04-14 00:45:45.915 7221-7654 ACodec com.app.X W [OMX.amlogic.avc.decoder.awesome2] setting nBufferCountActual to 9 failed: -1010 2023-04-14 00:45:45.922 7221-7654 ion com.app.X E ioctl c0084905 failed with code -1: Invalid argument 2023-04-14 00:45:45.928 7221-7654 ion com.app.X E ioctl c0084905 failed with code -1: Invalid argument 2023-04-14 00:45:45.943 7221-7334 com.app.X com.app.X I get_buffer_dataspace_setting get_metadata return 0 dataspace:268500992 2023-04-14 00:45:45.954 7221-7654 ion com.app.X E ioctl c0084905 failed with code -1: Invalid argument 2023-04-14 00:45:45.960 7221-7654 ion com.app.X E ioctl c0084905 failed with code -1: Invalid argument 2023-04-14 00:45:45.962 7221-7654 ion com.app.X E ioctl c0084905 failed with code -1: Invalid argument 2023-04-14 00:45:45.969 7221-7654 ion com.app.X E ioctl c0084905 failed with code -1: Invalid argument 2023-04-14 00:45:45.979 7221-7654 ion com.app.X E ioctl c0084905 failed with code -1: Invalid argument 2023-04-14 00:45:45.986 7221-7654 ion com.app.X E ioctl c0084905 failed with code -1: Invalid argument


One clarification is that the app is built with IONIC and Angular.


The FFMPEG code that converts the video in golang is as follows :


func ConvertVideoFile(inputFileName, outputFileName string) error { err := ffmpeg_go.Input(inputFileName). Filter("scale", ffmpeg_go.Args{"800:600"}). Output(outputFileName, ffmpeg_go.KwArgs{ "c:v": "libx264", "profile:v": "high", "level": "3.1", "pix_fmt": "yuv420p", "preset": "medium", "crf": "23", "b:v": "782k", "r": "25", "c:a": "aac", "b:a": "2k", "ar": "48000", "movflags": "+faststart", "max_muxing_queue_size": "1024", }, ). OverWriteOutput().ErrorToStdOut().Run() return err }


Remove this error 2023-04-14 00:45:45.848 7221-7654 ACodec com.app.X E [OMX.amlogic.avc.decoder.awesome2


-
Programming Language Levels
20 mai 2011, par Multimedia Mike — ProgrammingI’ve been doing this programming thing for some 20 years now. Things sure do change. One change I ponder from time to time is the matter of programming language levels. Allow me to explain.
The 1990s
When I first took computer classes in the early 1990s, my texts would classify computer languages into 3 categories, or levels. The lower the level, the closer to the hardware ; the higher the level, the more abstract (and presumably, easier to use). I recall that the levels went something like this :- High level : Pascal, BASIC, Logo, Fortran
- Medium level : C, Forth
- Low level : Assembly language
Keep in mind that these were the same texts which took the time to explain the history of computers from mainframes -> minicomputers -> a relatively recent phenomenon called microcomputers or "PCs".
Somewhere in the mid-late 1990s, when I was at university, I was introduced to a new tier :
- Very high level : Perl, shell scripting
I think there was some debate among my peers about whether C++ and Java were properly classified as high or very high level. The distinction between high and very high, in my observation, seemed to be that very high level languages had more complex data structures (at the very least, a hash / dictionary / associative array / key-value map) built into the language, as well as implicit memory management.
Modern Day
These days, the old hierarchy is apparently forgotten (much like minicomputers). I observe that there is generally a much simpler 2-tier classification :- Low level : C, assembly language
- High level : absolutely every other programming language in wide use today
I find myself wondering where C++ and Objective-C fit in this classification scheme. Then I remember that it doesn’t matter and this is all academic.
Relevancy
I think about this because I have pretty much stuck to low-level programming all of my life, mostly due to my interest in game and multimedia-type programming. But the trends in computing have favored many higher level languages and programming paradigms. I woke up one day and realized that the kind of work I often do — lower level stuff — is not very common.I’m not here to argue that low or high level is superior. You know I’m all about using the appropriate tool for the job. But I sometimes find myself caught between worlds, having the defend and explain one to the other.
- On one hand, it’s not unusual for the multitudes of programmers working at the high level to gasp and wonder why I or anyone else would ever use C or assembly language for anything when there are so many beautiful high level languages. I patiently explain that those languages have to be written in some other language (at first) and that they need to run on some operating system and that most assuredly won’t be written in a high level language. For further reading, I refer them to Joel Spolsky’s great essay called Back to Basics which describes why it can be useful to know at least a little bit about how the computer does what it does at the lowest levels.
- On the other hand, believe it or not, I sometimes have to defend the merits of high level languages to my low level brethren. I’ll often hear variations of, "Any program can be written in C. Using a high level language to achieve the same will create a slow and bloated solution." I try to explain that the trade-off in time to complete the programming task weighed against the often-negligible performance hit of what is often an I/O-bound operation in the first place makes it worthwhile to use the high level language for a wide variety of tasks.
Or I just ignore them. That’s actually the best strategy.