Recherche avancée

Médias (1)

Mot : - Tags -/belgique

Autres articles (80)

  • Websites made ​​with MediaSPIP

    2 mai 2011, par

    This page lists some websites based on MediaSPIP.

  • Amélioration de la version de base

    13 septembre 2013

    Jolie sélection multiple
    Le plugin Chosen permet d’améliorer l’ergonomie des champs de sélection multiple. Voir les deux images suivantes pour comparer.
    Il suffit pour cela d’activer le plugin Chosen (Configuration générale du site > Gestion des plugins), puis de configurer le plugin (Les squelettes > Chosen) en activant l’utilisation de Chosen dans le site public et en spécifiant les éléments de formulaires à améliorer, par exemple select[multiple] pour les listes à sélection multiple (...)

  • Personnaliser en ajoutant son logo, sa bannière ou son image de fond

    5 septembre 2013, par

    Certains 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 ;

Sur d’autres sites (8065)

  • I get this error when i try to concat mp3 files on ubuntu

    24 mars 2021, par Adil Kasbaoui

    Am trying to concat some mp3 files using this command :

    


    ffmpeg -i "concat:file_1.mp3|file_2.mp3|file_3.mp3|file_4.mp3"-acodec copy test_output.mp3


    


    But i get this error :

    


    Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, mono, s16, 705 kb/s
[mp3 @ 0x55d91120a880] Invalid audio stream. Exactly one MP3 audio stream is required.
Could not write header for output file #0 (incorrect codec parameters ?): Invalid argument
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
    Last message repeated 1 times


    


    I tried cat and mp3wrap but it's not working for me they just duplicate the first file

    


  • FFmpeg remove silence with exact duration detected by detect silence

    17 mars 2021, par dav

    I have an audio file, that have some silences, which I am detecting with ffmpeg detectsilence and then trying to remove with removesilence, however there is some strange behavior. Specifically :

    


    1) File's Basic info based on ffprobe show_streams

    


    Input #0, mp3, from 'my_file.mp3':
  Metadata:
    encoder         : Lavf58.64.100
  Duration: 00:00:25.22, start: 0.046042, bitrate: 32 kb/s
    Stream #0:0: Audio: mp3, 24000 Hz, mono, fltp, 32 kb/s


    


    2) Using detectsilence

    


    ffmpeg -i my_file.mp3 -af silencedetect=noise=-50dB:d=0.2 -f null -


    


    I get this result

    


    [mp3float @ 000001ee50074280] overread, skip -7 enddists: -1 -1
[silencedetect @ 000001ee5008a1c0] silence_start: 6.21417
[silencedetect @ 000001ee5008a1c0] silence_end: 6.91712 | silence_duration: 0.702958
[silencedetect @ 000001ee5008a1c0] silence_start: 16.44
[silencedetect @ 000001ee5008a1c0] silence_end: 17.1547 | silence_duration: 0.714708
[mp3float @ 000001ee50074280] overread, skip -10 enddists: -3 -3
[mp3float @ 000001ee50074280] overread, skip -5 enddists: -4 -4
[silencedetect @ 000001ee5008a1c0] silence_start: 24.4501
size=N/A time=00:00:25.17 bitrate=N/A speed=1.32e+03x
video:0kB audio:1180kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
[silencedetect @ 000001ee5008a1c0] silence_end: 25.176 | silence_duration: 0.725917


    


    That also match the values and points based on Adobe Audition

    


    my file adobe audition silences

    


    So far all good.

    


    3) Now, based on some calculations (which is based on application's logic on what should be the final duration of the audio) I am trying to delete the silence with "0.725917"s duration. For that, based on ffmpeg docs (https://ffmpeg.org/ffmpeg-filters.html#silencedetect)

    


    


    Trim all silence encountered from beginning to end where there is more
than 1 second of silence in audio :
silenceremove=stop_periods=-1:stop_duration=1:stop_threshold=-90dB

    


    


    I run this command

    


    ffmpeg -i my_file.mp3 -af silenceremove=stop_periods=-1:stop_threshold=-50dB:stop_duration=0.72 result1.mp3


    


    So, I am expecting that it should delete only the silence with "0.725917" duration (the last one in the above image), however it is deleting the silence that starts at 16.44s with duration of "0.714708"s. Please see the following comparison :

    


    my file and result1 adobe audition silence comparison

    


    4) Running detectsilence on result1.mp3 with same options gives even stranger results

    


    ffmpeg -i result1.mp3 -af silencedetect=noise=-50dB:d=0.2 -f null -


    


    result

    


    [mp3float @ 0000017723404280] overread, skip -5 enddists: -4 -4
[silencedetect @ 0000017723419540] silence_start: 6.21417
[silencedetect @ 0000017723419540] silence_end: 6.92462 | silence_duration: 0.710458
[mp3float @ 0000017723404280] overread, skip -7 enddists: -6 -6
[mp3float @ 0000017723404280] overread, skip -7 enddists: -2 -2
[mp3float @ 0000017723404280] overread, skip -6 enddists: -1 -1
    Last message repeated 1 times
[silencedetect @ 0000017723419540] silence_start: 23.7308
size=N/A time=00:00:24.45 bitrate=N/A speed=1.33e+03x
video:0kB audio:1146kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
[silencedetect @ 0000017723419540] silence_end: 24.456 | silence_duration: 0.725167


    


    So, the results are :

    


      

    • With command to remove silences that are longer than "0.72 second", a silence that was "0.714708"s, got removed and - a silence with "0.725917"s remained as is (well, actually changed a little - as per 3rd point)
    • 


    • The first silence that had started at "6.21417" and had a duration of "0.702958"s, suddenly now has a duration of "0.710458"s
    • 


    • The 3rd silence that had started at "24.4501" (which now starts at 23.7308 - obviously because the 2nd silence was removed) and had a duration of "0.725917", now suddenly is "0.725167"s (this one is not a big difference, but still why even removing other silence, this silence's duration should change at all).
    • 


    


    Accordingly the expected results are :

    


      

    • Only the silences that match the provided condition (stop_duration=0.72) should be removed. In this specific example only the last one, but in general any silence that matches the condition of the length - irrelevant of their positioning (start, end or in the middle)
    • 


    • Other silences should remain with same exact duration they were before
    • 


    


    FFMpeg : 4.2.4-1ubuntu0.1, Ubuntu : 20.04.2

    


    Some attempts and results, while playing with ffmpeg options

    


    a)

    


    ffmpeg -i my_file.mp3 -af silenceremove=stop_periods=-1:stop_threshold=-50dB:stop_duration=0.72:detection=peak tmp1.mp3


    


    result :
First and second silences are removed, 3rd silence's duration remains exactly the same

    


    b)

    


    ffmpeg -i my_file.mp3 -af silenceremove=stop_periods=-1:stop_threshold=-50dB:stop_duration=0.71 tmp_0.71.mp3


    


    result :
First and second silences are removed, 3rd silence remains, but the duration becomes "0.72075"s

    


    c)

    


    ffmpeg -i my_file.mp3 -af silenceremove=stop_periods=-1:stop_threshold=-50dB:stop_duration=0.7 tmp_0.7.mp3


    


    result :
all 3 silence are removed

    


    d) the edge case

    


    this command still removes the second silence (after which the first silence become exactly as in point #4 and last silence becomes "0.721375")

    


    ffmpeg -i my_file.mp3 -af silenceremove=stop_periods=-1:stop_threshold=-50dB:stop_duration=0.72335499999 tmp_0.72335499999.mp3


    


    but this one, again does not remove any silence :

    


    ffmpeg -i my_file.mp3 -af silenceremove=stop_periods=-1:stop_threshold=-50dB:stop_duration=0.723355 tmp_0.723355.mp3


    


    e) window param case 0.03

    


    ffmpeg -i my_file.mp3 -af silenceremove=stop_periods=-1:stop_threshold=-50dB:stop_duration=0.72:window=0.03 window_0.03.mp3


    


    does not remove any silence, but the detect silence

    


    ffmpeg -i window_0.03.mp3 -af silencedetect=noise=-50dB:d=0.2 -f null -


    


    gives this result (compare with silences in result1.mp3 - from point #4 )

    


    [mp3float @ 000001c5c8824280] overread, skip -5 enddists: -4 -4
[silencedetect @ 000001c5c883a040] silence_start: 6.21417
[silencedetect @ 000001c5c883a040] silence_end: 6.92462 | silence_duration: 0.710458
[mp3float @ 000001c5c8824280] overread, skip -7 enddists: -6 -6
[mp3float @ 000001c5c8824280] overread, skip -7 enddists: -2 -2
[silencedetect @ 000001c5c883a040] silence_start: 16.4424
[silencedetect @ 000001c5c883a040] silence_end: 17.1555 | silence_duration: 0.713167
[mp3float @ 000001c5c8824280] overread, skip -6 enddists: -1 -1
    Last message repeated 1 times
[silencedetect @ 000001c5c883a040] silence_start: 24.4508
size=N/A time=00:00:25.17 bitrate=N/A speed=1.24e+03x
video:0kB audio:1180kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
[silencedetect @ 000001c5c883a040] silence_end: 25.176 | silence_duration: 0.725167


    


    f) window case 0.01

    


    ffmpeg -i my_file.mp3 -af silenceremove=stop_periods=-1:stop_threshold=-50dB:stop_duration=0.72:window=0.01 window_0.01.mp3


    


    removes first and second silences, the detect silence with same params has the following result

    


    [mp3float @ 000001ea631d4280] overread, skip -5 enddists: -4 -4
    Last message repeated 1 times
[mp3float @ 000001ea631d4280] overread, skip -7 enddists: -2 -2
[mp3float @ 000001ea631d4280] overread, skip -6 enddists: -1 -1
    Last message repeated 1 times
[silencedetect @ 000001ea631ea1c0] silence_start: 23.0108
size=N/A time=00:00:23.73 bitrate=N/A speed=1.2e+03x
video:0kB audio:1113kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
[silencedetect @ 000001ea631ea1c0] silence_end: 23.736 | silence_duration: 0.725167


    



    


    Any thoughts, ideas, points are much appreciated.

    


  • .mp4 file is not playing in Django template and FireFox or Chrome

    9 février 2021, par Himanshu sharma

    I can save live RTSP video stream in .mp4 but when I run saved .mp4 video in Django template or Firefox or Chrome browser or VLC, video is not playing in ubuntu.
I think I have a compatible issue problem in .mp4. Furthermore, I want to show and play .mp4 saved file in Django.

    


    I have a two IP camera which provides a live RTSP video stream.

    


    self.input_stream---> rtsp://admin:Admin123@192.168.1.208/user=admin_password=Admin123_channel=0channel_number_stream=0.sdp

self.input_stream---> rtsp://Admin:@192.168.1.209/user=Admin_password=_channel=0channel_number_stream=0.sdp


    


    Python 3.8.5 (default, Jul 28 2020, 12:59:40)
[GCC 9.3.0] on linux,

    


    Django==3.1.2

    


    I am implementing this code in difference Ubuntu PCs

    


    Ubuntu = 18.04 and 20.04

    


    opencv-contrib-python==4.4.0.46

    


    opencv-python==4.4.0.46

    


    ffmpeg version 4.2.4-1ubuntu0.1 Copyright (c) 2000-2020 the FFmpeg developers
built with gcc 9 (Ubuntu 9.3.0-10ubuntu2)

    


    I had tried different fourcc to save .mp4 but below fourcc work perfectly in Ubuntu.

    


    fourcc = cv2.VideoWriter_fourcc(*'mp4v')

    


    class ffmpegStratStreaming(threading.Thread):
    def __init__(self, input_stream=None, output_stream=None, camera=None, *args, **kwargs):
        self.input_stream = input_stream
        self.output_stream = output_stream
        self.camera = camera
        super().__init__(*args, **kwargs)

    def run(self):
        try:vs = cv2.VideoCapture(self.input_stream)
            fps_rate = int(vs.get(cv2.CAP_PROP_FPS))
            ##############################
            ##############################  
            # ~ print('fps rate-->', fps_rate,'camera id-->' ,str(self.camera.id))
            # ~ vs.set(cv2.CAP_PROP_POS_FRAMES,50)  #Set the frame number to be obtained
            # ~ print('fps rate-->', fps_rate,'camera id-->' ,str(self.camera.id),' ####### ')
            
            # initialize the video writer (we'll instantiate later if need be)
            writer = None

            # initialize the frame dimensions (we'll set them as soon as we read
            # the first frame from the video)
            W = None
            H = None    
            # start the frames per second throughput estimator
            fps = FPS().start()

            #  saving frame in avi video format
            video_file_count = 0
            start_time = time.time()

            while True:
                try:
                    # grab the next frame and handle if we are reading from either
                    # VideoCapture or VideoStream
                    
                    frame_init = vs.read()
                    frame = frame_init[1] if self.input_stream else frame_init
                    
                    # if frame is can't read correctly ret is False
                    while frame_init[0] == False:
                        print("Can't receive frame. Retrying ...")
                        vs.release()
                        vs = cv2.VideoCapture(self.input_stream)                                                                              
                        frame_init = vs.read()
                        frame = frame_init[1] if self.input_stream else frame_init

                    # if we are viewing a video and we did not grab a frame then we
                    # have reached the end of the video
                    if self.input_stream is not None and frame is None:
                        break

                    # resize the frame to have a maximum width of 500 pixels (the
                    # less data we have, the faster we can process it), then convert
                    # the frame from BGR to RGB for dlib
                    frame = imutils.resize(frame, width=500)        
                    
                    
                    #<---------------------- Start of  writing a video to disk ------------------------->                   
                    minute = 1
                    second  = 60
                    minite_to_save_video = int(minute) * int(second)

                
                    # if we are supposed to be writing a video to disk, initialize
                    if time.time() - start_time >= minite_to_save_video or  video_file_count == 0 :
                        ## where H = heigth, W = width, C = channel 
                        H, W, C = frame.shape
                        video_file_count += 1
                        start_time = time.time()
                        output_save_directory = self.output_stream+str(video_file_count)+'.mp4'
                        # fourcc = cv2.VideoWriter_fourcc(*"MJPG")
                        # fourcc = cv2.VideoWriter_fourcc(*'XVID')
                        # fourcc = cv2.VideoWriter_fourcc(*'X264')
                        # fourcc = cv2.VideoWriter_fourcc(*'MP4V')

                        
                        # fourcc = cv2.VideoWriter_fourcc(*'FMP4')

                        # fourcc = cv2.VideoWriter_fourcc(*'avc1')


                        # fourcc = cv2.VideoWriter_fourcc('M','J','P','G')

                        fourcc = cv2.VideoWriter_fourcc(*'mp4v')
                        # fourcc = cv2.VideoWriter_fourcc(*'mp3v')
                        # fourcc = 0x00000021
                        print(fourcc, type(fourcc),'ffffffff')
                        # a = int(vs.get(cv2.CAP_PROP_FOURCC))
                        # print(a,type(a),'  aaaaaaaa' )

                        # writer = skvideo.io.FFmpegWriter(output_save_directory, outputdict={
                        #   '-vcodec': 'libx264', '-b': '300000000'
                        # })
                        
                        # writer = skvideo.io.FFmpegWriter(self.output_stream, outputdict={'-r': '120', '-c:v': 'libx264', '-crf': '0', '-preset': 'ultrafast', '-pix_fmt': 'yuv444p'})
                        
                        writer = cv2.VideoWriter(output_save_directory, fourcc ,20.0,( int(W), int(H) ), True)
                        
                        
                        # ~ The cv2.VideoWriter requires five parameters:    

                    # check to see if we should write the frame to disk
                    if writer is not None:                          
                        try:
                            writer.write(frame)
                        except Exception as e:
                            print('Error in writing video output---> ', e)
                            
                    #<---------------------- end of  writing a video to disk ------------------------->

                    # show the output frame
                    # cv2.imshow("Frame", frame)
                    # key = cv2.waitKey(1) & 0xFF

                    # if the `q` key was pressed, break from the loop
                    # if key == ord("q"):
                    #   break

                    # increment the total number of frames processed thus far and
                    # then update the FPS counter
                    totalFrames += 1
                    fps.update()
                except Exception as e:
                    print('Error in main while loop--> ', e)

            # stop the timer and display FPS information
            fps.stop()

            # check to see if we need to release the video writer pointer
            # if writer is not None:
            #   writer.release()

            # if we are not using a video file, stop the camera video stream
            # if not self.input_stream:
            #   vs.stop()

            # otherwise, release the video file pointer
            # else:
            #   vs.release()

            # close any open windows
            # cv2.destroyAllWindows()
        except Exception as e:
            print(e, '333333333333333333333333333')


    


    My Django template code

    


    {% block main %}&#xA;<div class="row">&#xA;  {% if folders|length == 0 %}&#xA;    <div class="col-md-12 text-center">&#xA;      <h6 class="card-title">There are no files in this directory.</h6>&#xA;    </div>&#xA;  {% else %}&#xA;    {% for folder in folders %}&#xA;      <div class="col-md-3 text-center">&#xA;          <div class="card-block">&#xA;            <video class="video-js vjs-fluid vjs-default-skin" controls="controls" preload="auto" muted="muted" data-setup="&#x27;{" true="true"></video>&#xA;                <source src="{% get_media_prefix %}camera-feed/video-saved/{{pk}}/{{parent}}/{{folder}}" type="video/mp4">&#xA;            &#xA;            <h6 class="card-title">{{folder}}</h6>&#xA;          </source></div>&#xA;      </div>&#xA;    {% endfor %}&#xA;  {% endif %}&#xA;</div>&#xA;{% endblock %}&#xA;

    &#xA;

    Function in view.py to see saved .mp4 video in Django template. Video is saved at local folder.

    &#xA;

    def CameraVideos(request, pk, folder):&#xA;    dirpath = settings.MEDIA_ROOT &#x2B; &#x27;/camera-feed/video-saved/&#x27; &#x2B; str(pk) &#x2B; &#x27;/&#x27; &#x2B; folder&#xA;    folders = sorted(Path(dirpath).iterdir(), key=os.path.getmtime)&#xA;    data = []&#xA;    for file in folders:&#xA;        if not file.name.startswith(&#x27;.&#x27;):&#xA;            data.append(file.name)&#xA;    return render(request, "home/camera_video.html", {&#x27;folders&#x27;: data, &#x27;pk&#x27;: pk, &#x27;parent&#x27;: folder})&#xA;

    &#xA;