
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 (66)
-
(Dés)Activation de fonctionnalités (plugins)
18 février 2011, parPour gérer l’ajout et la suppression de fonctionnalités supplémentaires (ou plugins), MediaSPIP utilise à partir de la version 0.2 SVP.
SVP permet l’activation facile de plugins depuis l’espace de configuration de MediaSPIP.
Pour y accéder, il suffit de se rendre dans l’espace de configuration puis de se rendre sur la page "Gestion des plugins".
MediaSPIP est fourni par défaut avec l’ensemble des plugins dits "compatibles", ils ont été testés et intégrés afin de fonctionner parfaitement avec chaque (...) -
Le plugin : Podcasts.
14 juillet 2010, parLe problème du podcasting est à nouveau un problème révélateur de la normalisation des transports de données sur Internet.
Deux formats intéressants existent : Celui développé par Apple, très axé sur l’utilisation d’iTunes dont la SPEC est ici ; Le format "Media RSS Module" qui est plus "libre" notamment soutenu par Yahoo et le logiciel Miro ;
Types de fichiers supportés dans les flux
Le format d’Apple n’autorise que les formats suivants dans ses flux : .mp3 audio/mpeg .m4a audio/x-m4a .mp4 (...) -
Personnaliser les catégories
21 juin 2013, parFormulaire de création d’une catégorie
Pour ceux qui connaissent bien SPIP, une catégorie peut être assimilée à une rubrique.
Dans le cas d’un document de type catégorie, les champs proposés par défaut sont : Texte
On peut modifier ce formulaire dans la partie :
Administration > Configuration des masques de formulaire.
Dans le cas d’un document de type média, les champs non affichés par défaut sont : Descriptif rapide
Par ailleurs, c’est dans cette partie configuration qu’on peut indiquer le (...)
Sur d’autres sites (8265)
-
FFMPEG script to merge multiple videos and a background image
3 février 2021, par BitBitI have 30 clips which are different in aspect ratio(like some videos are 10801920(they are vertical) and some are 1280720(horizontal aspect ratio videos). I want to merge all of them but also have a static background image that is of 1920x1080 aspect ratio. The video would be such that all the clips are concatenated but they have a background image(just like those tiktok compilation videos on youtube). Can someone please help me with this program ?


-
How to reduce time while writing to output stream
9 février 2021, par SummitI am streaming the render ouput of a opengl application using mpegts.The issue that i am facing is that the time taken to encode the frame is quite long.


The application renders at 60 fps with frame size of 1920 X 1080 , the frame data of the application is pushed to a std::queue.


This is the process for ffmpeg.


I initialize the stream like this.

 streamerUpd.InitUPD("udp://127.0.0.1:1234", 1920, 1080, rings_);

int StreamUPD::InitUPD(const char* url, int width, int height, std::shared_ptr<ringbuffer2> rings)
{

 rings_ = rings;
 width_ = width;
 height_ = height;
 filename = url;
 int ret;
 av_dict_set(&opt, "pkt_size", "1316", 0);
 
 
 avformat_alloc_output_context2(&oc, nullptr, "mpegts", filename);
 if (!oc) {
 return 1;
 }

 fmt = oc->oformat;
 /* Add the audio and video streams using the default format codecs
 * and initialize the codecs. */
 if (fmt->video_codec != AV_CODEC_ID_NONE) {
 add_stream(&video_st, oc, &video_codec, fmt->video_codec);
 have_video = 1;
 encode_video = 1;
 }

 /* Write the stream header, if any. */
 ret = avformat_write_header(oc, &opt);
 if (ret < 0) {
 fprintf(stderr, "Error occurred when opening output file: %s\n",
 av_err2str(ret));
 return 1;
 }
 thr = std::thread(&StreamUPD::output_result, this);
 return 0;
}
</ringbuffer2>


////////////////////////////////////////////////////////////////////////////////////////


// Add the output stream


void StreamUPD::add_stream(OutputStream* ost, AVFormatContext* oc, AVCodec** codec, enum AVCodecID codec_id)
{
 AVCodecContext* c;
 int i;
 /* find the encoder */
 *codec = avcodec_find_encoder(codec_id);
 if (!(*codec)) {
 fprintf(stderr, "Could not find encoder for '%s'\n",
 avcodec_get_name(codec_id));
 exit(1);
 }
 ost->st = avformat_new_stream(oc, NULL);
 if (!ost->st) {
 fprintf(stderr, "Could not allocate stream\n");
 exit(1);
 }
 ost->st->id = oc->nb_streams - 1;
 c = avcodec_alloc_context3(*codec);
 if (!c) {
 fprintf(stderr, "Could not alloc an encoding context\n");
 exit(1);
 }
 ost->enc = c;
 switch ((*codec)->type) {
 case AVMEDIA_TYPE_VIDEO:
 c->codec_id = codec_id;
 c->bit_rate = 400000;

 /* Resolution must be a multiple of two. */
 c->width = width_;
 c->height = height_;
 /* timebase: This is the fundamental unit of time (in seconds) in terms
 * of which frame timestamps are represented. For fixed-fps content,
 * timebase should be 1/framerate and timestamp increments should be
 * identical to 1. */
 ost->st->time_base = { 1, STREAM_FRAME_RATE };
 c->time_base = ost->st->time_base;
 c->gop_size = 12; /* emit one intra frame every twelve frames at most */
 c->pix_fmt = STREAM_PIX_FMT;
 
 if (c->codec_id == AV_CODEC_ID_MPEG2VIDEO) {
 /* just for testing, we also add B-frames */
 qDebug() << "This is MPEG2VIDEO Frame";
 c->max_b_frames = 2;
 
 }
 if (c->codec_id == AV_CODEC_ID_MPEG1VIDEO) {
 /* Needed to avoid using macroblocks in which some coeffs overflow.
 * This does not happen with normal video, it just happens here as
 * the motion of the chroma plane does not match the luma plane. */
 c->mb_decision = 2;
 }
 break;
 default:
 break;
 }
 /* Some formats want stream headers to be separate. */
 if (oc->oformat->flags & AVFMT_GLOBALHEADER)
 c->flags |= AV_CODEC_FLAG_GLOBAL_HEADER;
}



//////////////////////////////////////////////////////////////////////////////////


// Open the video


void StreamUPD::open_video(AVFormatContext* oc, AVCodec* codec, OutputStream* ost, AVDictionary* opt_arg)
 {
 int ret;
 AVCodecContext* c = ost->enc;
 AVDictionary* opt = NULL;
 av_dict_copy(&opt, opt_arg, 0);
 /* open the codec */
 ret = avcodec_open2(c, codec, &opt);
 av_dict_free(&opt);
 if (ret < 0) {
 fprintf(stderr, "Could not open video codec: %s\n", av_err2str(ret));
 exit(1);
 }
 /* allocate and init a re-usable frame */
 ost->frame = alloc_picture(c->pix_fmt, c->width, c->height);
 if (!ost->frame) {
 fprintf(stderr, "Could not allocate video frame\n");
 exit(1);
 }
 /* If the output format is not YUV420P, then a temporary YUV420P
 * picture is needed too. It is then converted to the required
 * output format. */
 ost->tmp_frame = NULL;
 if (c->pix_fmt != AV_PIX_FMT_YUV420P) {
 ost->tmp_frame = alloc_picture(AV_PIX_FMT_YUV420P, c->width, c->height);
 if (!ost->tmp_frame) {
 fprintf(stderr, "Could not allocate temporary picture\n");
 exit(1);
 }
 }
 /* copy the stream parameters to the muxer */
 ret = avcodec_parameters_from_context(ost->st->codecpar, c);
 if (ret < 0) {
 fprintf(stderr, "Could not copy the stream parameters\n");
 exit(1);
 }
 }



Once i have setup the ffmpeg output stream this is how i am streaming the data.


This function gets the frame data from the std::queue(pixelsQueue) and sends it for encoding.


int StreamUPD::stream_video_frame()
{ 
 ost = &video_st;
 c = ost->enc; 

 /* when we pass a frame to the encoder, it may keep a reference to it
 * internally; make sure we do not overwrite it here */
 if (av_frame_make_writable(ost->frame) < 0)
 exit(1);
 if (!ost->sws_ctx) {
 ost->sws_ctx = sws_getContext(c->width, c->height,
 AV_PIX_FMT_RGB24,
 c->width, c->height,
 c->pix_fmt,
 SWS_FAST_BILINEAR, NULL, NULL, NULL);
 if (!ost->sws_ctx) {
 fprintf(stderr,
 "Could not initialize the conversion context\n");
 exit(1);
 }
 }
 finished_ = true;

 if (pixelsQueue.size() > 0) { 
 if (pixelsQueue.pop(pixels)) {
 fill_yuv_image(ost->sws_ctx, frame_data->pixels_.get(), ost->frame, c->width, c->height);
 ost->frame->pts = ost->next_pts++;
 return write_frame(oc, ost->enc, ost->st, ost->frame);
 }
 }
 return 1;
}



Writing the data to the output stream.


The function avcodec_receive_packet is the one that takes lot of time.


int StreamUPD::write_frame(AVFormatContext* fmt_ctx, AVCodecContext* c,
 AVStream* st, AVFrame* frame)
{
 int ret;
 // send the frame to the encoder
 AVPacket pkt = { 0 };
 ret = avcodec_send_frame(c, frame);
 ret = avcodec_receive_packet(c, &pkt);
 if (ret < 0) {
 fprintf(stderr, "Error sending a frame to the encoder: %s\n",
 av_err2str(ret));
 exit(1);
 }
 
 while (ret >= 0) {
 AVPacket pkt = { 0 };
 ret = avcodec_receive_packet(c, &pkt); // This is the function that takes lot of time
 if (ret == AVERROR(EAGAIN) || ret == AVERROR_EOF)
 break;
 else if (ret < 0) {
 fprintf(stderr, "Error encoding a frame: %s\n", av_err2str(ret));
 exit(1);
 }
 // rescale output packet timestamp values from codec to stream timebase 
 av_packet_rescale_ts(&pkt, c->time_base, st->time_base);
 pkt.stream_index = st->index;
 // Write the compressed frame to the media file. 
 ret = av_interleaved_write_frame(fmt_ctx, &pkt);
 av_packet_unref(&pkt);
 if (ret < 0) {
 fprintf(stderr, "Error while writing output packet: %s\n", av_err2str(ret));
 exit(1);
 }
 }
 return ret == AVERROR_EOF ? 1 : 0;
}



How can i reduce the outputting time while writing the frames to the stream ?


Currently i push more frames in the buffer and the outputting speed is less so the buffer starts to run out of memory in some time.


-
Why X.Org's X Server has stopped working on Google Colab ?
20 février 2021, par RahulI am Using X server for the virtual screen on Google Colab and capturing that screen with ffmpeg to record it and live stream it to twitch. (for the reinforcement learning project)




The above process was completely working till my last use of my Colab notebook (on mid-January 2021), but now (on 19th February 2021) I am using the same notebook and the streaming code has stopped working.




I am adding config and log file data below. (I have never seen these files before because it was working, now it's not so I don't have any idea what wrong)


The config file stored at
/etc/X11/xorg.conf
have the following data :

# nvidia-xconfig: X configuration file generated by nvidia-xconfig
# nvidia-xconfig: version 418.67

Section "ServerLayout"
 Identifier "Layout0"
 Screen 0 "Screen0"
 InputDevice "Keyboard0" "CoreKeyboard"
 InputDevice "Mouse0" "CorePointer"
EndSection

Section "Files"
EndSection

Section "InputDevice"
 # generated from default
 Identifier "Mouse0"
 Driver "mouse"
 Option "Protocol" "auto"
 Option "Device" "/dev/mouse"
 Option "Emulate3Buttons" "no"
 Option "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"
 # generated from default
 Identifier "Keyboard0"
 Driver "kbd"
EndSection

Section "Monitor"
 Identifier "Monitor0"
 VendorName "Unknown"
 ModelName "Unknown"
 HorizSync 28.0 - 33.0
 VertRefresh 43.0 - 72.0
 Option "DPMS"
EndSection

Section "Device"
 Identifier "Device0"
 Driver "nvidia"
 VendorName "NVIDIA Corporation"
 BoardName "Tesla T4"
 BusID "PCI:0:4:0"
 MatchSeat "seat-1"
EndSection

Section "Screen"
 Identifier "Screen0"
 Device "Device0"
 Monitor "Monitor0"
 DefaultDepth 24
 Option "AllowEmptyInitialConfiguration" "True"
 SubSection "Display"
 Virtual 1920 1080
 Depth 24
 EndSubSection
EndSection



The log file stored at
/var/log/Xorg.0.log
have the following data :

[ 464.605] 
X.Org X Server 1.19.6
Release Date: 2017-12-20
[ 464.605] X Protocol Version 11, Revision 0
[ 464.605] Build Operating System: Linux 4.15.0-124-generic x86_64 Ubuntu
[ 464.605] Current Operating System: Linux 9d3fe3949671 4.19.112+ #1 SMP Thu Jul 23 08:00:38 PDT 2020 x86_64
[ 464.605] Kernel command line: BOOT_IMAGE=/syslinux/vmlinuz.A init=/usr/lib/systemd/systemd boot=local rootwait ro noresume noswap loglevel=7 noinitrd console=ttyS0 security=apparmor virtio_net.napi_tx=1 systemd.unified_cgroup_hierarchy=false systemd.legacy_systemd_cgroup_controller=false csm.disabled=1 dm_verity.error_behavior=3 dm_verity.max_bios=-1 dm_verity.dev_wait=1 i915.modeset=1 cros_efi loadpin.enabled=0 root=/dev/dm-0 "dm=1 vroot none ro 1,0 4077568 verity payload=PARTUUID=555BDB75-CBD7-CD4A-B24E-29B13D7AC0DF hashtree=PARTUUID=555BDB75-CBD7-CD4A-B24E-29B13D7AC0DF hashstart=4077568 alg=sha256 root_hexdigest=42104d547ac104fb7061529e78f53e4f3e8c3d3cbb040dc6e0f84aad68491347 salt=9dc7f3acc4e2ce65be16356e960c2b21b51a917fa31d2e891fd295490c991e41" mitigations=off
[ 464.605] Build Date: 30 November 2020 08:01:56PM
[ 464.605] xorg-server 2:1.19.6-1ubuntu4.8 (For technical support please see http://www.ubuntu.com/support) 
[ 464.605] Current version of pixman: 0.34.0
[ 464.605] Before reporting problems, check http://wiki.x.org
 to make sure that you have the latest version.
[ 464.605] Markers: (--) probed, (**) from config file, (==) default setting,
 (++) from command line, (!!) notice, (II) informational,
 (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
[ 464.605] (==) Log file: "/var/log/Xorg.0.log", Time: Sat Feb 20 03:10:44 2021
[ 464.606] (==) Using config file: "/etc/X11/xorg.conf"
[ 464.606] (==) Using system config directory "/usr/share/X11/xorg.conf.d"
[ 464.607] (==) ServerLayout "Layout0"
[ 464.607] (**) |-->Screen "Screen0" (0)
[ 464.607] (**) | |-->Monitor "Monitor0"
[ 464.607] (**) | |-->Device "Device0"
[ 464.607] (**) |-->Input Device "Keyboard0"
[ 464.607] (**) |-->Input Device "Mouse0"
[ 464.607] (==) Automatically adding devices
[ 464.607] (==) Automatically enabling devices
[ 464.607] (==) Automatically adding GPU devices
[ 464.607] (==) Automatically binding GPU devices
[ 464.607] (==) Max clients allowed: 256, resource mask: 0x1fffff
[ 464.607] (WW) The directory "/usr/share/fonts/X11/cyrillic" does not exist.
[ 464.607] Entry deleted from font path.
[ 464.607] (WW) The directory "/usr/share/fonts/X11/100dpi/" does not exist.
[ 464.607] Entry deleted from font path.
[ 464.607] (WW) The directory "/usr/share/fonts/X11/75dpi/" does not exist.
[ 464.607] Entry deleted from font path.
[ 464.607] (WW) The directory "/usr/share/fonts/X11/Type1" does not exist.
[ 464.607] Entry deleted from font path.
[ 464.607] (WW) The directory "/usr/share/fonts/X11/100dpi" does not exist.
[ 464.607] Entry deleted from font path.
[ 464.607] (WW) The directory "/usr/share/fonts/X11/75dpi" does not exist.
[ 464.607] Entry deleted from font path.
[ 464.607] (==) FontPath set to:
 /usr/share/fonts/X11/misc,
 built-ins
[ 464.607] (==) ModulePath set to "/usr/lib/xorg/modules"
[ 464.607] (WW) Hotplugging is on, devices using drivers 'kbd', 'mouse' or 'vmmouse' will be disabled.
[ 464.607] (WW) Disabling Keyboard0
[ 464.607] (WW) Disabling Mouse0
[ 464.607] (II) Loader magic: 0x556eb77b8020
[ 464.607] (II) Module ABI versions:
[ 464.607] X.Org ANSI C Emulation: 0.4
[ 464.607] X.Org Video Driver: 23.0
[ 464.607] X.Org XInput driver : 24.1
[ 464.607] X.Org Server Extension : 10.0
[ 464.607] (EE) dbus-core: error connecting to system bus: org.freedesktop.DBus.Error.FileNotFound (Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory)
[ 464.609] (--) PCI: (0:0:4:0) 10de:1eb8:10de:12a2 rev 161, Mem @ 0xc0000000/16777216, 0x380000000/268435456, 0x390000000/33554432
[ 464.609] (II) no primary bus or device found
[ 464.609] (II) LoadModule: "glx"
[ 464.609] (II) Loading /usr/lib/xorg/modules/extensions/libglx.so
[ 464.610] (II) Module glx: vendor="X.Org Foundation"
[ 464.610] compiled for 1.19.6, module version = 1.0.0
[ 464.610] ABI class: X.Org Server Extension, version 10.0
[ 464.610] (II) LoadModule: "nvidia"
[ 464.610] (II) Loading /usr/lib/xorg/modules/drivers/nvidia_drv.so
[ 464.610] (II) Module nvidia: vendor="NVIDIA Corporation"
[ 464.610] compiled for 4.0.2, module version = 1.0.0
[ 464.610] Module class: X.Org Video Driver
[ 464.610] (II) NVIDIA dlloader X Driver 418.67 Sat Apr 6 02:51:17 CDT 2019
[ 464.610] (II) NVIDIA Unified Driver for all Supported NVIDIA GPUs
[ 464.610] xf86EnableIOPorts: failed to set IOPL for I/O (Operation not permitted)
[ 464.610] (II) Loading sub module "fb"
[ 464.610] (II) LoadModule: "fb"
[ 464.611] (II) Loading /usr/lib/xorg/modules/libfb.so
[ 464.611] (II) Module fb: vendor="X.Org Foundation"
[ 464.611] compiled for 1.19.6, module version = 1.0.0
[ 464.611] ABI class: X.Org ANSI C Emulation, version 0.4
[ 464.611] (II) Loading sub module "wfb"
[ 464.611] (II) LoadModule: "wfb"
[ 464.611] (II) Loading /usr/lib/xorg/modules/libwfb.so
[ 464.611] (II) Module wfb: vendor="X.Org Foundation"
[ 464.611] compiled for 1.19.6, module version = 1.0.0
[ 464.611] ABI class: X.Org ANSI C Emulation, version 0.4
[ 464.611] (II) Loading sub module "ramdac"
[ 464.611] (II) LoadModule: "ramdac"
[ 464.611] (II) Module "ramdac" already built-in
[ 464.637] (EE) NVIDIA: Failed to initialize the NVIDIA kernel module. Please see the
[ 464.637] (EE) NVIDIA: system's kernel log for additional error messages and
[ 464.637] (EE) NVIDIA: consult the NVIDIA README for details.
[ 464.662] (EE) NVIDIA: Failed to initialize the NVIDIA kernel module. Please see the
[ 464.662] (EE) NVIDIA: system's kernel log for additional error messages and
[ 464.662] (EE) NVIDIA: consult the NVIDIA README for details.
[ 464.662] (EE) No devices detected.
[ 464.662] (==) Matched modesetting as autoconfigured driver 0
[ 464.662] (==) Matched fbdev as autoconfigured driver 1
[ 464.662] (==) Matched vesa as autoconfigured driver 2
[ 464.662] (==) Assigned the driver to the xf86ConfigLayout
[ 464.662] (II) LoadModule: "modesetting"
[ 464.662] (II) Loading /usr/lib/xorg/modules/drivers/modesetting_drv.so
[ 464.663] (II) Module modesetting: vendor="X.Org Foundation"
[ 464.663] compiled for 1.19.6, module version = 1.19.6
[ 464.663] Module class: X.Org Video Driver
[ 464.663] ABI class: X.Org Video Driver, version 23.0
[ 464.663] (II) LoadModule: "fbdev"
[ 464.663] (II) Loading /usr/lib/xorg/modules/drivers/fbdev_drv.so
[ 464.663] (II) Module fbdev: vendor="X.Org Foundation"
[ 464.663] compiled for 1.19.3, module version = 0.4.4
[ 464.663] Module class: X.Org Video Driver
[ 464.663] ABI class: X.Org Video Driver, version 23.0
[ 464.663] (II) LoadModule: "vesa"
[ 464.663] (II) Loading /usr/lib/xorg/modules/drivers/vesa_drv.so
[ 464.663] (II) Module vesa: vendor="X.Org Foundation"
[ 464.663] compiled for 1.19.3, module version = 2.3.4
[ 464.663] Module class: X.Org Video Driver
[ 464.663] ABI class: X.Org Video Driver, version 23.0
[ 464.663] (II) NVIDIA dlloader X Driver 418.67 Sat Apr 6 02:51:17 CDT 2019
[ 464.663] (II) NVIDIA Unified Driver for all Supported NVIDIA GPUs
[ 464.663] (II) modesetting: Driver for Modesetting Kernel Drivers: kms
[ 464.663] (II) FBDEV: driver for framebuffer: fbdev
[ 464.663] (II) VESA: driver for VESA chipsets: vesa
[ 464.663] xf86EnableIOPorts: failed to set IOPL for I/O (Operation not permitted)
[ 464.663] (EE) open /dev/dri/card0: No such file or directory
[ 464.663] (WW) Falling back to old probe method for modesetting
[ 464.663] (EE) open /dev/dri/card0: No such file or directory
[ 464.663] (WW) Falling back to old probe method for fbdev
[ 464.663] (II) Loading sub module "fbdevhw"
[ 464.663] (II) LoadModule: "fbdevhw"
[ 464.663] (II) Loading /usr/lib/xorg/modules/libfbdevhw.so
[ 464.663] (II) Module fbdevhw: vendor="X.Org Foundation"
[ 464.663] compiled for 1.19.6, module version = 0.0.2
[ 464.663] ABI class: X.Org Video Driver, version 23.0
[ 464.664] (EE) open /dev/fb0: No such file or directory
[ 464.664] (WW) Falling back to old probe method for vesa
[ 464.664] (WW) VGA arbiter: cannot open kernel arbiter, no multi-card support
[ 464.664] (EE) Screen 0 deleted because of no matching config section.
[ 464.664] (II) UnloadModule: "modesetting"
[ 464.664] (EE) Device(s) detected, but none match those in the config file.
[ 464.664] (EE) 
Fatal server error:
[ 464.664] (EE) no screens found(EE) 
[ 464.664] (EE) 
Please consult the The X.Org Foundation support 
 at http://wiki.x.org
 for help. 
[ 464.664] (EE) Please also check the log file at "/var/log/Xorg.0.log" for additional information.
[ 464.664] (EE) 
[ 464.664] (EE) Server terminated with error (1). Closing log file.




I am using this github repo to setup the video-streamer


If anyone wants the colab notebook for the example then I will add it over here.


For this problem I am really not sure where to file an issue for this so that's why I am writing this here.