
Recherche avancée
Médias (91)
-
Richard Stallman et le logiciel libre
19 octobre 2011, par
Mis à jour : Mai 2013
Langue : français
Type : Texte
-
Stereo master soundtrack
17 octobre 2011, par
Mis à jour : Octobre 2011
Langue : English
Type : Audio
-
Elephants Dream - Cover of the soundtrack
17 octobre 2011, par
Mis à jour : Octobre 2011
Langue : English
Type : Image
-
#7 Ambience
16 octobre 2011, par
Mis à jour : Juin 2015
Langue : English
Type : Audio
-
#6 Teaser Music
16 octobre 2011, par
Mis à jour : Février 2013
Langue : English
Type : Audio
-
#5 End Title
16 octobre 2011, par
Mis à jour : Février 2013
Langue : English
Type : Audio
Autres articles (79)
-
Gestion générale des documents
13 mai 2011, parMédiaSPIP ne modifie jamais le document original mis en ligne.
Pour chaque document mis en ligne il effectue deux opérations successives : la création d’une version supplémentaire qui peut être facilement consultée en ligne tout en laissant l’original téléchargeable dans le cas où le document original ne peut être lu dans un navigateur Internet ; la récupération des métadonnées du document original pour illustrer textuellement le fichier ;
Les tableaux ci-dessous expliquent ce que peut faire MédiaSPIP (...) -
Use, discuss, criticize
13 avril 2011, parTalk to people directly involved in MediaSPIP’s development, or to people around you who could use MediaSPIP to share, enhance or develop their creative projects.
The bigger the community, the more MediaSPIP’s potential will be explored and the faster the software will evolve.
A discussion list is available for all exchanges between users. -
MediaSPIP Player : problèmes potentiels
22 février 2011, parLe lecteur ne fonctionne pas sur Internet Explorer
Sur Internet Explorer (8 et 7 au moins), le plugin utilise le lecteur Flash flowplayer pour lire vidéos et son. Si le lecteur ne semble pas fonctionner, cela peut venir de la configuration du mod_deflate d’Apache.
Si dans la configuration de ce module Apache vous avez une ligne qui ressemble à la suivante, essayez de la supprimer ou de la commenter pour voir si le lecteur fonctionne correctement : /** * GeSHi (C) 2004 - 2007 Nigel McNie, (...)
Sur d’autres sites (11589)
-
avformat_open_input crash using ffmpeg on android
2 octobre 2019, par Timmy KI am writing an Android app to capture audio streams from a USB device using ffmpeg, and mux them into an m4a file. I then open the recording file to read back the audio data. The app works fine on Samsung S8 (Android 8.0) and S9 (Android 9.0). On a Moto G5+ (Android 8.1), however the app crashes inside avformat_open_input() when I try to open the recording file ; but if I restart the app and it reads the same file with the same code, it works without crashing.
I thought maybe that I hadn’t closed the recording file properly ; or there was maybe a race condition : trying to read the file before it was written. However I have established that av_write_trailer() is called successfully and avio_closep() is called successfully before the call to avformat_open_input. I also established that the length of the file is the same just before the call to avformat_open_input() in the crash case as it is in the non-crash case.
The code that finishes the recording :
// AVFormatContext *mAvFormatContext
// ...
int ret = av_write_trailer(mAvFormatContext);
if ( ret != 0 )
{
__android_log_print(ANDROID_LOG_DEBUG, "MyTag", "failed to write trailer %s", av_err2str( ret ) );
goto fail;
}
ret = avio_close( mAvFormatContext->pb );
if ( ret < 0 )
{
__android_log_print(ANDROID_LOG_DEBUG, "MyTag", "failed to avio_close %s", av_err2str( ret ) );
goto fail;
}
avformat_free_context(mAvFormatContext);The call that causes a crash immediately after the above code, on a Moto 5G+ (but not Samsung S8/S9) :
mAvFormatContext = nullptr;
if ( (ret = avformat_open_input( &mAvFormatContext, filePath, 0, 0)) < 0 )
{
__android_log_print(ANDROID_LOG_DEBUG, "MyTag++", "Could not open input file '%s' error %s ", filePath, av_err2str(ret) );
cleanup();
return false;
}Also, when the call to avformat_open_input() does not crash, there is no output in logcat from within that call. However, I’ve noticed that in the crash case there is output of what seems to be corrupted data :
2019-09-02 09:39:14.105 19999-19999/fm.x.y D/AudioEngine: Opening '@�7���-d��@�7�' for
2019-09-02 09:39:14.106 19999-19999/fm.x.y D/AudioEngine: Setting default whitelist '<��'
2019-09-02 09:39:14.106 19999-19999/fm.x.y D/AudioEngine: Probing ���d score:-1828887548 size:-1093138844
2019-09-02 09:39:14.106 19999-19999/fm.x.y D/AudioEngine: Format ��� probed with size=-1093138756 and score=-1093138748
(crash occurs)Any advice on what to look into further to investigate this problem ? Is there something I am missing when cleaning up the muxing state before I try to open the recording file for demuxing ? For simplicity I have not included the freeing of codec contexts, AVFrames and AVPackets.
-
avcodec/omx : Fix handling of fragmented buffers
17 janvier 2019, par Dave Stevensonavcodec/omx : Fix handling of fragmented buffers
See https://trac.ffmpeg.org/ticket/7687
If an encoded frame is returned split over two or more
IL buffers due to the size, then there is a race between
whether get_buffer will fail, return NULL, and a truncated
frame is passed on, or IL will return the remaining part
of the encoded frame.
If get_buffer returns NULL, part of the frame is left behind
in the codec, and will be collected on the next call. That
then leaves a frame stuck in the codec. Repeat enough times
and the codec FIFO is full, and the pipeline stalls.A performance improvement in the Raspberry Pi firmware means
that the timing has changed, and now frequently drops into the
case where get_buffer returns NULL.Add code such that should a buffer be received without
OMX_BUFFERFLAG_ENDOFFRAME that get_buffer is called with wait
set, so we wait for the remainder of the frame.
This code has been made conditional on the Pi build in case
other IL implementations don't handle ENDOFFRAME correctly.Signed-off-by : Dave Stevenson <dave.stevenson@raspberrypi.org>
Signed-off-by : Aman Gupta <aman@tmm1.net>
Signed-off-by : Martin Storsjö <martin@martin.st> -
How to match the video bitrate of opencv with ffmpeg ?
24 avril 2019, par user10890282I am trying to read three cameras simultaneously one of which is done through a video grabber card. I want to be able to stream the data and also write out videos from these sources. I used FFmpeg to write out the data from the video grabber card and OpenCV writer for the normal USB cameras. But the bit rates of the files do not match nor does the size. This becomes a problem as I post-process the files. I tried to convert the OpenCV written files using FFmpeg later but the duration of the files still remain different though the bit rates have changed. I really would appreciate pointers to know how to go about this from the script itself. The ideal case would be that I use FFmpeg for all the three sources with the same settings. But how can I do this without spitting out all the information on the console as writing out the files, since there would have to be three sources written out simultaneously ? Could someone tell me how to have multiple FFmpeg threads going on for writing out files while streaming videos using OpenCV ?
I have attached my current code with OpenCV writer and FFmpeg for one source :
from threading import Thread
import cv2
import time
import sys
import subprocess as sp
import os
import datetime
old_stdout=sys.stdout
maindir= "E:/Trial1/"
os.chdir(maindir)
maindir=os.getcwd()
class VideoWriterWidget(object):
def __init__(self, video_file_name, src=0):
if (src==3):
self.frame_name= "Cam_"+str(src)+"(Right)"
if(src==2):
self.frame_name= "Cam_"+str(src)+"(Left)"
# Create a VideoCapture object
#self.frame_name =str(src)
self.video_file = video_file_name+"_"
self.now=datetime.datetime.now()
self.ts=datetime.datetime.now()
self.video_file_nameE="{}.avi".format("Endo_"+self.ts.strftime("%Y%m%d_%H-%M-%S"))
self.video_file_name = "{}.avi".format(video_file_name+self.ts.strftime("%Y%m%d_%H-%M-%S"))
self.FFMPEG_BIN = "C:/ffmpeg/bin/ffmpeg.exe"
self.command=[self.FFMPEG_BIN,'-y','-f','dshow','-rtbufsize','1024M','-video_size','640x480','-i', 'video=Datapath VisionAV Video 01','-pix_fmt', 'bgr24', '-r','60', self.video_file_name]
self.capture = cv2.VideoCapture(src)
# Default resolutions of the frame are obtained (system dependent)
self.frame_width = int(self.capture.get(3))#480
self.frame_height = int(self.capture.get(4))# 640
# Set up codec and output video settings
if(src==2 or src==3):
self.codec = cv2.VideoWriter_fourcc('M','J','P','G')
self.output_video = cv2.VideoWriter(self.video_file_name, self.codec, 30, (self.frame_width, self.frame_height))
# Start the thread to read frames from the video stream
self.thread = Thread(target=self.update, args=(src,))
self.thread.daemon = True
self.thread.start()
# Start another thread to show/save frames
self.start_recording()
print('initialized {}'.format(self.video_file))
if (src==0):
self.e_recording_thread = Thread(target=self.endo_recording_thread, args=())
self.e_recording_thread.daemon = True
self.e_recording_thread.start()
print('initialized endo recording')
def update(self,src):
# Read the next frame from the stream in a different thread
while True:
if self.capture.isOpened():
(self.status, self.frame) = self.capture.read()
if (src==3):
self.frame= cv2.flip(self.frame,-1)
def show_frame(self):
# Display frames in main program
if self.status:
cv2.namedWindow(self.frame_name, cv2.WINDOW_NORMAL)
cv2.imshow(self.frame_name, self.frame)
# Press Q on keyboard to stop recording0000
key = cv2.waitKey(1)
if key == ord('q'):#
self.capture.release()
self.output_video.release()
cv2.destroyAllWindows()
exit(1)
def save_frame(self):
# Save obtained frame into video output file
self.output_video.write(self.frame)
def start_recording(self):
# Create another thread to show/save frames
def start_recording_thread():
while True:
try:
self.show_frame()
self.save_frame()
except AttributeError:
pass
self.recording_thread = Thread(target=start_recording_thread, args=())
self.recording_thread.daemon = True
self.recording_thread.start()
def endo_recording_thread(self):
self.Pr1=sp.call(self.command)
if __name__ == '__main__':
src1 = 'Your link1'
video_writer_widget1 = VideoWriterWidget('Endo_', 0)
src2 = 'Your link2'
video_writer_widget2 = VideoWriterWidget('Camera2_', 2)
src3 = 'Your link3'
video_writer_widget3 = VideoWriterWidget('Camera3_', 3)
# Since each video player is in its own thread, we need to keep the main thread alive.
# Keep spinning using time.sleep() so the background threads keep running
# Threads are set to daemon=True so they will automatically die
# when the main thread dies
while True:
time.sleep(5)