
Recherche avancée
Médias (1)
-
Bug de détection d’ogg
22 mars 2013, par
Mis à jour : Avril 2013
Langue : français
Type : Video
Autres articles (76)
-
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 (...) -
Formulaire personnalisable
21 juin 2013, parCette page présente les champs disponibles dans le formulaire de publication d’un média et il indique les différents champs qu’on peut ajouter. Formulaire de création d’un Media
Dans le cas d’un document de type média, les champs proposés par défaut sont : Texte Activer/Désactiver le forum ( on peut désactiver l’invite au commentaire pour chaque article ) Licence Ajout/suppression d’auteurs Tags
On peut modifier ce formulaire dans la partie :
Administration > Configuration des masques de formulaire. (...) -
Les vidéos
21 avril 2011, parComme les documents de type "audio", Mediaspip affiche dans la mesure du possible les vidéos grâce à la balise html5 .
Un des inconvénients de cette balise est qu’elle n’est pas reconnue correctement par certains navigateurs (Internet Explorer pour ne pas le nommer) et que chaque navigateur ne gère en natif que certains formats de vidéos.
Son avantage principal quant à lui est de bénéficier de la prise en charge native de vidéos dans les navigateur et donc de se passer de l’utilisation de Flash et (...)
Sur d’autres sites (7103)
-
Encoded Video's path gets changed in database after encoding with ffmpeg and celery and works as normal without celery
16 novembre 2020, par DannyI have this code to transcode video and it works well without celery. With celery, the path of the file in the database shows a different path and the video cannot be played in the browser, but it saves the file in the correct location in the pc.


If I don't use celery, then the file path in database is
media/videos/videos/<filename>.mp4</filename>
and file also gets saved here. This way the template is able to play the video. But if I use celery, the output gets saved inmedia/videos/videos/<filename>.mp4</filename>
but the path in database will bemedia/<filename>.mp4</filename>
somehow and thus template can't play the video.

Is it because my page gets updated before the task ? and not getting saved properly ?


views.py


def post(self, *args, **kwargs):
 form = VideoPostForm(self.request.POST or None, self.request.FILES or None)
 if form.is_valid():
 video = form.save(commit=False)
 video.user = self.request.user
 video.save()
 form.save_m2m()
 # task_video_encoding(video.id)
 task_video_encoding.delay(video.id)
 return redirect('videos:my_video_home')
 else:
 raise ValidationError('Check all form fields.')



encoding.py


def encode_video(video_id):
 video = VideoPost.objects.get(id = video_id)
 input_file_path = video.temp_file.path
 # print(input_file_path)
 input_file_name = video.title
 #get the filename (without extension)
 filename = os.path.basename(input_file_path)
 # print(filename)
 # path to the new file, change it according to where you want to put it
 output_file_name = os.path.join('{}.mp4'.format(filename))
 # print(output_file_name)
 # output_file_path = os.path.join(settings.MEDIA_ROOT, output_file_name)
 output_file_path = os.path.join(settings.MEDIA_ROOT, 'videos', 'videos', output_file_name)
 # print(output_file_path)

 for i in range(1):
 subprocess.call([settings.VIDEO_ENCODING_FFMPEG_PATH, '-i', input_file_path, '-codec:v', 'libx264', '-crf', '-preset',
 '-b:v', '3000k', '-maxrate', '-bufsize', '6000k', '-vf', 'scale=-2:720',
 '-codec:a', 'aac', '128k', '-strict', '-2', output_file_path])
 # Save the new file in the database
 video.file = output_file_name
 video.save(update_fields=['file'])
 print(video.file)
 video.temp_file.delete()



models


class VideoPost(models.Model):
 user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, blank=True, null=True)
 title = models.TextField(max_length=1000)
 temp_file = models.FileField(upload_to='videos/temp_videos/', validators=[validate_file_extension], null=True)
 file = models.FileField(upload_to='videos/videos/', validators=[validate_file_extension], blank=True, max_length=255)
 post_date = models.DateTimeField(auto_now_add=True, verbose_name="Date Posted")
 updated = models.DateTimeField(auto_now_add=True, verbose_name="Date Updated")
 slug = models.SlugField(blank=True, unique=True, max_length=255)



Can anyone help me how to change this code in a way to show the converted video properly in the template.


-
ffmpeg output to stdout is a black box (python)
27 juillet 2022, par dwilliamsProject Background :
The project I'm working on takes an image from a UE simulation camera, uses OpenCV to convert the image to .jpg, and streams the .jpg to a localhost port so that a second program can retrieve the images and annotate the objects in the simulation. I am attempting to convert these to a suitable format for UE4's WmfMediaPlayer via ffmpeg so that it can be streamed to another localhost port.


Problem :
I have managed to get a the stream active but the video at the end of stream is a black square. I'm confident but not 100% certain that I've setup the ffmpeg correctly. The output to console seem to imply that the conversion is working but I've been fooled before. It could also be the flask yield component.


ffmpeg declaration/setup :


process = (
 ffmpeg
 .input('C:/MOT/test.jpg') 
 .output('pipe:1', vcodec='libx264', format='avi') 
 .overwrite_output()
 .run_async(pipe_stdin=True, pipe_stdout=True)
 )



Flask Integration :


@app.route('/annotated')
def annotated():
 return Response(
 frame_generator_annotated(),
 mimetype='multipart/x-mixed-replace; boundary=frame'
 )


def frame_generator_annotated():
 global process
 while (True):
 frame = process.stdout.read()
 yield (b'--frame\r\n'
 b'Content-Type: video/avi\r\n\r\n' + frame + b'\r\n\r\n')



stream view :
http://localhost:5001/annotated


ffmpeg console output :


Running on all addresses.
 WARNING: This is a development server. Do not use it in a production deployment.
 * Running on http://192.168.1.220:5001/ (Press CTRL+C to quit)
ffmpeg version 4.3.1 Copyright (c) 2000-2020 the FFmpeg developers
 built with gcc 10.2.1 (GCC) 20200726
 configuration: --disable-static --enable-shared --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libsrt --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libgsm --enable-librav1e --disable-w32threads --enable-libmfx --enable-ffnvcodec --enable-cuda-llvm --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt --enable-amf
 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
[mjpeg @ 00000269be0faec0] EOI missing, emulating
Input #0, image2, from 'C:/MOT/test.jpg':
 Duration: 00:00:00.04, start: 0.000000, bitrate: 1968 kb/s
 Stream #0:0: Video: mjpeg (Baseline), yuvj420p(pc, bt470bg/unknown/unknown), 1024x576 [SAR 1:1 DAR 16:9], 25 tbr, 25 tbn, 25 tbc
Stream mapping:
 Stream #0:0 -> #0:0 (mjpeg (native) -> h264 (libx264))
Press [q] to stop, [?] for help
[libx264 @ 00000269be0fc240] using SAR=1/1
[libx264 @ 00000269be0fc240] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
[libx264 @ 00000269be0fc240] profile High, level 3.1, 4:2:0, 8-bit
Output #0, avi, to 'pipe:1':
 Metadata:
 ISFT : Lavf58.45.100
 Stream #0:0: Video: h264 (libx264) (H264 / 0x34363248), yuvj420p(pc), 1024x576 [SAR 1:1 DAR 16:9], q=-1--1, 25 fps, 25 tbn, 25 tbc
 Metadata:
 encoder : Lavc58.91.100 libx264
 Side data:
 cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A
frame= 1 fps=0.0 q=28.0 Lsize= 2kB time=00:00:00.04 bitrate= 447.2kbits/s speed= 2.9x 
video:1kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 157.307251%
[libx264 @ 00000269be0fc240] frame I:1 Avg QP:13.00 size: 869
[libx264 @ 00000269be0fc240] mb I I16..4: 100.0% 0.0% 0.0%
[libx264 @ 00000269be0fc240] 8x8 transform intra:0.0%
[libx264 @ 00000269be0fc240] coded y,uvDC,uvAC intra: 0.0% 0.0% 0.0%
[libx264 @ 00000269be0fc240] i16 v,h,dc,p: 97% 0% 3% 0%
[libx264 @ 00000269be0fc240] i8c dc,h,v,p: 100% 0% 0% 0%
[libx264 @ 00000269be0fc240] kb/s:173.80



-
in FFMPEG_AVAILABLE,How to insert a black frame in avpicture_fill if the frame is not available [on hold]
22 août 2018, par Vidhi PatelThis code should work :
avpicture_fill((AVPicture*) picture, (tUInt8*) this->ptrOVL->get_pOutputDataOVL(), PIX_FMT_BGR24, c->width, c->height);
but as the title says : what if the frame isn’t available ?