
Recherche avancée
Autres articles (76)
-
(Dés)Activation de fonctionnalités (plugins)
18 février 2011, parPour gérer l’ajout et la suppression de fonctionnalités supplémentaires (ou plugins), MediaSPIP utilise à partir de la version 0.2 SVP.
SVP permet l’activation facile de plugins depuis l’espace de configuration de MediaSPIP.
Pour y accéder, il suffit de se rendre dans l’espace de configuration puis de se rendre sur la page "Gestion des plugins".
MediaSPIP est fourni par défaut avec l’ensemble des plugins dits "compatibles", ils ont été testés et intégrés afin de fonctionner parfaitement avec chaque (...) -
Les tâches Cron régulières de la ferme
1er décembre 2010, parLa gestion de la ferme passe par l’exécution à intervalle régulier de plusieurs tâches répétitives dites Cron.
Le super Cron (gestion_mutu_super_cron)
Cette tâche, planifiée chaque minute, a pour simple effet d’appeler le Cron de l’ensemble des instances de la mutualisation régulièrement. Couplée avec un Cron système sur le site central de la mutualisation, cela permet de simplement générer des visites régulières sur les différents sites et éviter que les tâches des sites peu visités soient trop (...) -
Participer à sa documentation
10 avril 2011La documentation est un des travaux les plus importants et les plus contraignants lors de la réalisation d’un outil technique.
Tout apport extérieur à ce sujet est primordial : la critique de l’existant ; la participation à la rédaction d’articles orientés : utilisateur (administrateur de MediaSPIP ou simplement producteur de contenu) ; développeur ; la création de screencasts d’explication ; la traduction de la documentation dans une nouvelle langue ;
Pour ce faire, vous pouvez vous inscrire sur (...)
Sur d’autres sites (11267)
-
How can I pipe JPEG files into FFMPEG and create an RTSP, H.264 stream ?
25 janvier 2023, par Michael SchmidtI have an input RTSP stream that I would like to manipulate on a frame-by-frame basis using openCV. After these changes are applied, I'd like to create a separate RTSP stream from those frames. I'm piping the resulting JPEG images to FFMPEG via STDIN. I need the intermediate frame to be a JPEG.


In other words, I must conform to this pattern :
RTSP IN -> Create JPEG as input -> manipulation, JPEG out -> RTSP


The PROBLEM I'm trying to solve deals with a codec at this point. See the last few lines of FFMPEG's output error message.


Here is what I have :


def open_ffmpeg_stream_process():
 args = (
 "ffmpeg -re -stream_loop -1 "
 "-f jpeg_pipe "
 "-s 512x288 "
 "-i pipe:0 "
 "-c:v h264 "
 "-f rtsp "
 "rtsp://localhost:8100/out0"
 ).split()
 return subprocess.Popen(args, stdin=subprocess.PIPE)

video_source = cv2.VideoCapture('rtsp://localhost:9100/in0')

frame_cnt = 0
FRAME_SKIP = 30

ffmpeg_process = open_ffmpeg_stream_process()
while video_source.isOpened():

 frame_cnt += 1
 if frame_cnt % FRAME_SKIP:
 continue
 else:
 frame_cnt = 0

 _, frame = video_source.read()
 _, jpg = cv2.imencode('.jpg', frame)

 # Work on the JPEG occurs here, and the output will be a JPEG

 ffmpeg_process.stdin.write(jpg.astype(np.uint8).tobytes())

 if cv2.waitKey(1) & 0xFF == ord('q'):
 break

video_source.release()



Here is FFMPEG's output :


ffmpeg version 4.4.2-0ubuntu0.22.04.1 Copyright (c) 2000-2021 the FFmpeg developers
 built with gcc 11 (Ubuntu 11.2.0-19ubuntu1)
 configuration: ---- noisy configuration stuff ----
 libavutil 56. 70.100 / 56. 70.100
 libavcodec 58.134.100 / 58.134.100
 libavformat 58. 76.100 / 58. 76.100
 libavdevice 58. 13.100 / 58. 13.100
 libavfilter 7.110.100 / 7.110.100
 libswscale 5. 9.100 / 5. 9.100
 libswresample 3. 9.100 / 3. 9.100
 libpostproc 55. 9.100 / 55. 9.100
Input #0, jpeg_pipe, from 'pipe:0':
 Duration: N/A, bitrate: N/A
 Stream #0:0: Video: mjpeg, rgb24(bt470bg/unknown/unknown), 512x288, 25 fps, 25 tbr, 25 tbn, 25 tbc
Stream mapping:
 Stream #0:0 -> #0:0 (mjpeg (native) -> h264 (libx264))
[libx264 @ 0x562a1ffc5840] using SAR=1/1
[libx264 @ 0x562a1ffc5840] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
[libx264 @ 0x562a1ffc5840] profile High, level 3.1, 4:2:0, 8-bit
[libx264 @ 0x562a1ffc5840] 264 - core 163 r3060 5db6aa6 - H.264/MPEG-4 AVC codec - Copyleft 2003-2021 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=18 lookahead_threads=3 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
[tcp @ 0x562a20826c00] Connection to tcp://localhost:8100?timeout=0 failed: Connection refused
Could not write header for output file #0 (incorrect codec parameters ?): Connection refused
Error initializing output stream 0:0 -- 
Conversion failed!



How does one create an H.264, RTSP stream from a series of JPEG frames using FFMPEG.


Notes : The FFMPEG command/subproccess might need unrelated improvements, feel free to comment on my crappy code.


Edit : Oof, I just found out the FFMPEG command doesn't even work stand alone.


-
Issue with video compression using HLS from laravel protonemedia/laravel-ffmpeg package
29 mars 2023, par Mateo KantociI'm using laravel-ffmpeg package in order to compress videos and save it as .m3u8.
In another words, I have a job that is gathering all uncompressed files and compress them 1by1 and save them to google cloud storage. Furthermore, compression is using exportForHLS from package and throws an error :


ProtoneMedia\LaravelFFMpeg\Exporters\HLSPlaylistGenerator::getStreamInfoLine(): Return value must be of type string, null returned in /var/www/html/ipaparazzo/vendor/pbmedia/laravel-ffmpeg/src/Exporters/HLSPlaylistGenerator.php:32



In some cases compression works but my job is failing for most of the time.


Anyone experienced similar issue ?


P.S. It is working as expected when using public storage.


This is my code exactly as per laravel-ffmpeg documentation :


->exportForHLS()
->setSegmentLength(10) // optional
->setKeyFrameInterval(48) // optional
->addFormat($lowBitrate, function($media) {
 $media->scale(426, 240);
})
->addFormat($midBitrate, function($media) {
 $media->scale(640, 360);
})
->addFormat($highBitrate, function($media) {
 $media->scale(640, 480);
})
->onProgress(function ($percentage) {
 echo "{$percentage}% transcoded\n";
})
->toDisk('gcs2')
->save($videoPath)
->cleanupTemporaryFiles();



-
I would like to batch-trim mp4 videos in a folder with command line (ffmpeg ?), however the sound is delayed
28 janvier 2023, par pdeliI found the following command line to batch-trim videos in a folder, however it delays the sound of all the videos by a few seconds (sound comes after the video) :


for file in /path/to/folder/*.mp4; do ffmpeg -i "$file" -ss 00:00:08 -c copy -avoid_negative_ts 1 "${file%.*}_trimmed.mp4"; done


These are the alternatives I found, however none of them solve the problem :


for file in /path/to/folder/*.mp4; do ffmpeg -i "$file" -itsoffset -0.5 -ss 8 -c:v copy -c:a copy "${file%.*}_trimmed.mp4"; done


for file in /path/to/folder/*.mp4; do ffmpeg -i "$file" -ss 8 -async 1 -c:v copy -c:a copy "${file%.*}_trimmed.mp4"; done


for file in /path/to/folder/*.mp4; do ffmpeg -i "$file" -ss 8 -map 0:v -map 0:a -c:v copy -c:a copy "${file%.*}_trimmed.mp4"; done


I have a hard time finding by how much time the sound is delayed.


My questions :


- 

- what would be the command line to batch-trim the beginning of all the videos in a folder with the sound properly "aligned" to the video ?
- in other words, can't the sound be by default trimmed by as much as the video in the first place ? If yes, how ?







System used :


- 

- macOS Ventura (13.1, Intel)
- Shell and version : zsh 5.8.1 (x86_64-apple-darwin22.0)
- ffmpeg version 5.0 built with Apple clang version 13.0.0 (clang-1300.0.29.30)