
Recherche avancée
Médias (91)
-
MediaSPIP Simple : futur thème graphique par défaut ?
26 septembre 2013, par
Mis à jour : Octobre 2013
Langue : français
Type : Video
-
avec chosen
13 septembre 2013, par
Mis à jour : Septembre 2013
Langue : français
Type : Image
-
sans chosen
13 septembre 2013, par
Mis à jour : Septembre 2013
Langue : français
Type : Image
-
config chosen
13 septembre 2013, par
Mis à jour : Septembre 2013
Langue : français
Type : Image
-
SPIP - plugins - embed code - Exemple
2 septembre 2013, par
Mis à jour : Septembre 2013
Langue : français
Type : Image
-
GetID3 - Bloc informations de fichiers
9 avril 2013, par
Mis à jour : Mai 2013
Langue : français
Type : Image
Autres articles (21)
-
Ajouter des informations spécifiques aux utilisateurs et autres modifications de comportement liées aux auteurs
12 avril 2011, parLa manière la plus simple d’ajouter des informations aux auteurs est d’installer le plugin Inscription3. Il permet également de modifier certains comportements liés aux utilisateurs (référez-vous à sa documentation pour plus d’informations).
Il est également possible d’ajouter des champs aux auteurs en installant les plugins champs extras 2 et Interface pour champs extras. -
Other interesting software
13 avril 2011, parWe don’t claim to be the only ones doing what we do ... and especially not to assert claims to be the best either ... What we do, we just try to do it well and getting better ...
The following list represents softwares that tend to be more or less as MediaSPIP or that MediaSPIP tries more or less to do the same, whatever ...
We don’t know them, we didn’t try them, but you can take a peek.
Videopress
Website : http://videopress.com/
License : GNU/GPL v2
Source code : (...) -
Les statuts des instances de mutualisation
13 mars 2010, parPour des raisons de compatibilité générale du plugin de gestion de mutualisations avec les fonctions originales de SPIP, les statuts des instances sont les mêmes que pour tout autre objets (articles...), seuls leurs noms dans l’interface change quelque peu.
Les différents statuts possibles sont : prepa (demandé) qui correspond à une instance demandée par un utilisateur. Si le site a déjà été créé par le passé, il est passé en mode désactivé. publie (validé) qui correspond à une instance validée par un (...)
Sur d’autres sites (4410)
-
ffmpeg creating mpeg-dash chunk files too slowly resulting in 404 errors
17 juillet 2021, par DannyI have a hardware encoder feeding FFmpeg to create a MPEG-DASH Low Latency stream. It works well for a while, but after letting FFmpeg run for a while and reloading the page there are many 404 errors.


When that happens, the
dash.js
player tries to fetch the segment file on the "live edge" but the file has not been created yet by FFmpeg. For example, after running for 20-30 minutes and loading the web page player, debug code in the web server shows :

2021-07-16 16:46:30.64 : GET REQUEST : /data/ott/chunk-stream0-00702.m4s
2021-07-16 16:46:30.67 : NOT FOUND. Latest files on filesystem:
 chunk-stream0-00699.m4s.tmp
 chunk-stream0-00698.m4s
 chunk-stream0-00697.m4s
 chunk-stream0-00696.m4s
 ...



So you can see the browser requested chunk 702 but the latest on the server is (part of) 699. With 2 second chunks, that is 3-5 seconds of content not yet available.


To analyze, I modified FFmpeg's
dashenc.c
to add a timestamp every time a file is opened which displays like :

[dash @ 0x9b17c0] 21:48:52.935 1626443332.935 : dashenc_io_open() - opened /data/ott/chunk-stream0-00060.m4s.tmp



And loaded the timestamps into Excel.


Despite a segment duration of 2.000 seconds, the average time between file opens is 2.011 seconds. Over two hours this accumulated to a 45 second difference between the calculated live edge and the latest file on the server.


The HW encoder is set to 25 fps and a GOP size of 5. I've confirmed both by analyzing the H.264 NALUs output by the HW encoder.


My Question : Is this a bug in FFmpeg or can I avoid this problem by adjusting the settings of either the HW encoder and/or FFmpeg options ?


REFERENCE


FFmpeg: Version 4.4 
Centos 8 
Apache 2.4.37



FFmpeg command line (pipe is fed by process reading HW encoder)


ffmpeg -re -loglevel verbose -an -f h264 -i pipe:17 -c:v copy \
-f dash -dash_segment_type mp4 -b:v 1000000 -seg_duration 2.000000 \
-frag_type duration -frag_duration 0.200000 -target_latency 1 \
-window_size 10 -extra_window_size 5 -remove_at_exit 1 -streaming 1 \
-ldash 1 -use_template 1 -use_timeline 0 -write_prft 1 -avioflags direct \
-fflags +nobuffer+flush_packets -format_options movflags=+cmaf \
-utc_timing_url /web/be/time.php /data/ott/master.mpd



Modified
dash_io_open()
from dashenc.c

static int 
dashenc_io_open(AVFormatContext *s, AVIOContext **pb, char *filename, AVDictionary **options)
{
 DASHContext *c = s->priv_data;
 int http_base_proto = filename ? ff_is_http_proto(filename) : 0;
 int err = AVERROR_MUXER_NOT_FOUND;
 if (!*pb || !http_base_proto || !c->http_persistent)
 {
 err = s->io_open(s, pb, filename, AVIO_FLAG_WRITE, options);

 // My Debug
 {
 char buf[20], milli[60];
 struct timeb tp;

 ftime(&tp); // sec + ms
 struct tm *tmInfo = localtime(&tp.time);

 // 2020-05-15 21:15:12.123
 strftime(buf, sizeof(buf), "%H:%M:%S", tmInfo);
 snprintf(milli, 59, "%s.%03d %d.%03d ", buf, tp.millitm, tp.time, tp.millitm);

 av_log(s, AV_LOG_INFO, "%s : dashenc_io_open() - opened %s\n", milli, filename);
 }
 }
 return err;
}



-
Pyinstaller exe works halfway on another computer
5 novembre 2022, par At BayI wrote a code which uses FFMPEG and os, subprocess, datetime, speechrecognition, and xlsxwriter libraries. Below a brief sketch of the code - it goes through a directory of wav files and creates a transcription for X seconds in length and saves it into an excel sheet.
import os
import subprocess
import datetime
import speech_recognition as sr
import xlsxwriter


def ffmpeg():
 #create clip
 subprocess.run(["ffmpeg", "-ss", starti, "-t", lengthi, "-i", filepathO, filepathNEW1])

 #convert to mono
 subprocess.run(["ffmpeg", "-i", filepathNEW1, "-ac", "1", filepathNEW2])
 
 #compres to 44.1 kHZ
 subprocess.run(["ffmpeg", "-i", filepathNEW2, "-ar", "44100", filepathNEW3])

def transcription():
 with sr.AudioFile(os.path.abspath(clippath)) as source:
 audio = r.record(source) # read the entire audio file
 transcriptstring = str(r.recognize_google(audio, language = 'en', show_all=True))
 worksheet.write(tcol, transcriptstring)


#call functions in this order
for filename in os.listdir(ufolder):
 if (filename.endswith(".wav")):
 ffmpeg() #cuts clips, compresses to mono and 44.1 khz
 transcription() 

workbook.close()




When I try to run the exe created by pyinstaller, I get the following error :


Enter directory of wav files: C:\Users\myname\Downloads\
Enter clip start (seconds): 0
Enter desired clip length (seconds): 5
Traceback (most recent call last):
 File "cliptranscript.py", line 134, in <module>
 File "cliptranscript.py", line 47, in ffmpeg
 File "subprocess.py", line 503, in run
 File "subprocess.py", line 971, in __init__
 File "subprocess.py", line 1440, in _execute_child
FileNotFoundError: [WinError 2] The system cannot find the file specified
[13304] Failed to execute script 'cliptranscript' due to unhandled exception!
</module>


Below is a partial view of the folder created by pyinstaller :



-
How to count variable in for loop in power shell
17 avril 2020, par ilham zackyI am using powershell and i have got a for loop running each time 3 variables get printed, for now, loop runs 5 times. I need to get the count like $i++



This is a part of my code



$file = "D:\edl\input\CPExport.xlsx"
$sheetName = "Sheet1"
$objExcel = New-Object -ComObject Excel.Application
$workbook = $objExcel.Workbooks.Open($file)
$sheet = $workbook.Worksheets.Item($sheetName)
$objExcel.Visible = $false
$rowMax = ($sheet.UsedRange.Rows).count
$nu = 0
$rowcount = 000 

for ($i = 0; $i -le $rowMax - 1; $i++) {
 $id = $sheet.Cells.Item($rowName + $i, $colName).text
 $name = $sheet.Cells.Item($rowAge + $i, $colAge).text
 $subtitle = $sheet.Cells.Item($rowCity + $i, $colCity).text
 $jpgId = "$id.jpg"
 $videoId = "$id.mp4"
 $audioId = "$id.m4a"
 $duration1 = if ((ffmpeg -i $audioId 2>&1 | Out-String) -match 'Duration:\s+([\d:"."]+)') { $matches[1] };
 $duration2 = if ((ffmpeg -i $jpgId 2>&1 | Out-String) -match 'Duration:\s+([\d:"."]+)') { $matches[1] };
 $duration = if ((ffmpeg -i $videoId 2>&1 | Out-String) -match 'Duration:\s+([\d:"."]+)') { $matches[1] };

 $newduration = ("$duration").Replace(".", ":")
 $newduration1 = ("$duration1").Replace(".", ":")
 $newduration2 = ("$duration2").Replace(".", ":")

 $out1 = ""
 $out2 = ""
 $out = ""
 $nu++
 $rowcount++
 if ($newduration1) {

 if ($nu -eq 1) {
 $audioA = "00:00:00:00"
 }

 $audioB = Add-Frame -Base $newduration1 -Offset $audioA
 $out1 = "$rowcount" + " " + "AX" + " " + "AA" + " " + "C" + " " + "00:00:00:00" + " " + $newduration1 + " " + $audioA 
 }

 if ($newduration2) {

 $imagecal = Add-Frame -Base $imageA -Offset "00:00:06:00"
 $imageB = $imagecal
 $out = "$rowcount" + " " + "AX" + " " + "V" + " " + "C" + " " + "02:00:05:15" + " " + $newduration2 + " " + " " + $imageA 
 }


 if ($newduration) {

 $videoA = $imageB
 $videocal = Add-Frame -Base $newduration -Offset $videoA
 $videoB = $videocal
 $out2 = "$rowcount" + " " + "AX" + " " + "AA/V" + " " + "C" + " " + "00:00:00:00" + " " + $hh + " " + " " + $videoA 
 }
 else {
 $videoB = ""
 }
 $gg = $out1 + "`n" + "`n" + $out + "`n" + "`n" + $out2 + "`n"
 echo $gg

 $gg | Out-File -FilePath d:\edl\input\output.txt -Append
}
#close excel file
$objExcel.quit()




i have echo $gg
this is the output



1 AX AA C 00:00:00:00 00:00:03:48 
1 AX V C 02:00:05:15 02:00:11:15
1 AX AA/V C 00:00:00:00 00:00:06:93 
2 AX AA C 00:00:00:00 00:00:03:46 
2 AX V C 02:00:05:15 02:00:11:15 
2 AX AA C 00:00:00:00 00:00:03:46 
3 AX AA C 00:00:00:00 00:00:03:52 
3 AX V C 02:00:05:15 02:00:11:15 
3 AX AA/V C 00:00:00:00 00:00:06:93 
4 AX AA C 00:00:00:00 00:00:03:21 
4 AX V C 02:00:05:15 02:00:11:15 
4 AX AA C 00:00:00:00 00:00:03:21 
5 AX AA C 00:00:00:00 00:00:03:05 
5 AX V C 02:00:05:15 02:00:11:15 
5 AX AA/V C 00:00:00:00 00:00:06:93 




Output prints only 1-5 
I need it to be printed 1 - 15



any suggestions ?



thank you for reading