
Recherche avancée
Autres articles (32)
-
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 -
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 (...) -
Installation en mode ferme
4 février 2011, parLe mode ferme permet d’héberger plusieurs sites de type MediaSPIP en n’installant qu’une seule fois son noyau fonctionnel.
C’est la méthode que nous utilisons sur cette même plateforme.
L’utilisation en mode ferme nécessite de connaïtre un peu le mécanisme de SPIP contrairement à la version standalone qui ne nécessite pas réellement de connaissances spécifique puisque l’espace privé habituel de SPIP n’est plus utilisé.
Dans un premier temps, vous devez avoir installé les mêmes fichiers que l’installation (...)
Sur d’autres sites (8185)
-
Why does File upload for moving image and Audio to tmp PHP folder work on Windows but only image upload portion works on Mac using MAMP ?
31 mai 2021, par YazdanSo according to my colleague who tested this on Windows says it works perfectly fine , but in my case when I use it on a Mac with MAMP for Moodle , the image files get uploaded to the correct destination folder without an issue whereas the audio files don't move from the tmp folder to the actual destination folder and to check if this was the case ... I just changed and gave a fixed path instead of
$fileTmpLoc
and the file made it to the correct destination. Sorry I know the first half of the code isn't the main issue but I still wanted to post the whole code so one could understand it easily, moreover I am just beginning to code so please "have a bit of patience with me" . Thanks in advance


// this file contains upload function 
// checks if the file exists in server
include("../db/database.php");
require_once(dirname(__FILE__) . '/../../../config.php');
global $IP;

$ajaxdata = $_POST['mediaUpload'];

$FILENAME = $ajaxdata[1];
$IMAGE=$ajaxdata[0];
// an array to check which category the media belongs too
$animal= array("bird","cat","dog","horse","sheep","cow","elephant","bear","giraffe","zebra");
$allowedExts = array("mp3","wav");
$temp = explode(".", $_FILES["audio"]["name"]);
$extension = end($temp);



$test = $_FILES["audio"]["type"]; 


if (
 $_FILES["audio"]["type"] == "audio/wav"||
 $_FILES["audio"]["type"] == "audio/mp3"||
 $_FILES["audio"]["type"] == "audio/mpeg"
 &&
 in_array($extension, $allowedExts)
 )
 {

 // if the name detected by object detection is present in the animal array
 // then initialize target path to animal database or to others
 if (in_array($FILENAME, $animal)) 
 { 
 $image_target_dir = "image_dir/";
 $audio_target_dir = "audio_dir/";
 } 
 else
 { 
 $image_target_dir = "other_image_dir/";
 $audio_target_dir = "other_audio_dir/";
 } 
 // Get file path
 
 $img = $IMAGE;
 // decode base64 image
 $img = str_replace('data:image/png;base64,', '', $img);
 $img = str_replace(' ', '+', $img);
 $image_data = base64_decode($img);

 //$extension = pathinfo( $_FILES["fileUpload"]["name"], PATHINFO_EXTENSION ); // jpg
 $image_extension = "png";
 $image_target_file =$image_target_dir . basename($FILENAME . "." . $image_extension);
 $image_file_upload = "http://localhost:8888/moodle310/blocks/testblock/classes/".$image_target_file;
 
 
 $audio_extension ="mp3";
 $audio_target_file= $audio_target_dir . basename($FILENAME. "." . $audio_extension) ;
 $audio_file_upload = "http://localhost:8888/moodle310/blocks/testblock/classes/".$audio_target_file;

 // file size limit
 if(($_FILES["audio"]["size"])<=51242880)
 {

 $fileName = $_FILES["audio"]["name"]; // The file name
 $fileTmpLoc = $_FILES["audio"]["tmp_name"]; // File in the PHP tmp folder
 $fileType = $_FILES["audio"]["type"]; // The type of file it is
 $fileSize = $_FILES["audio"]["size"]; // File size in bytes
 $fileErrorMsg = $_FILES["audio"]["error"]; // 0 for false... and 1 for true
 
 if (in_array($FILENAME, $animal)) 
 { 
 $sql = "INSERT INTO mdl_media_animal (animal_image_path,animal_name,animal_audio_path) VALUES ('$image_file_upload','$FILENAME','$audio_file_upload')";
 } else {
 $sql = "INSERT INTO mdl_media_others (others_image_path,others_name,others_audio_path) VALUES ('$image_file_upload','$FILENAME','$audio_file_upload')";
 }

 // if file exists
 if (file_exists($audio_target_file) || file_exists($image_target_file)) {
 echo "alert";
 } else {
 // write image file
 if (file_put_contents($image_target_file, $image_data) ) {
 // ffmpeg to write audio file
 $output = shell_exec("ffmpeg -i $fileTmpLoc -ab 160k -ac 2 -ar 44100 -vn $audio_target_file");
 echo $output;
 
 // $stmt = $conn->prepare($sql);
 $db = mysqli_connect("localhost", "root", "root", "moodle310"); 
 // echo $sql;
 if (!$db) {
 echo "nodb";
 die("Connection failed: " . mysqli_connect_error());
 }
 // echo"sucess";
 if(mysqli_query($db, $sql)){
 // if($stmt->execute()){
 echo $fileTmpLoc;
 echo "sucess"; 
 echo $output;
 }
 else {
 // echo "Error: " . $sql . "<br />" . mysqli_error($conn);
 echo "failed";
 }

 }else {
 echo "failed";
 }

 
 
 
 }
 
 // $test = "ffmpeg -i $outputfile -ab 160k -ac 2 -ar 44100 -vn bub.wav";
 } else
 {
 echo "File size exceeds 5 MB! Please try again!";
 }
}
else
{
 echo "PHP! Not a video! ";//.$extension." ".$_FILES["uploadimage"]["type"];
 }

?>



I am a student learning frontend but a project of mine requires a fair bit of backend. So forgive me if my question sounds silly.


What I meant by manually overriding it was creating another folder and a index.php file with
echo "hello"; $output = shell_exec("ffmpeg -i Elephant.mp3 -ab 160k -ac 2 -ar 44100 -vn bub.mp3"); echo $output;
so only yes in this caseElephant.mp3
was changed as the initial tmp path so in this case as suggested by Mr.CBroe the permissons shouldn't be an issue.

Okay I checked my
Apache_error.log
only to find out ffmpeg is indeed the culprit ... I had installedffmpeg
globally so I am not sure if it is an access problem but here is a snippet of the log

I checked my php logs and found out that
FFmpeg
is the culprit.
Attached is a short log file

[Mon May 31 18:11:33 2021] [notice] caught SIGTERM, shutting down
[Mon May 31 18:11:40 2021] [notice] Digest: generating secret for digest authentication ...
[Mon May 31 18:11:40 2021] [notice] Digest: done
[Mon May 31 18:11:40 2021] [notice] Apache/2.2.34 (Unix) mod_ssl/2.2.34 OpenSSL/1.0.2o PHP/7.2.10 configured -- resuming normal operations
sh: ffmpeg: command not found
sh: ffmpeg: command not found
sh: ffmpeg: command not found



-
Is there any possibility to transcode a h264 hls/m3u8 live stream into another HEVC (h265) hls/m3u8 live stream using FFmpeg in real time ?
2 septembre 2024, par Ghenadie PripaThe command I used :


ffmpeg -i https://tezaurtv.md/wp-content/uploads/live/index.m3u8 -c:v libx265 -b:v 1500k -tag:v hvc1 -c:a aac -b:a 128k -f hls -hls_time 10 -hls_list_size 10 -hls_flags delete_segments+append_list+program_date_time -hls_playlist_type event -hls_segment_type mpegts -hls_segment_filename "D:/BRUT/HLS/test/stream_%d.ts" -vsync 2 -rtbufsize 500M -loglevel debug D:/BRUT/HLS/test/stream.m3u8



I tried a lot of commands and parameters but nothing helps. The experiment is on local Windows. Transcode with ffmpeg and play with FFplay.


The problem is the following : After I start
stream.m3u8
to play after a few seconds the picture and sound stops. What is wrong in the FFmpeg command ?

ffmpeg version 7.0.2-full_build-www.gyan.dev Copyright (c) 2000-2024 the FFmpeg developers
 built with gcc 13.2.0 (Rev5, Built by MSYS2 project)



ffplay version 7.0.2-full_build-www.gyan.dev Copyright (c) 2003-2024 the FFmpeg developers
 built with gcc 13.2.0 (Rev5, Built by MSYS2 project)



An error from FFplay :


[hevc @ 0000023d8c320940] Output frame with POC 239.
[hevc @ 0000023d8c320940] Decoded frame with POC 241.
[hevc @ 0000023d8c320e40] nal_unit_type: 35(AUD), nuh_layer_id: 0, temporal_id: 0
[hevc @ 0000023d8c320e40] nal_unit_type: 0(TRAIL_N), nuh_layer_id: 0, temporal_id: 0
[hevc @ 0000023d8c320e40] Output frame with POC 240.
[hevc @ 0000023d8c320e40] Decoded frame with POC 240.
[hevc @ 0000023d855aae80] nal_unit_type: 35(AUD), nuh_layer_id: 0, temporal_id: 0
[hevc @ 0000023d855aae80] nal_unit_type: 0(TRAIL_N), nuh_layer_id: 0, temporal_id: 0
[hevc @ 0000023d855aae80] Output frame with POC 241.
[hevc @ 0000023d855aae80] Decoded frame with POC 242.
[hevc @ 0000023d8c2cab40] nal_unit_type: 35(AUD), nuh_layer_id: 0, temporal_id: 0
[hevc @ 0000023d8c2cab40] nal_unit_type: 1(TRAIL_R), nuh_layer_id: 0, temporal_id: 0
[hevc @ 0000023d8c2cab40] Output frame with POC 242.
[hevc @ 0000023d8c2cab40] Decoded frame with POC 247.
[hevc @ 0000023d8c2da9c0] nal_unit_type: 35(AUD), nuh_layer_id: 0, temporal_id: 0
[hevc @ 0000023d8c2da9c0] nal_unit_type: 1(TRAIL_R), nuh_layer_id: 0, temporal_id: 0
[hevc @ 0000023d8c2da9c0] Output frame with POC 243.
[hevc @ 0000023d8c2da9c0] Decoded frame with POC 245.
[hls @ 0000023d85544b80] Opening 'D:\BRUT\HLS\test\stream.m3u8' for reading
[hls @ 0000023d85544b80] Skip ('#EXT-X-VERSION:3')
[hls @ 0000023d85544b80] Skip ('#EXT-X-DISCONTINUITY')
[hls @ 0000023d85544b80] Skip ('#EXT-X-PROGRAM-DATE-TIME:2024-08-30T16:29:28.175+0300')
[AVIOContext @ 0000023d8c327040] Statistics: 207 bytes read, 0 seeks
[hls @ 0000023d85544b80] Opening 'D:\BRUT\HLS\test\stream.m3u8' for reading
[hls @ 0000023d85544b80] Skip ('#EXT-X-VERSION:3')sq= 0B
[hls @ 0000023d85544b80] Skip ('#EXT-X-DISCONTINUITY')
[hls @ 0000023d85544b80] Skip ('#EXT-X-PROGRAM-DATE-TIME:2024-08-30T16:29:28.175+0300')
[AVIOContext @ 0000023d8c326980] Statistics: 207 bytes read, 0 seeks
[hls @ 0000023d85544b80] Opening 'D:\BRUT\HLS\test\stream.m3u8' for reading
[hls @ 0000023d85544b80] Skip ('#EXT-X-VERSION:3')
[hls @ 0000023d85544b80] Skip ('#EXT-X-DISCONTINUITY')
[hls @ 0000023d85544b80] Skip ('#EXT-X-PROGRAM-DATE-TIME:2024-08-30T16:29:28.175+0300')
[AVIOContext @ 0000023d8c326f00] Statistics: 207 bytes read, 0 seeks
 11.30 A-V:-18.499 fd= 3 aq= 0KB vq= 0KB sq= 0B



I tried to transcode in real time hls h264 to hls 265.


-
Flutter error in Ffmpeg, "Unhandled Exception : ProcessException : No such file or directory" in macOS desktop version
19 avril 2024, par pratik vekariyaI'm trying video trim video using ffmpeg, for macOS desktop application.


I have downloaded ffmpeg from here for macOS.


Here is my code


String mainPath = 'Users/apple/Workspace/User/2024/Project/videoapp/build/macos/Build/Products/Debug/';
 mainPath = mainPath.substring(0, mainPath.lastIndexOf("/"));
 
 Directory directoryExe3 = Directory("$mainPath");
 var dbPath = path.join(directoryExe3.path,
 "App.framework/Resources/flutter_assets/assets/ffmpeg/ffmpegmacos");
//here in "Products/Debug/" folder desktop app will generate

//directoryExe3 path will be, Users/apple/Workspace/User/2024/Project/videoapp/build/macos/Build/Products/Debug

//and dbPath will be, Users/apple/Workspace/User/2024/Project/videoapp/build/macos/Build/Products/Debug/App.framework/Resources/flutter_assets/assets/ffmpeg/ffmpegmacos

//so when app will run it can access it from this path

//executable code, command for ffmpeg

String transpose_str += "crop=" +
 out_w.toInt().toString() +
 ":" +
 out_h.toInt().toString() +
 ":" +
 x!.toInt().toString() +
 ":" +
 y!.toInt().toString() +
 ",";
 transpose_str += "scale=960:192";

Future<processresult> result_ = Process.run(dbPath, [
 "-ss",
 timestamp,
 "-i",
 inputFilePath,
 "-t",
 endTime,
 "-vf",
 transpose_str,
 "-an",
 "./temp.mp4",
 ]); 
</processresult>


Now when I run this in macOS desktop verison, it gives me error at Process.run that in dbPath, Unhandled Exception : ProcessException : No such file or directory.


Any help would be appreciate !


when i run this as desktop version it should get file from assets.