
Recherche avancée
Médias (1)
-
La conservation du net art au musée. Les stratégies à l’œuvre
26 mai 2011
Mis à jour : Juillet 2013
Langue : français
Type : Texte
Autres articles (54)
-
Ajouter notes et légendes aux images
7 février 2011, parPour pouvoir ajouter notes et légendes aux images, la première étape est d’installer le plugin "Légendes".
Une fois le plugin activé, vous pouvez le configurer dans l’espace de configuration afin de modifier les droits de création / modification et de suppression des notes. Par défaut seuls les administrateurs du site peuvent ajouter des notes aux images.
Modification lors de l’ajout d’un média
Lors de l’ajout d’un média de type "image" un nouveau bouton apparait au dessus de la prévisualisation (...) -
Prérequis à l’installation
31 janvier 2010, parPréambule
Cet article n’a pas pour but de détailler les installations de ces logiciels mais plutôt de donner des informations sur leur configuration spécifique.
Avant toute chose SPIPMotion tout comme MediaSPIP est fait pour tourner sur des distributions Linux de type Debian ou dérivées (Ubuntu...). Les documentations de ce site se réfèrent donc à ces distributions. Il est également possible de l’utiliser sur d’autres distributions Linux mais aucune garantie de bon fonctionnement n’est possible.
Il (...) -
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 (8872)
-
How can I send a virtual camera to Genymotion or Android Studio Emulator in Ubuntu ?
4 décembre 2020, par ykasurI created a virtual camera using v4l2loopback and ffmpeg. The command I use for ffmpeg is :
ffmpeg -re -l oop 1 -i vin.png -vf format=yuv420p -f v4l2 /dev/video2


vin.png is the image I want to stream to the webcam and /dev/video2 is the virtual webcam I created with v4l2loopback.
The virtual webcam works and I can see it e.g. with onlinemicetest.com/webcam-test.
I'm using the Genymotion emulator with the newest Android API (I tried 7.0, 8.1 and 10.0) on Ubuntu 20.40.
Genymotion detects the virtual camera but only displays a dummy image :
Wrong dummy Image from Genymotion
I also tried (and would prefer to use) the android studio emulator. But I can only select Webcam0 in the configuration of the device camera and that points to the real integrated camera and not to my virtual webcam.


I don't need to use ffmpeg, but I do need to use a tool that lets me control which image to stream from the command line.


Is there a way to solve this ? Many thanks in advance !


Update 17.11.2020 :
The Genymotion support answered me, that they plan to support virtual cameras in the future. They might be ready to add this in mid 2021.


-
FFMPEG recode clip1 to match clip2 for concat demux
21 novembre 2020, par Gert GottschalkI want to concat two video clips using ffmpeg concat. To use concat demuxer both should have same codec settings. clip2 is much shorter so I want to recode it to match clip1. Initially clip2 had tbn not matching and I adjusted that with '-video_track_timescale 50000'. Still the concat video after the cut into clip2 is garbled (audio seems OK)


This is what ffprobe tells for clip1 :


ffprobe version N-80251-g0c7fa15 Copyright (c) 2007-2016 the FFmpeg developers
 built with gcc 4.8 (Ubuntu 4.8.4-2ubuntu1~14.04.3)
 configuration: --prefix=/home/tools/ffmpeg_build --pkg-config-flags=--static --extra-cflags=-I/home/tools/ffmpeg_build/include --extra-ldflags=-L/home/tools/ffmpeg_build/lib --bindir=/home/tools/bin --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree
 libavutil 55. 24.100 / 55. 24.100
 libavcodec 57. 45.100 / 57. 45.100
 libavformat 57. 37.101 / 57. 37.101
 libavdevice 57. 0.101 / 57. 0.101
 libavfilter 6. 46.101 / 6. 46.101
 libswscale 4. 1.100 / 4. 1.100
 libswresample 2. 0.101 / 2. 0.101
 libpostproc 54. 0.100 / 54. 0.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'clip1.mp4':
 Metadata:
 major_brand : isom
 minor_version : 1
 compatible_brands: isomavc1
 creation_time : 2020-11-09 01:16:52
 Duration: 01:23:09.33, start: 0.000000, bitrate: 2279 kb/s
 Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 2080 kb/s, 50 fps, 50 tbr, 50k tbn, 100 tbc (default)
 Metadata:
 creation_time : 2020-11-09 01:16:52
 handler_name : 11.07_21-45_ard_90_TVOON_DE.mpg.HD_video.h264@GPAC0.5.2-DEV-revVersion: 0.5.2-426-gc5ad4e4+dfsg5-1ubuntu0.1
 Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 196 kb/s (default)
 Metadata:
 creation_time : 2020-11-09 01:17:45
 handler_name : 11.07_21-45_ard_90_TVOON_DE.mpg.HD.aac@GPAC0.5.2-DEV-revVersion: 0.5.2-426-gc5ad4e4+dfsg5-1ubuntu0.1



From clip2


ffprobe version N-80251-g0c7fa15 Copyright (c) 2007-2016 the FFmpeg developers
 built with gcc 4.8 (Ubuntu 4.8.4-2ubuntu1~14.04.3)
 configuration: --prefix=/home/tools/ffmpeg_build --pkg-config-flags=--static --extra-cflags=-I/home/tools/ffmpeg_build/include --extra-ldflags=-L/home/tools/ffmpeg_build/lib --bindir=/home/tools/bin --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree
 libavutil 55. 24.100 / 55. 24.100
 libavcodec 57. 45.100 / 57. 45.100
 libavformat 57. 37.101 / 57. 37.101
 libavdevice 57. 0.101 / 57. 0.101
 libavfilter 6. 46.101 / 6. 46.101
 libswscale 4. 1.100 / 4. 1.100
 libswresample 2. 0.101 / 2. 0.101
 libpostproc 54. 0.100 / 54. 0.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'clip2.mp4':
 Metadata:
 major_brand : isom
 minor_version : 512
 compatible_brands: isomiso2avc1mp41
 encoder : Lavf57.37.101
 comment : 
 Duration: 00:18:42.02, start: 0.000000, bitrate: 1693 kb/s
 Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 1553 kb/s, 50 fps, 50 tbr, 50k tbn, 100 tbc (default)
 Metadata:
 handler_name : VideoHandler
 Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 130 kb/s (default)
 Metadata:
 handler_name : SoundHandler



Then for concat :


/home/tools/bin/ffmpeg -f concat -i list.files -y clip12.mp4



The only gap is with
clip1 : 2080 kb/s
clip2 : 1553 kb/s


Is that significant ?


If yes, how to recode clip2 to match and result in concat clip12 being clean ?


EDIT (Per feedback from llogan) :


Probing input clips with latest ffprobe.


Clip1 :


ffprobe version N-54874-ga1553b0cfb-static https://johnvansickle.com/ffmpeg/ Copyright (c) 2007-2020 the FFmpeg developers
 built with gcc 8 (Debian 8.3.0-6)
 configuration: --enable-gpl --enable-version3 --enable-static --disable-debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio --cc=gcc --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gmp --enable-libgme --enable-gray --enable-libaom --enable-libfribidi --enable-libass --enable-libvmaf --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librubberband --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libvorbis --enable-libopus --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libdav1d --enable-libxvid --enable-libzvbi --enable-libzimg
 libavutil 56. 60.100 / 56. 60.100
 libavcodec 58.112.101 / 58.112.101
 libavformat 58. 64.100 / 58. 64.100
 libavdevice 58. 11.102 / 58. 11.102
 libavfilter 7. 88.102 / 7. 88.102
 libswscale 5. 8.100 / 5. 8.100
 libswresample 3. 8.100 / 3. 8.100
 libpostproc 55. 8.100 / 55. 8.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'clip1.mp4':
 Metadata:
 major_brand : isom
 minor_version : 1
 compatible_brands: isomavc1
 creation_time : 2020-11-09T01:16:52.000000Z
 Duration: 01:23:09.33, start: 0.000000, bitrate: 2279 kb/s
 Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 2080 kb/s, 50 fps, 50 tbr, 50k tbn, 100 tbc (default)
 Metadata:
 creation_time : 2020-11-09T01:16:52.000000Z
 handler_name : 11.07_21-45_ard_90_TVOON_DE.mpg.HD_video.h264@GPAC0.5.2-DEV-revVersion: 0.5.2-426-gc5ad4e4+dfsg5-1ubuntu0.1
 Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 196 kb/s (default)
 Metadata:
 creation_time : 2020-11-09T01:17:45.000000Z
 handler_name : 11.07_21-45_ard_90_TVOON_DE.mpg.HD.aac@GPAC0.5.2-DEV-revVersion: 0.5.2-426-gc5ad4e4+dfsg5-1ubuntu0.1



Command & log to change clip2 :


/usr/share/ffmpeg.4.3.1//ffmpeg-git-20201104-amd64-static/ffmpeg -i clip2.avi -ss 00:12:55 -t 00:05:48 -c:v libx264 -profile:v main -video_track_timescale 50k -c:a copy -y clip2.mp4 2> ffmpeg_clip2.log
ffmpeg version N-54874-ga1553b0cfb-static https://johnvansickle.com/ffmpeg/ Copyright (c) 2000-2020 the FFmpeg developers
 built with gcc 8 (Debian 8.3.0-6)
 configuration: --enable-gpl --enable-version3 --enable-static --disable-debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio --cc=gcc --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gmp --enable-libgme --enable-gray --enable-libaom --enable-libfribidi --enable-libass --enable-libvmaf --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librubberband --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libvorbis --enable-libopus --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libdav1d --enable-libxvid --enable-libzvbi --enable-libzimg
 libavutil 56. 60.100 / 56. 60.100
 libavcodec 58.112.101 / 58.112.101
 libavformat 58. 64.100 / 58. 64.100
 libavdevice 58. 11.102 / 58. 11.102
 libavfilter 7. 88.102 / 7. 88.102
 libswscale 5. 8.100 / 5. 8.100
 libswresample 3. 8.100 / 3. 8.100
 libpostproc 55. 8.100 / 55. 8.100
Input #0, avi, from 'clip2.avi':
 Metadata:
 comment : 
 encoder : Lavf58.42.100
 encoded_by : www.onlinetvrecorder.com
 Duration: 00:35:48.90, start: 0.000000, bitrate: 2243 kb/s
 Stream #0:0: Video: h264 (Main) (H264 / 0x34363248), yuv420p(progressive), 1280x720 [SAR 1:1 DAR 16:9], 2034 kb/s, 50 fps, 50 tbr, 50 tbn, 100 tbc
 Stream #0:1: Audio: mp3 (U[0][0][0] / 0x0055), 48000 Hz, stereo, fltp, 192 kb/s
Stream mapping:
 Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
 Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
frame= 0 fps=0.0 q=0.0 size= 0kB time=-577014:32:22.77 bitrate= -0.0kbits/s speed=N/A 
...
frame= 0 fps=0.0 q=0.0 size= 0kB time=-577014:32:22.77 bitrate= -0.0kbits/s speed=N/A
[libx264 @ 0x71fb740] using SAR=1/1
[libx264 @ 0x71fb740] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3
[libx264 @ 0x71fb740] profile Main, level 3.2, 4:2:0, 8-bit
[libx264 @ 0x71fb740] 264 - core 161 r3027 4121277 - H.264/MPEG-4 AVC codec - Copyleft 2003-2020 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x1:0x111 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=6 lookahead_threads=1 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
Output #0, mp4, to 'clip2.mp4':
 Metadata:
 comment : 
 encoded_by : www.onlinetvrecorder.com
 encoder : Lavf58.64.100
 Stream #0:0: Video: h264 (libx264) (avc1 / 0x31637661), yuv420p(progressive), 1280x720 [SAR 1:1 DAR 16:9], q=-1--1, 50 fps, 50k tbn, 50 tbc
 Metadata:
 encoder : Lavc58.112.101 libx264
 Side data:
 cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A
 Stream #0:1: Audio: mp3 (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 192 kb/s
frame= 15 fps=0.4 q=0.0 size= 0kB time=00:00:00.31 bitrate= 1.2kbits/s speed=0.00806x 
...
frame=17400 fps= 73 q=-1.0 Lsize= 62382kB time=00:05:47.97 bitrate=1468.6kbits/s speed=1.47x 
video:53846kB audio:8156kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.611439%
[libx264 @ 0x71fb740] frame I:157 Avg QP:18.21 size: 42082
[libx264 @ 0x71fb740] frame P:5607 Avg QP:22.21 size: 6677
[libx264 @ 0x71fb740] frame B:11636 Avg QP:23.93 size: 953
[libx264 @ 0x71fb740] consecutive B-frames: 8.3% 6.0% 5.0% 80.8%
[libx264 @ 0x71fb740] mb I I16..4: 47.5% 0.0% 52.5%
[libx264 @ 0x71fb740] mb P I16..4: 5.7% 0.0% 1.1% P16..4: 35.4% 6.2% 3.0% 0.0% 0.0% skip:48.4%
[libx264 @ 0x71fb740] mb B I16..4: 0.2% 0.0% 0.0% B16..8: 21.0% 0.4% 0.0% direct: 0.5% skip:77.9% L0:45.1% L1:53.8% BI: 1.2%
[libx264 @ 0x71fb740] coded y,uvDC,uvAC intra: 24.6% 38.3% 6.0% inter: 2.8% 4.7% 0.0%
[libx264 @ 0x71fb740] i16 v,h,dc,p: 43% 24% 15% 18%
[libx264 @ 0x71fb740] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 26% 20% 19% 6% 7% 6% 6% 6% 4%
[libx264 @ 0x71fb740] i8c dc,h,v,p: 57% 20% 20% 4%
[libx264 @ 0x71fb740] Weighted P-Frames: Y:0.5% UV:0.4%
[libx264 @ 0x71fb740] ref P L0: 70.3% 12.1% 14.0% 3.6% 0.0%
[libx264 @ 0x71fb740] ref B L0: 92.9% 5.9% 1.2%
[libx264 @ 0x71fb740] ref B L1: 97.5% 2.5%
[libx264 @ 0x71fb740] kb/s:1267.54



I'm observing mismatch in what I assume is the audio channel.


Clip1 :


/usr/share/ffmpeg.4.3.1//ffmpeg-git-20201104-amd64-static/ffprobe clip1.mp4
 Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 2080 kb/s, 50 fps, 50 tbr, 50k tbn, 100 tbc (default)
 Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 196 kb/s (default)



Clip2 :


/usr/share/ffmpeg.4.3.1//ffmpeg-git-20201104-amd64-static/ffprobe clip2.mp4 
 Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 1267 kb/s, 50 fps, 50 tbr, 50k tbn, 100 tbc (default)
 Stream #0:1(und): Audio: mp3 (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 192 kb/s (default)



Probably need to match audio channel. I noticed that the concat too a long time. I was expecting the concat to just do copying and not re-rendering.


-
FFMpeg C++ encoder fails with hardware acceleration quick sync intel
28 août 2022, par tealsI am trying to debug an issue I have with a simple C++ encoder using FFMmpeg. The following code below works correctly on these other hardware acceleration systems/platforms :


- 

- Mac/VideoToolbox,
- Cuda/NVEnc
- Raspberry pi/h264_v4l2m2m.








It fails on intel quick sync at
avcodec_open2
. I'm using Ubuntu 22.04. I built FFMpeg from source with the Intel Media SDK installed and configured. I verified that the QuickSync install works. I also have a corresponding decoder implementation that works correctly using intel quick sync. So I know everything properly installed. I am also running this on an 11th Gen Intel CPU.

[hevc_qsv @ 0x564b0d34f0c0] Low power mode is unsupported (This sometimes shows up)
[hevc_qsv @ 0x563691234000] some encoding parameters are not supported by the QSV runtime. Please double check the input parameters.
Error initializing output stream 0:0 -- Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height



This is the only error that I get and I haven't found any helpful resources. I tried playing around with different parameters but nothing seems to work. Any help or insight would be extremely helpful.


bool VideoEncoder::create() {
 char const* outfile = filePath.c_str();

 // open output format context
 int ret = avformat_alloc_output_context2(&ofctx, nullptr, nullptr, outfile);
 if (ret < 0) {
 std::cerr << "fail to avformat_alloc_output_context2(" << outfile << "): ret=" << ret;
 return false;
 }

 // create new video stream
 const AVCodec* codec = avcodec_find_encoder_by_name(encoderName.c_str());
 vstrm = avformat_new_stream(ofctx, codec);
 if (!vstrm) {
 std::cerr << "fail to avformat_new_stream";
 return false;
 }

 // open video encoder
 cctx = avcodec_alloc_context3(codec);
 if (!vstrm) {
 std::cerr << "fail to avcodec_alloc_context3";
 return false;
 }
 const AVRational dst_fps = {fps, 1};
 cctx->width = width;
 cctx->height = height;
 if(pixel_format != AV_PIX_FMT_NONE) {
 cctx->pix_fmt = pixel_format;
 }
 else {
 cctx->pix_fmt = codec->pix_fmts[0];
 }
 cctx->time_base = av_inv_q(dst_fps);
 cctx->framerate = dst_fps;
 cctx->bit_rate = bitrate * 1000000;


 AVDictionary* options = nullptr;
 if(gpu_id >= 0) {
 av_dict_set_int(&options, "gpu", gpu_id, 0);
 }

 
 if (ofctx->oformat->flags & AVFMT_GLOBALHEADER)
 cctx->flags |= AV_CODEC_FLAG_GLOBAL_HEADER;
 ret = avcodec_open2(cctx, codec, &options);
 if (ret < 0) {
 std::cerr << "fail to avcodec_open2: ret=" << ret;
 return false;
 }
 avcodec_parameters_from_context(vstrm->codecpar, cctx);

 //For mac/quicktime we need to add hvc1 tag.
 if (encoderName.find("hevc") != std::string::npos) {
 vstrm->codecpar->codec_tag = MKTAG('h', 'v', 'c', '1');
 }

 /*
 std::cout
 << "outfile: " << outfile << "\n"
 << "format: " << ofctx->oformat->name << "\n"
 << "vcodec: " << codec->name << "\n"
 << "size: " << width << 'x' << height << "\n"
 << "fps: " << av_q2d(cctx->framerate) << "\n"
 << "pixfmt: " << av_get_pix_fmt_name(cctx->pix_fmt) << "\n"
 << std::flush;*/

 // initialize sample scaler
 swsCtx = sws_getContext(
 width, height, AV_PIX_FMT_BGR24,
 width, height, cctx->pix_fmt,
 SWS_BILINEAR, nullptr, nullptr, nullptr);
 if (!swsCtx) {
 std::cerr << "fail to sws_getContext";
 return false;
 }

 // allocate frame buffer for encoding
 frame = av_frame_alloc();
 frame->width = width;
 frame->height = height;
 frame->format = static_cast<int>(cctx->pix_fmt);
 ret = av_frame_get_buffer(frame, 32);
 if (ret < 0) {
 std::cerr << "fail to av_frame_get_buffer: ret=" << ret;
 return false;
 }

 // allocate packet to retrive encoded frame
 pkt = av_packet_alloc();
 // open output IO context
 ret = avio_open2(&ofctx->pb, outfile, AVIO_FLAG_WRITE, nullptr, nullptr);
 if (ret < 0) {
 std::cerr << "fail to avio_open2: ret=" << ret;
 return false;
 }

 // write media container header (if any)
 ret = avformat_write_header(ofctx, nullptr);
 if (ret < 0) {
 std::cerr << "fail to avformat_write_header: ret=" << ret;
 return false;
 }

 return true;
}
</int>