
Recherche avancée
Médias (1)
-
SPIP - plugins - embed code - Exemple
2 septembre 2013, par
Mis à jour : Septembre 2013
Langue : français
Type : Image
Autres articles (73)
-
Personnaliser en ajoutant son logo, sa bannière ou son image de fond
5 septembre 2013, parCertains thèmes prennent en compte trois éléments de personnalisation : l’ajout d’un logo ; l’ajout d’une bannière l’ajout d’une image de fond ;
-
Ecrire une actualité
21 juin 2013, parPrésentez les changements dans votre MédiaSPIP ou les actualités de vos projets sur votre MédiaSPIP grâce à la rubrique actualités.
Dans le thème par défaut spipeo de MédiaSPIP, les actualités sont affichées en bas de la page principale sous les éditoriaux.
Vous pouvez personnaliser le formulaire de création d’une actualité.
Formulaire de création d’une actualité Dans le cas d’un document de type actualité, les champs proposés par défaut sont : Date de publication ( personnaliser la date de publication ) (...) -
Publier sur MédiaSpip
13 juin 2013Puis-je poster des contenus à partir d’une tablette Ipad ?
Oui, si votre Médiaspip installé est à la version 0.2 ou supérieure. Contacter au besoin l’administrateur de votre MédiaSpip pour le savoir
Sur d’autres sites (14256)
-
FFmpeg continues to process after time specified at "-to"
4 août 2020, par YamahabestI have a video, where I want to cut a part from the beginning, and from the end. And I want to apply some fade ins/fade outs, and add some text.


So, I came up with the following syntax :


-ss 10 -to 40 
-i "D:\DATA\Software\VideoProcessor_Files\20171015 Zelhem Tandem Frans met Mirthe.MP4" 
-loop 1 -i "Input_Files\logo maurik large.png" 
-loop 1 -i "Input_Files\logo maurik small.png" 
-filter_complex "
 color=0x7F7F7F@0.95:1920x1080[grey_for_fade_out];
 [grey_for_fade_out]fade=t=out:st=12:d=2:alpha=1[grey_fade_out];
 [0:v][grey_fade_out]overlay[video_grey_fade_out];
 color=0x7F7F7F@0.95:1920x1080[grey_for_fade_in];
 [grey_for_fade_in]fade=t=in:st=37:d=2:alpha=1[grey_fade_in];
 [video_grey_fade_out][grey_fade_in]overlay[video_grey_fade_out_in];
 [1:v]fade=t=out:st=13:d=2:alpha=1[over];
 [over]scale=iw/1.5:-1[scaled];
 [video_grey_fade_out_in][scaled]overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/10[video_grey_fade_out_in_logo];
 [1:v]fade=t=in:st=36:d=2:alpha=1[over2];
 [over2]scale=iw/1.5:-1[scaled2];
 [video_grey_fade_out_in_logo][scaled2]overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2[video_grey_fade_out_in_logo2];
 [2:v]colorchannelmixer=aa=0.5,fade=t=in:st=14:d=2:alpha=1,fade=t=out:st=35:d=2:alpha=1[over3];
 [over3]scale=iw/10:-1[scaled3];
 [video_grey_fade_out_in_logo2][scaled3]overlay=10:10[video_complete];
 [video_complete]drawtext=fontfile=Input_Files/Sansation-Bold.ttf:text='Tandemvlucht met Mirthe':fontsize=96:fontcolor=white:alpha='if(lt(t,11),1,(2-(t-11))/2)':x=(w-text_w)/2:y=((h-text_h)/2)+125,drawtext=fontfile=Input_Files/Sansation-Bold.ttf:text='Zeddam':fontsize=96:fontcolor=white:alpha='if(lt(t,11),1,(2-(t-11))/2)':x=(w-text_w)/2:y=((h-text_h)/2)+250,drawtext=fontfile=Input_Files/Sansation-Bold.ttf:text='4 augustus 2020':fontsize=96:fontcolor=white:alpha='if(lt(t,11),1,(2-(t-11))/2)':x=(w-text_w)/2:y=((h-text_h)/2)+375,drawtext=fontfile=Input_Files/Sansation-Bold.ttf:text='Ook een keer meevliegen?':fontsize=96:fontcolor=white:alpha='if(lt(t,37),0,(t-37)/2)':x=(w-text_w)/2:y=((h-text_h)/6),drawtext=fontfile=Input_Files/Sansation-Bold.ttf:text='Of bel 085 - 049 55 69':fontsize=96:fontcolor=white:alpha='if(lt(t,37),0,(t-37)/2)':x=(w-text_w)/2:y=((h-text_h)/2)+350"
-preset medium 
-crf 18 
-c:a copy 
-y ".\Output_Files\Video\Zeddam\2020-08-04\Mirthe\27ed390a-8497-4550-b93f-4f87d9f2c9f0\MP_Tandemvlucht met_Mirthe_Zeddam_2020-08-04.mp4"



I am quite sure this has worked in the past, but now FFmpeg just keeps on processing endlessly. If I then stop the FFmpeg process, and look at the resulting file, I see that the last frame (of the end of the specified period) just keeps on duplicating.


The drop counter in the console output of FFmpeg also starts increasing at the end of the specified period :


frame= 987 fps= 15 q=-1.0 Lsize= 31357kB time=00:00:41.04 bitrate=6259.0kbits/s dup=0 drop=10 speed=0.644x



I am kind of lost on why this doesn't work anymore. I might have upgraded the FFmpeg executable in the mean time. Maybe my syntax was/is not correct, but I believe it just worked.


It has to be in the complex filter, because when I remove that, it works alright.
It is not in the drawtext part of the complex filter, because it still occurs when I remove that. And when I only do the drawtext, FFmpeg stops correctly at the specified time.


I have tried this, but then it still occurs :


-filter_complex "
 color=0x7F7F7F@0.95:1920x1080[grey_for_fade_out];
 [grey_for_fade_out]fade=t=out:st=12:d=2:alpha=1[grey_fade_out];
 [0:v][grey_fade_out]overlay[video_grey_fade_out];
 color=0x7F7F7F@0.95:1920x1080[grey_for_fade_in];
 [grey_for_fade_in]fade=t=in:st=37:d=2:alpha=1[grey_fade_in];
 [video_grey_fade_out][grey_fade_in]overlay"



Also with this, it still occurs :


-filter_complex "
 [1:v]fade=t=out:st=13:d=2:alpha=1[over];
 [over]scale=iw/1.5:-1[scaled];
 [0:v][scaled]overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/10[video_grey_fade_out_in_logo];
 [1:v]fade=t=in:st=36:d=2:alpha=1[over2];
 [over2]scale=iw/1.5:-1[scaled2];
 [video_grey_fade_out_in_logo][scaled2]overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2[video_grey_fade_out_in_logo2];
 [2:v]colorchannelmixer=aa=0.5,fade=t=in:st=14:d=2:alpha=1,fade=t=out:st=35:d=2:alpha=1[over3];
 [over3]scale=iw/10:-1[scaled3];
 [video_grey_fade_out_in_logo2][scaled3]overlay=10:10"



I just don't understand. All my fade-ins/-outs seem to be within the specified range :


- 

- fade=t=out:st=12:d=2 : start at 12 seconds, duration 2 seconds. This ends at 14 seconds, which is smaller than 40 seconds.
- fade=t=in:st=37:d=2 : start at 37 seconds, duration 2 seconds. This ends at 39 seconds, which is smaller than 40 seconds.
- fade=t=out:st=13:d=2 : start at 13 seconds, duration 2 seconds. This ends at 15 seconds, which is smaller than 40 seconds.
- fade=t=in:st=36:d=2 : start at 36 seconds, duration 2 seconds. This ends at 38 seconds, which is smaller than 40 seconds.










It is just like some sequence is not ended properly, which is causing FFmpeg to just continue.


-
About the delay of Electron playing FFpmeg transcoded video
26 juillet 2020, par YohannIn the Electron project, you need to try to play the video screen of the camera


The camera is Haikang’s webcam


Get real-time video stream through RTSP protocol


rtsp://admin:admin@192.168.0.253/main/Channels/


There will be a delay of about 3s when playing through the VLC player


Then when used in the project, create a websocket service in Electron through the main process, decode the rtsp video through fluent-ffmpeg, and convert it to flv stream and push it to the rendering process


import * as express from 'express'
import * as expressWebSocket from 'express-ws'
import ffmpeg from 'fluent-ffmpeg'
import webSocketStream from 'websocket-stream/stream'
const path = require('path')

let ffmpegPath
if (process.env.NODE_ENV === 'development') {
 ffmpegPath = path.join(__static, 'ffmpeg', 'bin', 'ffmpeg.exe')
} else {
 ffmpegPath = path.join(process.cwd(), 'ffmpeg', 'bin', 'ffmpeg.exe')
}
ffmpeg.setFfmpegPath(ffmpegPath)

// Start video transcoding service
function videoServer () {
 let app = express()
 app.use(express.static(__dirname))
 expressWebSocket(app, null, {
 perMessageDeflate: true
 })
 app.ws('/rtsp/', rtspRequestHandle)
 app.listen(8888)
 console.log('Create a monitoring service')
}

//RTSP transcoding method
function rtspRequestHandle (ws, req) {
 console.log('rtsp request handle')
 const stream = webSocketStream(ws, {
 binary: true,
 browserBufferTimeout: 1000000
 },
 {
 browserBufferTimeout: 1000000
 })
 let url = req.query.url
 console.log('rtsp url:', url)
 try {
 ffmpeg(url)
 .addInputOption('-rtsp_transport', 'tcp', '-buffer_size', '102400') // Here you can add some RTSP optimized parameters
 .outputOptions([
 '-fflags',
 'nobuffer',
 '-tune',
 'zerolatency'
 ])
 .on('start', function () {
 console.log(url, 'Stream started.')
 })
 .on('codecData', function () {
 console.log(url, 'Stream codecData.')
 })
 .on('error', function (err) {
 console.log(url, 'An error occured: ', err.message)
 })
 .on('end', function () {
 console.log(url, 'Stream end!')
 })
 .outputFormat('flv').videoCodec('copy').noAudio().pipe(stream)
 } catch (error) {
 console.log(error)
 }
}

export default videoServer



The rendering process parses the video stream and plays the video through flv.js


<template>
 <div class="video">
 <video class="video-box" ref="player"></video>
 </div>
</template>

<code class="echappe-js"><script>&#xA; import flvjs from &#x27;flv.js&#x27;&#xA; export default {&#xA; name: &#x27;videopage&#x27;,&#xA; props: {&#xA; rtsp: String&#xA; },&#xA; data () {&#xA; return {&#xA; player: null&#xA; }&#xA; },&#xA; mounted () {&#xA; console.log(flvjs.isSupported())&#xA; if (flvjs.isSupported()) {&#xA; let video = this.$refs.player&#xA; console.log(video)&#xA; if (video) {&#xA; this.player = flvjs.createPlayer({&#xA; type: &#x27;flv&#x27;,&#xA; isLive: true,&#xA; url: &#x27;ws://localhost:8888/rtsp/?url=&#x27; &#x2B; this.rtsp&#xA; }, {&#xA; enableStashBuffer: true&#xA; })&#xA; console.log(this.player)&#xA; this.player.attachMediaElement(video)&#xA; try {&#xA; this.player.load()&#xA; this.player.play()&#xA; } catch (error) {&#xA; console.log(error)&#xA; }&#xA; }&#xA; }&#xA; },&#xA; methods: {&#xA; getCurrentFrame () {&#xA; let video = this.$refs.player&#xA; let scale = 1&#xA; let canvas = document.createElement(&#x27;canvas&#x27;)&#xA; canvas.width = video.videoWidth * scale&#xA; canvas.height = video.videoHeight * scale&#xA; canvas.getContext(&#x27;2d&#x27;).drawImage(video, 0, 0, canvas.width, canvas.height)&#xA; return canvas.toDataURL(&#x27;image/png&#x27;)&#xA; }&#xA; },&#xA; beforeDestroy () {&#xA; this.player &amp;&amp; this.player.destory &amp;&amp; this.player.destory()&#xA; }&#xA; }&#xA;</script>





Then there will be a delay of about 3s when playing, and the delay will increase with the playing time


There will be a delay of 10 minutes in the later period


Is there any way to control this delay time


Or is there any other decoding scheme that can be used ?


Solutions that can support electron


-
bash - forcing globstar asterisk expansion when passed to loop
1er juillet 2020, par Kittywhiskers Van GoghI am attempting to write a script that finds the extension of all files within a directory and normalise them using
ffmpeg
to conform to a singular file format, codec and resolution.

#!/usr/bin/env bash

# We need to use globstar because we want to run this recursively (bash >4.0)
# This script won't run on macOS unless you install bash from homebrew
shopt -s globstar nullglob

# macOS doesn't have some stuff that we need, presuming you have homebrew already
# then run "brew install ffmpeg rename"
if ! [ -x "$(command -v ffmpeg)" ] || ! [ -x "$(command -v rename)" ]; then
 echo 'Required applications are absent, quitting :(' >&2
 exit 1
fi

# We need to know what file extensions we are dealing with
DISCOVERED_EXTENSIONS=$(find . -type f -name '*.*' | sed 's|.*\.||' | sort -u | tr '\n' ' ' | sed "s| | ./\**/*.|g" | rev | cut -c9- | rev | echo "./**/*.$(stdin)")

# Let's ignore newlines for now
IFS=$'\n'; set -f

# Within the loop
for f in $(echo $DISCOVERED_EXTENSIONS | tr ' ' '\n'); do
# Do nothing if there are no files to begin with
# if [ -z ${f+x} ]; then
# echo "no files found, exiting";
# else
# First get rid of all period/full-stops except the extension to prevent confusion
# rename "s/\.(?=[^.]*\.)/_/g" "$f";
# Now run conversion and save files with prefix processed_
# ffmpeg -i "$f" -vf scale=-1:720 -crf 18 \
# -c:v libx264 -preset veryslow -c:a libvo_aacenc -b:a 128k -c:s copy \
# "processed_${f%.*}.mp4";
# fi
 ls $f;
done

# No longer ignore newlines
unset IFS; set +f

# Stop using recursiveness after we're done
shopt -u globstar nullglob



I have commented out all the actual conversion code in an attempt to debug it, running this script alone, I get :


ls: ./**/*.avi: No such file or directory
ls: ./**/*.jpg: No such file or directory
ls: ./**/*.mkv: No such file or directory
ls: ./**/*.mp4: No such file or directory



It is passing
ls "./**/*.avi"
instead ofls ./**/*.avi
(because of no variable expansion). I attempted to use eval, envsubst and even used a customexpand
function, to no avail

The result of
echo "$DISCOVERED_EXTENSIONS"
is :

./**/*.avi ./**/*.jpg ./**/*.mkv ./**/*.mp4



ShellCheck objected to my lack of quotation marks but adding them in did not do anything. What changes can be recommended so that value of
$f
is the result of glob expansion and not the expression itself ?