
Recherche avancée
Médias (1)
-
Rennes Emotion Map 2010-11
19 octobre 2011, par
Mis à jour : Juillet 2013
Langue : français
Type : Texte
Autres articles (99)
-
MediaSPIP 0.1 Beta version
25 avril 2011, parMediaSPIP 0.1 beta is the first version of MediaSPIP proclaimed as "usable".
The zip file provided here only contains the sources of MediaSPIP in its standalone version.
To get a working installation, you must manually install all-software dependencies on the server.
If you want to use this archive for an installation in "farm mode", you will also need to proceed to other manual (...) -
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 (...) -
MediaSPIP version 0.1 Beta
16 avril 2011, parMediaSPIP 0.1 beta est la première version de MediaSPIP décrétée comme "utilisable".
Le fichier zip ici présent contient uniquement les sources de MediaSPIP en version standalone.
Pour avoir une installation fonctionnelle, 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 (11254)
-
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


-
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 :



-
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;
}