
Recherche avancée
Autres articles (87)
-
Les autorisations surchargées par les plugins
27 avril 2010, parMediaspip core
autoriser_auteur_modifier() afin que les visiteurs soient capables de modifier leurs informations sur la page d’auteurs -
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 ;
-
Participer à sa traduction
10 avril 2011Vous pouvez nous aider à améliorer les locutions utilisées dans le logiciel ou à traduire celui-ci dans n’importe qu’elle nouvelle langue permettant sa diffusion à de nouvelles communautés linguistiques.
Pour ce faire, on utilise l’interface de traduction de SPIP où l’ensemble des modules de langue de MediaSPIP sont à disposition. ll vous suffit de vous inscrire sur la liste de discussion des traducteurs pour demander plus d’informations.
Actuellement MediaSPIP n’est disponible qu’en français et (...)
Sur d’autres sites (19845)
-
how to send the input data to FFMPEG from a C# program
18 octobre 2020, par jstuardoI need to send a binary stream to FFMPEG so that it sends to an RTMP server.


I did it in a nodejs script using socket.io library and in Linux. It works perfectly.


I need to do the same, but in a Windows Forms application using C#.


This is how I run the ffmpeg.exe application :


_currentProcess = new Process();
 _currentProcess.StartInfo.FileName = _ffmpegExe;
 _currentProcess.StartInfo.Arguments = BuildOptions(framesPerSecond, audioBitRate, audioEncoding, rtmpServer);
 _currentProcess.StartInfo.UseShellExecute = false;
 _currentProcess.StartInfo.CreateNoWindow = true;
 _currentProcess.StartInfo.RedirectStandardInput = true;
 _currentProcess.StartInfo.RedirectStandardError = true;
 _currentProcess.ErrorDataReceived += CurrentProcess_ErrorDataReceived;
 _currentProcess.Start();
 _currentProcess.BeginErrorReadLine();



BuildOptions
method is defined this way :

private string BuildOptions(int framesPerSecond, int audioBitRate, string audioEncoding, string rtmpServer)
 {
 string options;
 if (framesPerSecond == 1)
 {
 options = $"-i - -c:v libx264 -preset ultrafast -tune zerolatency -r 1 -g 2 -keyint_min 2 -x264opts keyint=2 -crf 25 -pix_fmt yuv420p -profile:v baseline -level 3 -c:a aac -b:a {audioEncoding} -ar {audioBitRate}-f flv {rtmpServer}";
 }
 else if (framesPerSecond == 15)
 {
 options = $"-i - -c:v libx264 -preset ultrafast -tune zerolatency max_muxing_queue_size 1000 -bufsize 5000 -r 15 -g 30 -keyint_min 30 -x264opts keyint=30 -crf 25 -pix_fmt yuv420p -profile:v baseline -level 3 -c:a aac -b:a {audioEncoding} -ar {audioBitRate} -f flv {rtmpServer}";
 }
 else
 {
 options = $"-i - -c:v libx264 -preset ultrafast -tune zerolatency -c:a aac -ar {audioBitRate} -b:a {audioEncoding} -bufsize 5000 -f flv {rtmpServer}";
 }

 return options;
 }



I am sending the data to the standard input this way :


public void EncodeAndSend(byte[] data)
 {
 if (_currentProcess != null)
 {
 var streamWriter = _currentProcess.StandardInput;
 streamWriter.Write(Encoding.GetEncoding("ISO-8859-1").GetChars(data));
 }
 }



And finally, this method is for receiving the standard error which receives the result from ffmpeg.exe :


private void CurrentProcess_ErrorDataReceived(object sender, DataReceivedEventArgs e)
 {
 Console.WriteLine(e.Data);
 }



When I run the application, this is shown in the console :


ffmpeg version 4.3.1-2020-10-01-essentials_build-www.gyan.dev Copyright (c) 2000-2020 the FFmpeg developers
 built with gcc 10.2.0 (Rev3, Built by MSYS2 project)
 configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-lzma --enable-zlib --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-sdl2 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libaom --enable-libopenjpeg --enable-libvpx --enable-libass --enable-libfreetype --enable-libfribidi --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc --enable-d3d11va --enable-dxva2 --enable-libmfx --enable-libgme --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libtheora --enable-libvo-amrwbenc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-librubberband
 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
 libswscale 5. 7.100 / 5. 7.100
 libswresample 3. 7.100 / 3. 7.100
 libpostproc 55. 7.100 / 55. 7.100
pipe:: Invalid data found when processing input



If I change the
EncodeAndSend
method to be :

public void EncodeAndSend(byte[] data)
 {
 if (_currentProcess != null)
 {
 var streamWriter = _currentProcess.StandardInput;
 streamWriter.Write(data);
 }
 }



pipe:: Invalid data found when processing input
error is not produced, but no more outputs are shown so it seems it is not working.

What is wrong with this ? how can I send the data to the FFMPEG process ?


Finally, I tell you that the binary stream comes from the camera by mean of MediaRecorder in a web page (the same used for my program in nodejs server, so that it is not the issue here)


-
I have a TTS code what uses discord.js/Node.js And it keeps giving me this error
1er décembre 2020, par rowisacodeSo the code gets the user input, and puts it in a fill. but it keeps fiving me this error


made "./778055120285073448-tts_message.txt" text file for tts 
stdout: [02:37:03] Reading text [started] 
[02:37:03] Reading text [completed] 
[02:37:03] Splitting text [started]
[02:37:03] Splitting text [completed] 
[02:37:03] Convert to audio [started] 
[02:37:03] Convert to audio (0/1) [title changed] 
[02:37:03] Convert to audio (0/1) [title changed] 
[02:37:04] Convert to audio (1/1) [title changed] 
[02:37:04] Convert to audio (1/1) [completed] 
[02:37:04] Combine audio [started] 
[02:37:04] Combine audio [failed] 
[02:37:04] → ffmpeg returned an error (1): 
Error: unable to open display 
ffmpeg version n4.3.1 Copyright (c) 2000-2020 the FFmpeg developers 
 built with gcc 7 (Ubuntu 7.5.0-3ubuntu1~18.04) 
 configuration: --prefix= --prefix=/usr --disable-debug --disable-doc --disable-static --enable-cuda --enable-cuda-sdk --enable-cuvid --enable-libdrm 
 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 
 libswscale 5. 7.100 / 5. 7.100 
 libswresample 3. 7.100 / 3. 7.100 
 libpostproc 55. 7.100 / 55. 7.100 
/tmp/a39913dc-89f3-4923-b044-10861892e959.txt: No such file or directory



It says it is unable to open display




Error : unable to open display




I tried running the code from a line, and from a file. but it always gives my the same error. I don't know what is causing it but I hope someone can help.


-
Picking the right gpu for ffmpeg decoding/encoding with nvidia/cuda
14 avril 2020, par Reza MirI am writing code using ffmpeg/nvidia/cuda library to decode and encode some video. I am trying to pick one specific GPU for decoding/encoding among some existing GPUs installed on the system. Here is the list of existing GPUs :



nvidia-smi 
Tue Apr 14 00:14:59 2020 
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 440.64.00 Driver Version: 440.64.00 CUDA Version: 10.2 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce RTX 208... On | 00000000:1A:00.0 Off | N/A |
| 41% 33C P8 20W / 260W | 0MiB / 11019MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
| 1 GeForce GTX 108... On | 00000000:1B:00.0 Off | N/A |
| 41% 65C P2 182W / 250W | 7167MiB / 11178MiB | 53% Default |
+-------------------------------+----------------------+----------------------+
| 2 GeForce GTX 108... On | 00000000:1E:00.0 Off | N/A |
| 14% 55C P2 61W / 250W | 1943MiB / 11178MiB | 26% Default |
+-------------------------------+----------------------+----------------------+
| 3 Quadro P5000 On | 00000000:3D:00.0 Off | Off |
| 26% 33C P8 6W / 180W | 1MiB / 16278MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
| 4 TITAN RTX On | 00000000:3E:00.0 Off | N/A |
| 41% 38C P0 72W / 280W | 0MiB / 24220MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
| 5 TITAN RTX On | 00000000:41:00.0 Off | N/A |
| 40% 32C P8 14W / 280W | 0MiB / 24220MiB | 0% Default |
+-------------------------------+----------------------+----------------------+





I would like to pick GPU #3 in my code and use it for decoding. I am using h264_nvenc and h264_cuvid as encoder and decoder in my program and setting the options of decoder/encoder using the following code :



av_opt_set(decoder_context->priv_data, "gpu", "Quadro P5000", 0);




But this code doesn't pick Quadro GPU for decoding/encoding. Instead, it always goes to GPU #4 in my test :



nvidia-smi pmon | grep tx
 4 20096 C 22 3 44 16 tx 
 4 20096 C 26 4 49 17 tx 
 4 20096 C 25 4 49 17 tx