
Recherche avancée
Médias (1)
-
Publier une image simplement
13 avril 2011, par ,
Mis à jour : Février 2012
Langue : français
Type : Video
Autres articles (96)
-
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 (...) -
Multilang : améliorer l’interface pour les blocs multilingues
18 février 2011, parMultilang est un plugin supplémentaire qui n’est pas activé par défaut lors de l’initialisation de MediaSPIP.
Après son activation, une préconfiguration est mise en place automatiquement par MediaSPIP init permettant à la nouvelle fonctionnalité d’être automatiquement opérationnelle. Il n’est donc pas obligatoire de passer par une étape de configuration pour cela. -
HTML5 audio and video support
13 avril 2011, parMediaSPIP uses HTML5 video and audio tags to play multimedia files, taking advantage of the latest W3C innovations supported by modern browsers.
The MediaSPIP player used has been created specifically for MediaSPIP and can be easily adapted to fit in with a specific theme.
For older browsers the Flowplayer flash fallback is used.
MediaSPIP allows for media playback on major mobile platforms with the above (...)
Sur d’autres sites (8050)
-
Linphone OSx msx264 encryption VGA takes 97% CPU, why ?
11 septembre 2013, par Maxim ShoustinI have problem and today don't know how to fix it or even from where to start.
I have Linphone application that uses msx264 plugin.
All stuff I run on OSx and my ffmpeg version installed from
port
, I didn't using selfupdate for portbash-3.2# port installed ffmpeg-devel
The following ports are currently installed:
ffmpeg-devel @20130205_0+gpl2
ffmpeg-devel @20130328_0 (active)
ffmpeg-devel @20130328_0+gpl2So I compiled and build msx264, no errors.
Now I try to send video over CIP resolution VGA (640x480) and get huge delay 8-9 seconds, even self-view I see in big delay.
when I configure CIF (352x288), all seems fine.
It's really strange that self-view camera has delay 4-5 sec.
So from logs during the session I found that msx264 plugin takes 97% CPU
On PC (windows 7) the same code runs fine, even HD I don't see any problems.
What is the problem should be ?
warning: Video MSTicker: We are late of 32146 miliseconds.
message: Filter MSRtpRecv is not scheduled; nothing to do.
message: ===========================================================
message: AUDIO SESSION'S RTP STATISTICS
message: -----------------------------------------------------------
message: sent 2344 packets
message: 403168 bytes
message: received 2038 packets
message: 350536 bytes
message: incoming delivered to the app 325080 bytes
message: lost 0 packets
message: received too late 123 packets
message: bad formatted 0 packets
message: discarded (queue overflow) 17 packets
message: ===========================================================
message: ms_filter_unlink: MSAuRead:0x7fb5a34955b0,0-->MSResample:0x7fb5aa917820,0
message: ms_filter_unlink: MSResample:0x7fb5aa917820,0-->MSSpeexEC:0x7fb5a34f6d20,1
message: ms_filter_unlink: MSSpeexEC:0x7fb5a34f6d20,1-->MSVolume:0x7fb5a3493450,0
message: ms_filter_unlink: MSVolume:0x7fb5a3493450,0-->MSTee:0x7fb5a3498e40,0
message: ms_filter_unlink: MSTee:0x7fb5a3498e40,0-->MSUlawEnc:0x7fb5a3499410,0
message: ms_filter_unlink: MSUlawEnc:0x7fb5a3499410,0-->MSRtpSend:0x7fb5aa910ba0,0
message: ms_filter_unlink: MSRtpRecv:0x7fb5a3400170,0-->MSUlawDec:0x7fb5a34933c0,0
message: ms_filter_unlink: MSUlawDec:0x7fb5a34933c0,0-->MSGenericPLC:0x7fb5aa91b040,0
message: ms_filter_unlink: MSGenericPLC:0x7fb5aa91b040,0-->MSDtmfGen:0x7fb5a6585f00,0
message: ms_filter_unlink: MSDtmfGen:0x7fb5a6585f00,0-->MSVolume:0x7fb5aa917790,0
message: ms_filter_unlink: MSVolume:0x7fb5aa917790,0-->MSTee:0x7fb5aa914fc0,0
message: ms_filter_unlink: MSTee:0x7fb5aa914fc0,0-->MSEqualizer:0x7fb5a3498f50,0
message: ms_filter_unlink: MSEqualizer:0x7fb5a3498f50,0-->MSSpeexEC:0x7fb5a34f6d20,0
message: ms_filter_unlink: MSSpeexEC:0x7fb5a34f6d20,0-->MSResample:0x7fb5aa9178b0,0
message: ms_filter_unlink: MSResample:0x7fb5aa9178b0,0-->MSAuWrite:0x7fb5a3499380,0
message: ms_filter_unlink: MSTee:0x7fb5a3498e40,1-->MSAudioMixer:0x7fb5aa914df0,0
message: ms_filter_unlink: MSTee:0x7fb5aa914fc0,1-->MSAudioMixer:0x7fb5aa914df0,1
message: ms_filter_unlink: MSAudioMixer:0x7fb5aa914df0,0-->MSFileRec:0x7fb5aa911020,0
message: Audio MSTicker thread exiting
message: ===========================================================
message: FILTER USAGE STATISTICS
message: Name Count Time/tick (ms) CPU Usage
message: -----------------------------------------------------------
message: MSX264Enc 321 138.147 97.1677
message: MSResample 8076 0.0550274 0.97085
message: MSSpeexEC 4302 0.0873765 0.821276
message: MSH264Dec 291 0.880267 0.561463
message: MSRtpSend 6174 0.012353 0.166623
message: MSRtpRecv 6174 0.0115132 0.155295
message: MSOSXGLDisplay 375 0.0376117 0.0308912
message: MSAudioMixer 4695 0.00249638 0.0256072
message: MSV4m 1480 0.00740446 0.0239537
message: MSUlawEnc 4038 0.0019542 0.0172411
message: MSTee 6540 0.000698976 0.00998688
message: MSAuRead 4695 0.00095017 0.0097466
message: MSUlawDec 1890 0.00205553 0.00849059
message: MSVolume 5928 0.000633159 0.00820007
message: MSFileRec 4695 0.000722743 0.00741371
message: MSDtmfGen 4695 0.0005 0.00512887
message: MSGenericPLC 4695 0.000429514 0.00440585
message: MSAuWrite 4038 0.000364199 0.00321319
message: MSEqualizer 1890 0.000250661 0.00103538
message: MSSizeConv 322 0.00104334 0.000736128
message: MSJpegWriter 290 0.000694158 0.00044124
message: MSPixConv 322 0.000405573 0.000286151
message: MSFilePlayer 0 0 0
message: MSVoidSink 0 0 0
message: ===========================================================
warning: Video MSTicker: We are late of 32256 miliseconds.
message: v4m video device closed.
message: Filter MSRtpRecv is not scheduled; nothing to do.
message: ===========================================================
message: VIDEO SESSION'S RTP STATISTICS
message: -----------------------------------------------------------
message: sent 1311 packets
message: 1517528 bytes
message: received 1783 packets
message: 1049010 bytes
message: incoming delivered to the app 986868 bytes
message: lost 0 packets
message: received too late 0 packets
message: bad formatted 0 packets
message: discarded (queue overflow) 0 packets
message: ===========================================================In addition the application shows me delay status, from logs :
message:: Dialog [0x7fb5a7634940]: now updated by transaction [0x7fb5aa9685d0].
warning: Video MSTicker: We are late of 20415 miliseconds.
warning: Video MSTicker: We are late of 20564 miliseconds.
message:: A SPS is being sent.
message:: A PPS is being sent.
warning: Video MSTicker: We are late of 20609 miliseconds.
warning: Video MSTicker: We are late of 20636 miliseconds.
warning: Video MSTicker: We are late of 20694 miliseconds.
warning: Video MSTicker: We are late of 20784 miliseconds.
warning: Video MSTicker: We are late of 20894 miliseconds.
warning: Video MSTicker: We are late of 21016 miliseconds.
warning: echo canceller: we are accumulating too much reference signal, need to throw out 1216 samples
message:: audio_stream_iterate(): local statistics available
Local's current jitter buffer size:77.440002 ms
message:: bandwidth usage: audio=[d=80.1,u=80.1] video=[d=305.3,u=441.8] kbit/sec
message:: Thread processing load: audio=2.135499 video=1268.186768
warning: Video MSTicker: We are late of 21134 miliseconds.
warning: Video MSTicker: We are late of 21256 miliseconds.
warning: Video MSTicker: We are late of 21382 miliseconds.
warning: Video MSTicker: We are late of 21506 miliseconds.
warning: Video MSTicker: We are late of 21638 miliseconds.
warning: Video MSTicker: We are late of 21781 miliseconds.
warning: Video MSTicker: We are late of 21921 miliseconds.
message:: bandwidth usage: audio=[d=81.6,u=80.0] video=[d=271.9,u=185.5] kbit/sec
message:: Thread processing load: audio=1.971647 video=1342.125000
warning: Video MSTicker: We are late of 22068 miliseconds.
message:: audio_stream_iterate(): remote statistics available
remote's interarrival jitter=68
remote's lost packets percentage since last report=0.390625
round trip time=0.258850 seconds
warning: Video MSTicker: We are late of 22216 miliseconds.Please, help me to find the problem.
Thanks,
this is a msx264 git repository :
git clone git://git.linphone.org/msx264.git
-
How do I stream audio from a mic in a raspberry pi with FFmpeg ?
23 mars 2024, par IgnacioI'm trying to follow this to stream audio from a mic in my raspberry pi.


ignacio@pi-satellite-bigbedroom:~ $ ffmpeg -re -f pulse -ac 1 -i plughw:CARD=seeed2micvoicec,DEV=0 -f rtsp -rtsp_transport tcp rtsp://192.168.86.151:8554/live.stream
ffmpeg version 4.3.6-0+deb11u1+rpt5 Copyright (c) 2000-2023 the FFmpeg developers
 built with gcc 10 (Debian 10.2.1-6)
 configuration: --prefix=/usr --extra-version=0+deb11u1+rpt5 --toolchain=hardened --incdir=/usr/include/aarch64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librabbitmq --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --disable-mmal --enable-neon --enable-v4l2-request --enable-libudev --enable-epoxy --enable-sand --libdir=/usr/lib/aarch64-linux-gnu --arch=arm64 --enable-pocketsphinx --enable-libdc1394 --enable-libdrm --enable-vout-drm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
 libavutil 56. 51.100 / 56. 51.100
 libavcodec 58. 91.100 / 58. 91.100
 libavformat 58. 45.100 / 58. 45.100
 libavdevice 58. 10.100 / 58. 10.100
 libavfilter 7. 85.100 / 7. 85.100
 libavresample 4. 0. 0 / 4. 0. 0
 libswscale 5. 7.100 / 5. 7.100
 libswresample 3. 7.100 / 3. 7.100
 libpostproc 55. 7.100 / 55. 7.100
plughw:CARD=seeed2micvoicec,DEV=0: No such process



I believe this shows the cards I have :


ignacio@pi-satellite-bigbedroom:~ $ pactl list sources
Source #0
 State: SUSPENDED
 Name: alsa_output.platform-bcm2835_audio.analog-stereo.monitor
 Description: Monitor of Built-in Audio Analog Stereo
 Driver: module-alsa-card.c
 Sample Specification: s16le 2ch 44100Hz
 Channel Map: front-left,front-right
 Owner Module: 4
 Mute: no
 Volume: front-left: 65536 / 100% / 0.00 dB, front-right: 65536 / 100% / 0.00 dB
 balance 0.00
 Base Volume: 65536 / 100% / 0.00 dB
 Monitor of Sink: alsa_output.platform-bcm2835_audio.analog-stereo
 Latency: 0 usec, configured 0 usec
 Flags: DECIBEL_VOLUME LATENCY 
 Properties:
 device.description = "Monitor of Built-in Audio Analog Stereo"
 device.class = "monitor"
 alsa.card = "0"
 alsa.card_name = "bcm2835 Headphones"
 alsa.long_card_name = "bcm2835 Headphones"
 alsa.driver_name = "snd_bcm2835"
 device.bus_path = "platform-bcm2835_audio"
 sysfs.path = "/devices/platform/soc/3f00b840.mailbox/bcm2835_audio/sound/card0"
 device.form_factor = "internal"
 device.string = "0"
 module-udev-detect.discovered = "1"
 device.icon_name = "audio-card"
 Formats:
 pcm

Source #1
 State: IDLE
 Name: alsa_output.platform-soc_sound.stereo-fallback.monitor
 Description: Monitor of Built-in Audio Stereo
 Driver: module-alsa-card.c
 Sample Specification: s16le 2ch 44100Hz
 Channel Map: front-left,front-right
 Owner Module: 12
 Mute: no
 Volume: front-left: 65536 / 100% / 0.00 dB, front-right: 65536 / 100% / 0.00 dB
 balance 0.00
 Base Volume: 65536 / 100% / 0.00 dB
 Monitor of Sink: alsa_output.platform-soc_sound.stereo-fallback
 Latency: 0 usec, configured 2000000 usec
 Flags: DECIBEL_VOLUME LATENCY 
 Properties:
 device.description = "Monitor of Built-in Audio Stereo"
 device.class = "monitor"
 alsa.card = "2"
 alsa.card_name = "seeed-2mic-voicecard"
 alsa.long_card_name = "seeed-2mic-voicecard"
 alsa.driver_name = "snd_soc_simple_card"
 device.bus_path = "platform-soc:sound"
 sysfs.path = "/devices/platform/soc/soc:sound/sound/card2"
 device.form_factor = "internal"
 device.string = "2"
 module-udev-detect.discovered = "1"
 device.icon_name = "audio-card"
 Formats:
 pcm

Source #2
 State: RUNNING
 Name: alsa_input.platform-soc_sound.stereo-fallback
 Description: Built-in Audio Stereo
 Driver: module-alsa-card.c
 Sample Specification: s16le 2ch 44100Hz
 Channel Map: front-left,front-right
 Owner Module: 12
 Mute: no
 Volume: front-left: 32845 / 50% / -18.00 dB, front-right: 32845 / 50% / -18.00 dB
 balance 0.00
 Base Volume: 20724 / 32% / -30.00 dB
 Monitor of Sink: n/a
 Latency: 688 usec, configured 10000 usec
 Flags: HARDWARE HW_MUTE_CTRL HW_VOLUME_CTRL DECIBEL_VOLUME LATENCY 
 Properties:
 alsa.resolution_bits = "16"
 device.api = "alsa"
 device.class = "sound"
 alsa.class = "generic"
 alsa.subclass = "generic-mix"
 alsa.name = "bcm2835-i2s-wm8960-hifi wm8960-hifi-0"
 alsa.id = "bcm2835-i2s-wm8960-hifi wm8960-hifi-0"
 alsa.subdevice = "0"
 alsa.subdevice_name = "subdevice #0"
 alsa.device = "0"
 alsa.card = "2"
 alsa.card_name = "seeed-2mic-voicecard"
 alsa.long_card_name = "seeed-2mic-voicecard"
 alsa.driver_name = "snd_soc_simple_card"
 device.bus_path = "platform-soc:sound"
 sysfs.path = "/devices/platform/soc/soc:sound/sound/card2"
 device.form_factor = "internal"
 device.string = "hw:2"
 device.buffering.buffer_size = "352800"
 device.buffering.fragment_size = "176400"
 device.access_mode = "mmap+timer"
 device.profile.name = "stereo-fallback"
 device.profile.description = "Stereo"
 device.description = "Built-in Audio Stereo"
 module-udev-detect.discovered = "1"
 device.icon_name = "audio-card"
 Ports:
 analog-input: Analog Input (type: Analog, priority: 10000, availability unknown)
 Active Port: analog-input
 Formats:
 pcm



I want to use the mic from the seeed-2mic-voicecard.


Thanks for the help


-
Video streaming error : Uncaught (in promise) NotSupportedError : Failed to load because no supported source was found
18 septembre 2024, par AizenHere is my problem : I have one video src 1080p (on the frontend). On the frontend, I send this video-route to the backend :


const req = async()=>{try{const res = await axios.get('/catalog/item',{params:{SeriesName:seriesName}});return {data:res.data};}catch(err){console.log(err);return false;}}const fetchedData = await req();-On the backend i return seriesName.Now i can make a full path,what the video is,and where it is,code:



const videoUrl = 'C:/Users/arMori/Desktop/RedditClone/reddit/public/videos';console.log('IT VideoURL',videoUrl);



const selectedFile = `${videoUrl}/${fetchedData.data.VideoSource}/${seriesName}-1080p.mp4`
console.log(`ITS'S SELECTED FILE: ${selectedFile}`);



Ok, I have my src 1080p, now is the time to send it to the backend :


const response = await axios.post('/videoFormat', {videoUrl:selectedFile})console.log('Это консоль лог путей: ',response.data);const videoPaths = response.data;



Backend takes it and FFMpqg makes two types of resolution,720p and 480p,save it to the temp storage on backend, and then returns two routes where these videos stores


async videoUpload(videoUrl:string){try{const tempDir = C:/Users/arMori/Desktop/RedditClone/reddit_back/src/video/temp;const inputFile = videoUrl;console.log('VIDEOURL: ',videoUrl);



const outputFiles = [];
 
 await this.createDirectories(tempDir); 
 outputFiles.push(await this.convertVideo(inputFile, '1280x720', '720p.mp4'));
 outputFiles.push(await this.convertVideo(inputFile, '854x480', '480p.mp4'));
 console.log('OUTUPT FILES SERVICE: ',outputFiles);
 
 return outputFiles;

 }catch(err){
 console.error('VideoFormatterService Error: ',err);
 
 }
}

private convertVideo(inputPath:string,resolution:string,outputFileName:string):Promise<string>{
 const temp = `C:/Users/arMori/Desktop/RedditClone/reddit_back/src/video/temp`;
 return new Promise(async(resolve,reject)=>{
 const height = resolution.split('x')[1];
 console.log('HIEGHT: ',height);
 
 const outputDir = `C:/Users/arMori/Desktop/RedditClone/reddit_back/src/video/temp/${height}p`;
 const outputPath = join(outputDir, outputFileName);
 const isExists = await fs.access(outputPath).then(() => true).catch(() => false);
 if(isExists){ 
 console.log(`File already exists: ${outputPath}`);
 return resolve(outputPath)
 };
 ffmpeg(inputPath)
 .size(`${resolution}`)
 .videoCodec('libx264') // Кодек H.264
 .audioCodec('aac') 
 .output(outputPath)
 .on('end',()=>resolve(outputPath))
 .on('error',(err)=>reject(err))
 .run()
 
 })
}

private async createDirectories(temp:string){
 try{
 const dir720p = `${temp}/720p`;
 const dir480p = `${temp}/480p`;
 const dir720pExists = await fs.access(dir720p).then(() => true).catch(() => false);
 const dir480pExists = await fs.access(dir480p).then(() => true).catch(() => false);
 if(dir720pExists && dir480pExists){
 console.log('FILES ALIVE');
 return;
 }
 if (!dir720pExists) {
 await fs.mkdir(dir720p, { recursive: true });
 console.log('Папка 720p создана');
 }
 
 if (!dir480pExists) {
 await fs.mkdir(dir480p, { recursive: true });
 console.log('Папка 480p создана');
 }
 } catch (err) {
 console.error('Ошибка при создании директорий:', err);
 }
}
</string>


Continue frontentd code :


let videoPath;

if (quality === '720p') {
 videoPath = videoPaths[0];
} else if (quality === '480p') {
 videoPath = videoPaths[1];
}

if (!videoPath) {
 console.error('Video path not found!');
 return;
}

// Получаем видео по его пути
console.log('VIDEOPATH LOG: ',videoPath);
 
const videoRes = await axios.get('/videoFormat/getVideo', { 
 params: { path: videoPath } ,
 headers: { Range: 'bytes=0-' },
 responseType: 'blob'
 });
 console.log('Video fetched: ', videoRes);
 const videoBlob = new Blob([videoRes.data], { type: 'video/mp4' });
 const videoURL = URL.createObjectURL(videoBlob);
 return videoURL;
 /* console.log('Видео успешно загружено:', response.data); */
 } catch (error) {
 console.error('Ошибка при загрузке видео:', error);
 }
}



Here I just choose one of the route and make a new GET request (VideoRes), now in the controller in the backend, I'm trying to do a video streaming :


@Public()
 @Get('/getVideo')
 async getVideo(@Query('path') videoPath:string,@Req() req:Request,@Res() res:Response){
 try {
 console.log('PATH ARGUMENT: ',videoPath);
 console.log('VIDEOPATH IN SERVICE: ',videoPath);
 const videoSize = (await fs.stat(videoPath)).size;
 const CHUNK_SIZE = 10 ** 6;
 const range = req.headers['range'] as string | undefined;
 if (!range) {
 return new ForbiddenException('Range не найденно');
 }
 const start = Number(range.replace(/\D/g,""));
 const end = Math.min(start + CHUNK_SIZE,videoSize - 1);

 const contentLength = end - start + 1;
 const videoStream = fsSync.createReadStream(videoPath, { start, end });
 const headers = {
 'Content-Range':`bytes ${start}-${end}/${videoSize}`,
 'Accept-Ranges':'bytes',
 'Content-Length':contentLength,
 'Content-Type':'video/mp4'
 }
 
 res.writeHead(206,headers);

 // Передаем поток в ответ
 videoStream.pipe(res);
 

 // Если возникнет ошибка при стриминге, логируем ошибку
 videoStream.on('error', (error) => {
 console.error('Ошибка при чтении видео:', error);
 res.status(500).send('Ошибка при чтении видео');
 });
 } catch (error) {
 console.error('Ошибка при обработке запросов:', error);
 return res.status(400).json({ message: 'Ошибка при обработке getVideo запросов' });
 }
 }



Send to the frontend


res.writeHead(206,headers);



In the frontend, I make blob url for video src and return it


const videoBlob = new Blob([videoRes.data], { type: 'video/mp4' });const videoURL = URL.createObjectURL(videoBlob);return videoURL;



And assign src to the video :


useVideo(seriesName,quality).then(src => {
 if (src) {
 console.log('ITS VIDEOLOGISC GOIDA!');
 if(!playRef.current) return;
 
 const oldURL = playRef.current.src;
 if (oldURL && oldURL.startsWith('blob:')) {
 URL.revokeObjectURL(oldURL);
 }
 playRef.current.pause();
 playRef.current.src = '';
 setQuality(quality);
 console.log('SRC: ',src);
 
 playRef.current.src = src;
 playRef.current.load();
 console.log('ITS VIDEOURL GOIDA!');
 togglePlayPause();
 }
 })
 .catch(err => console.error('Failed to fetch video', err));



But the problem is :




Vinland-Saga:1 Uncaught (in promise) NotSupportedError : Failed to load because no supported source was found




And I don't know why...


I tried everything, but I don't understand why src is incorrect..