Recherche avancée

Médias (1)

Mot : - Tags -/copyleft

Autres articles (46)

  • Support de tous types de médias

    10 avril 2011

    Contrairement à beaucoup de logiciels et autres plate-formes modernes de partage de documents, MediaSPIP a l’ambition de gérer un maximum de formats de documents différents qu’ils soient de type : images (png, gif, jpg, bmp et autres...) ; audio (MP3, Ogg, Wav et autres...) ; vidéo (Avi, MP4, Ogv, mpg, mov, wmv et autres...) ; contenu textuel, code ou autres (open office, microsoft office (tableur, présentation), web (html, css), LaTeX, Google Earth) (...)

  • Contribute to translation

    13 avril 2011

    You can help us to improve the language used in the software interface to make MediaSPIP more accessible and user-friendly. You can also translate the interface into any language that allows it to spread to new linguistic communities.
    To do this, we use the translation interface of SPIP where the all the language modules of MediaSPIP are available. Just subscribe to the mailing list and request further informantion on translation.
    MediaSPIP is currently available in French and English (...)

  • Supporting all media types

    13 avril 2011, par

    Unlike most software and media-sharing platforms, MediaSPIP aims to manage as many different media types as possible. The following are just a few examples from an ever-expanding list of supported formats : images : png, gif, jpg, bmp and more audio : MP3, Ogg, Wav and more video : AVI, MP4, OGV, mpg, mov, wmv and more text, code and other data : OpenOffice, Microsoft Office (Word, PowerPoint, Excel), web (html, CSS), LaTeX, Google Earth and (...)

Sur d’autres sites (6826)

  • Nginx rtmp live stream with ffmpeg Transcoding , ffmpeg dont work

    7 septembre 2016, par loip104

    Hy i am trying to receive a stream convert and give out on rtmp

    my nginx config

    #user  nobody;
    worker_processes  1;

    error_log  logs/error.log debug;

    events {
       worker_connections  1024;
    }

    rtmp {
            server {
                    listen 1935;
                    chunk_size 8192;

     application big {
                    live on;
     exec ffmpeg -i rtmp://127.0.0.1/big/test -vcodec libx264 -preset veryfast -b:v 2000k -maxrate 2000k -bufsize 2000k -s 1280x720 -sws_flags lanczos -r 60 -acodec copy -f flv rtmp://127.0.0.1/live/test;
    }

     application live {
              live on;

       }


            }
    }

    Her is the nginx log file , nginx start —> OBS connected

    2016/09/07 20:57:49 [notice] 9841#0: using the "epoll" event method
    2016/09/07 20:57:49 [notice] 9841#0: nginx/1.9.15
    2016/09/07 20:57:49 [notice] 9841#0: built by gcc 4.9.2 (Debian 4.9.2-10)
    2016/09/07 20:57:49 [notice] 9841#0: OS: Linux 3.16.0-4-amd64
    2016/09/07 20:57:49 [notice] 9841#0: getrlimit(RLIMIT_NOFILE): 65536:65536
    2016/09/07 20:57:49 [notice] 9842#0: start worker processes
    2016/09/07 20:57:49 [notice] 9842#0: start worker process 9843
    2016/09/07 20:57:51 [info] 9843#0: *1 client connected '**.**.**.234'
    2016/09/07 20:57:52 [info] 9843#0: *1 connect: app='live' args='' flashver='LNX 9,0,124,2' swf_url='' tc_url='rtmp://sb2.stream-booster.ovh:1935/live' page_url='' acodecs=4071 vcodecs=252 object_encoding=0, client: **.**.**.234, server: 0.0.0.0:1935
    2016/09/07 20:57:52 [info] 9843#0: *1 createStream, client: **.**.**.234, server: 0.0.0.0:1935
    2016/09/07 20:57:52 [info] 9843#0: *1 play: name='test' args='' start=-2000 duration=0 reset=0 silent=0, client: **.**.**.234, server: 0.0.0.0:1935
    2016/09/07 20:58:17 [info] 9843#0: *2 client connected '**.**.**.234'
    2016/09/07 20:58:17 [info] 9843#0: *2 connect: app='big' args='' flashver='FMLE/3.0 (compatible; obs-studi' swf_url='rtmp://sb2.***.ovh/big' tc_url='rtmp://sb2.***.ovh/big' page_url='' acodecs=0 vcodecs=0 object_encoding=0, client: **.**.**.234, server: 0.0.0.0:1935
    2016/09/07 20:58:18 [info] 9843#0: *2 createStream, client: **.**.**.234, server: 0.0.0.0:1935
    2016/09/07 20:58:18 [info] 9843#0: *2 publish: name='test' args='' type=live silent=0, client: **.**.**.234, server: 0.0.0.0:1935
    2016/09/07 20:58:18 [info] 9843#0: *2 exec: starting managed child 'ffmpeg', client: **.**.**.234, server: 0.0.0.0:1935
    2016/09/07 20:58:18 [info] 9843#0: *2 exec: child 9844 exited; ignoring, client: **.**.**.234, server: 0.0.0.0:1935
    2016/09/07 20:58:18 [info] 9843#0: *2 exec: terminating child 9844, client: **.**.**.234, server: 0.0.0.0:1935
    2016/09/07 20:58:18 [notice] 9843#0: signal 17 (SIGCHLD) received
    2016/09/07 20:58:18 [notice] 9843#0: unknown process 9844 exited with code 1
    2016/09/07 20:58:18 [info] 9843#0: epoll_wait() failed (4: Interrupted system call)

    But i dont get a Output on "rtmp ://127.0.0.1/live/test"

    if i start ffmpeg on terminal all work fine , i think nginx dont execute the command ?

    how i get this ?

  • Streaming USB Webcam to YouTube Live - Raspberry Pi [migrated]

    13 mai 2016, par ysoulja

    all new here. Hoping someone can help.

    I am trying to Stream a USB webcam to YouTube Live Events but having difficulty. I followed :

    How to stream on YouTube using a Raspberry Pi ?

    I have managed to get ffmpeg compiled and can run

    ffmpeg -f v4l2 -framerate 25 -video_size 640x480 -i /dev/video0 -c:v     libx264 -b:v 700k -an -f flv rtmp://

    It looks to me as the stream is working as I get the :

    frame= 29 fps= 29 q=28.0 12kb time=00:00.05 bitrate=1189.0kbits

    messages scrolling along however YouTube says "We are not receiving data from your encoder. Please make sure it is configured correctly in the Ingestion Settings page." While also saying "Good Health".

    Can someone please assist ? Thanks

    Edit : Some logs

    Stream mapping:
    Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (libx264))
    Press [q] to stop, [?] for help
    frame=    2 fps=0.0 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A dup=0 drop=21 speed=   0x
    frame=    2 fps=2.0 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A dup=0 drop=29 speed=   0x
    Past duration 0.994804 too large
    frame=   10 fps=6.6 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A dup=0 drop=30 speed=   0x
    frame=   17 fps=8.4 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A dup=0 drop=30 speed=   0x
    frame=   25 fps=9.9 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A dup=0 drop=30 speed=   0x
    frame=   32 fps= 11 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A dup=0 drop=30 speed=   0x
    frame=   40 fps= 11 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A dup=0 drop=30 speed=   0x
    frame=   47 fps=8.9 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A dup=0 drop=30 speed=   0x
    frame=   54 fps=8.8 q=24.0 size=      44kB time=00:00:02.12 bitrate= 169.6kbits/s dup=0 drop=30 s
    Past duration 0.932655 too large
    frame=   58 fps=8.1 q=16.0 size=     114kB time=00:00:02.33 bitrate= 401.6kbits/s dup=0 drop=30 s
    frame=   61 fps=7.8 q=12.0 size=     283kB time=00:00:02.54 bitrate= 910.5kbits/s dup=0 drop=30 s
    frame=   62 fps=7.3 q=11.0 size=     360kB time=00:00:02.58 bitrate=1141.5kbits/s dup=0 drop=30 s    
    frame=   63 fps=6.9 q=13.0 size=     414kB time=00:00:02.66 bitrate=1269.7kbits/s dup=0 drop=30 s
    frame=   63 fps=6.6 q=13.0 size=     414kB time=00:00:02.66 bitrate=1269.7kbits/s dup=0 drop=67 s
    frame=   63 fps=6.2 q=13.0 size=     414kB time=00:00:02.66 bitrate=1269.7kbits/s dup=0 drop=75 s    
    frame=   63 fps=5.9 q=13.0 size=     414kB time=00:00:02.66 bitrate=1269.7kbits/s dup=0 drop=83 s
    frame=   63 fps=5.7 q=13.0 size=     414kB time=00:00:02.66 bitrate=1269.7kbits/s dup=0 drop=90 s
    frame=   63 fps=5.4 q=13.0 size=     414kB time=00:00:02.66 bitrate=1269.7kbits/s dup=0 drop=98 s
    frame=   63 fps=5.2 q=13.0 size=     414kB time=00:00:02.66 bitrate=1269.7kbits/s dup=0 drop=105
    frame=   63 fps=5.0 q=13.0 size=     414kB time=00:00:02.66 bitrate=1269.7kbits/s dup=0 drop=113
    frame=   63 fps=4.8 q=13.0 size=     414kB time=00:00:02.66 bitrate=1269.7kbits/s dup=0 drop=120
    frame=   63 fps=4.6 q=13.0 size=     414kB time=00:00:02.66 bitrate=1269.7kbits/s dup=0 drop=128
    frame=   63 fps=4.5 q=13.0 size=     414kB time=00:00:02.66 bitrate=1269.7kbits/s dup=0 drop=136
    frame=   63 fps=4.3 q=13.0 size=     414kB time=00:00:02.66 bitrate=1269.7kbits/s dup=0 drop=143  
    frame=   63 fps=4.2 q=13.0 size=     414kB time=00:00:02.66 bitrate=1269.7kbits/s dup=0 drop=151
    frame=   63 fps=4.0 q=13.0 size=     414kB time=00:00:02.66 bitrate=1269.7kbits/s dup=0 drop=158
    frame=   63 fps=3.9 q=13.0 size=     414kB time=00:00:02.66 bitrate=1269.7kbits/s dup=0 drop=166
    frame=   63 fps=3.8 q=13.0 size=     414kB time=00:00:02.66 bitrate=1269.7kbits/s dup=0 drop=173

    more logs

    Stream mapping:
    Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (libx264))
    Press [q] to stop, [?] for help
    frame=   49 fps= 13 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A dup=0 drop=20 speed=   0x
    frame=   49 fps= 12 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A dup=0 drop=28 speed=   0x
    frame=   61 fps= 11 q=24.0 size=      72kB time=00:00:00.54 bitrate=1090.9kbits/s dup=0 drop=30 s
    frame=   56 fps= 12 q=26.0 size=      50kB time=00:00:00.20 bitrate=1976.8kbits/s dup=0 drop=30 s
    frame=   65 fps= 11 q=22.0 size=     101kB time=00:00:00.79 bitrate=1046.9kbits/s dup=0 drop=30 s
    frame=   69 fps= 10 q=20.0 size=     145kB time=00:00:01.08 bitrate=1097.6kbits/s dup=0 drop=30 s
    frame=   73 fps=9.7 q=20.0 size=     213kB time=00:00:01.33 bitrate=1307.3kbits/s dup=0 drop=30 s
    frame=   78 fps=9.7 q=22.0 size=     291kB time=00:00:01.66 bitrate=1431.6kbits/s dup=0 drop=30 s
    frame=   79 fps=9.2 q=22.0 size=     301kB time=00:00:01.70 bitrate=1442.8kbits/s dup=0 drop=30 s
    frame=   85 fps=9.0 q=23.0 size=     365kB time=00:00:02.12 bitrate=1407.8kbits/s dup=0 drop=30 s
    frame=   91 fps=9.1 q=24.0 size=     402kB time=00:00:02.54 bitrate=1295.9kbits/s dup=0 drop=31 s
    frame=   94 fps=8.8 q=24.0 size=     425kB time=00:00:02.70 bitrate=1285.3kbits/s dup=0 drop=33 s
    frame=   98 fps=8.8 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=51 s
    frame=   98 fps=8.4 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=73 s
    frame=   98 fps=8.0 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=80 s
    frame=   98 fps=7.7 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=88 s
    frame=   98 fps=7.4 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=95 s
    frame=   98 fps=7.1 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=103
    frame=   98 fps=6.9 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=110
    frame=   98 fps=6.7 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=118
    frame=   98 fps=6.4 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=126
    frame=   98 fps=6.2 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=133
    frame=   98 fps=6.0 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=141
    frame=   98 fps=5.9 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=148
    frame=   98 fps=5.7 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=156
    frame=   98 fps=5.5 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=164
    frame=   98 fps=5.4 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=171
    frame=   98 fps=5.2 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=179
    frame=   98 fps=5.1 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=186
    frame=   98 fps=5.0 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=194
    frame=   98 fps=4.8 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=202
    frame=   98 fps=4.7 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=209
    frame=   98 fps=4.6 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=217
    frame=   98 fps=4.5 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=224
    frame=   98 fps=4.4 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=232
    frame=   98 fps=4.3 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=239
    frame=   98 fps=4.2 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=247
    frame=   98 fps=4.1 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=255
    frame=   98 fps=4.0 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=262
    frame=   98 fps=4.0 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=270
    frame=   98 fps=3.9 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=277
    frame=   98 fps=3.8 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=285
    frame=   98 fps=3.7 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=293
    frame=   98 fps=3.7 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=300
    frame=   98 fps=3.6 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=308
    frame=   98 fps=3.5 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=315
    frame=   98 fps=3.5 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=323
    frame=   98 fps=3.4 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=331
    frame=   98 fps=3.3 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=338
    frame=   98 fps=3.3 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=346
    frame=   98 fps=3.2 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=353
    frame=   98 fps=3.2 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=361
    frame=   98 fps=3.1 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=368
    frame=   98 fps=3.1 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=376
    frame=   98 fps=3.0 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=384
    frame=   98 fps=3.0 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=391
    frame=   98 fps=2.9 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=399
    frame=   98 fps=2.9 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=406
    frame=   98 fps=2.9 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=414
    frame=   98 fps=2.8 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=422
    frame=   98 fps=2.8 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=429
    frame=   98 fps=2.7 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=437
    frame=   98 fps=2.7 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=444
    frame=   98 fps=2.7 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=452
    frame=   98 fps=2.6 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=459
    frame=   98 fps=2.6 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=467
    frame=   98 fps=2.6 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=475
    frame=   98 fps=2.5 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=482
    frame=   98 fps=2.5 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=490
    frame=   98 fps=2.5 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=497
    frame=   98 fps=2.4 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=505
    frame=   98 fps=2.4 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=513
    frame=   98 fps=2.4 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=520
    frame=   98 fps=2.3 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=528
    frame=   98 fps=2.3 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=535
    frame=   98 fps=2.3 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=543
    frame=   98 fps=2.3 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=551
    frame=   98 fps=2.2 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=558
    frame=   98 fps=2.2 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=566
    frame=   98 fps=2.2 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=573
    frame=   98 fps=2.2 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=581
    frame=   98 fps=2.1 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=588
    frame=   98 fps=2.1 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=596
    frame=   98 fps=2.1 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=604
    frame=   98 fps=2.1 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=611
    frame=   98 fps=2.0 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=619
    frame=   98 fps=2.0 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=626
    frame=   98 fps=2.0 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=634
    frame=   98 fps=2.0 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=642
    frame=   98 fps=2.0 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=649
    frame=   98 fps=1.9 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=657
    frame=   98 fps=1.9 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=664
    frame=   98 fps=1.9 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=672
    frame=   98 fps=1.9 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=680
    frame=   98 fps=1.9 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=687
    frame=   98 fps=1.8 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=695
    frame=   98 fps=1.8 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=702
    frame=   98 fps=1.8 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=710
    frame=   98 fps=1.8 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=717
    frame=   98 fps=1.8 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=725
    frame=   98 fps=1.8 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=733
    frame=   98 fps=1.7 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=740
    frame=   98 fps=1.7 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=748
    frame=   98 fps=1.7 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=755
    frame=   98 fps=1.7 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=763
    frame=   98 fps=1.7 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=778
    frame=   98 fps=1.7 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=786
    frame=   98 fps=1.6 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=793
    frame=   98 fps=1.6 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=808
    frame=   98 fps=1.6 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=816
    frame=   98 fps=1.6 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=824
    frame=   98 fps=1.6 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=831
    frame=   98 fps=1.6 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=839
    frame=   98 fps=1.6 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=846
    frame=   98 fps=1.5 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=854
    frame=   98 fps=1.5 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=862
    frame=   98 fps=1.5 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=869
    frame=   98 fps=1.5 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=877
    frame=   98 fps=1.5 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=884
    frame=   98 fps=1.5 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=892
    frame=   98 fps=1.5 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=900
    frame=   98 fps=1.5 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=907
    frame=   98 fps=1.4 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=915
    frame=   98 fps=1.4 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=922
    frame=   98 fps=1.4 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=930
    frame=   98 fps=1.4 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=937
    frame=   98 fps=1.4 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=945
    frame=   98 fps=1.4 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=953
    frame=   98 fps=1.4 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=960
    frame=   98 fps=1.4 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=968
    frame=   98 fps=1.4 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=975
    frame=   98 fps=1.3 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=991
    frame=   98 fps=1.3 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=998
    frame=   98 fps=1.3 q=20.0 size=     453kB time=00:00:03.00 bitrate=1237.0kbits/s dup=0 drop=1006
  • avformat/mov : fix seeking with HEVC open GOP files

    18 février 2022, par Clément Bœsch
    avformat/mov : fix seeking with HEVC open GOP files
    

    This was tested with medias recorded from an iPhone XR and an iPhone 13.

    Here is how a typical stream looks like in coding order :

    ┌────────┬─────┬─────┬──────────┐
    │ sample | PTS | DTS | keyframe |
    ├────────┼─────┼─────┼──────────┤
    ┊ ┊ ┊ ┊ ┊
    │ 53 │ 560 │ 510 │ No │
    │ 54 │ 540 │ 520 │ No │
    │ 55 │ 530 │ 530 │ No │
    │ 56 │ 550 │ 540 │ No │
    │ 57 │ 600 │ 550 │ Yes │
    │ * 58 │ 580 │ 560 │ No │
    │ * 59 │ 570 │ 570 │ No │
    │ * 60 │ 590 │ 580 │ No │
    │ 61 │ 640 │ 590 │ No │
    │ 62 │ 620 │ 600 │ No │
    ┊ ┊ ┊ ┊ ┊

    In composition/display order :

    ┌────────┬─────┬─────┬──────────┐
    │ sample | PTS | DTS | keyframe |
    ├────────┼─────┼─────┼──────────┤
    ┊ ┊ ┊ ┊ ┊
    │ 55 │ 530 │ 530 │ No │
    │ 54 │ 540 │ 520 │ No │
    │ 56 │ 550 │ 540 │ No │
    │ 53 │ 560 │ 510 │ No │
    │ * 59 │ 570 │ 570 │ No │
    │ * 58 │ 580 │ 560 │ No │
    │ * 60 │ 590 │ 580 │ No │
    │ 57 │ 600 │ 550 │ Yes │
    │ 63 │ 610 │ 610 │ No │
    │ 62 │ 620 │ 600 │ No │
    ┊ ┊ ┊ ┊ ┊

    Sample/frame 58, 59 and 60 are B-frames which actually depends on the
    key frame (57). Here the key frame is not an IDR but a "CRA" (Clean
    Random Access).

    Initially, I thought I could rely on the sdtp box (independent and
    disposable samples), but unfortunately :

    sdtp[54] is_leading:0 sample_depends_on:1 sample_is_depended_on:0 sample_has_redundancy:0
    sdtp[55] is_leading:0 sample_depends_on:1 sample_is_depended_on:2 sample_has_redundancy:0
    sdtp[56] is_leading:0 sample_depends_on:1 sample_is_depended_on:2 sample_has_redundancy:0
    sdtp[57] is_leading:0 sample_depends_on:2 sample_is_depended_on:0 sample_has_redundancy:0
    sdtp[58] is_leading:0 sample_depends_on:1 sample_is_depended_on:0 sample_has_redundancy:0
    sdtp[59] is_leading:0 sample_depends_on:1 sample_is_depended_on:2 sample_has_redundancy:0
    sdtp[60] is_leading:0 sample_depends_on:1 sample_is_depended_on:2 sample_has_redundancy:0
    sdtp[61] is_leading:0 sample_depends_on:1 sample_is_depended_on:0 sample_has_redundancy:0
    sdtp[62] is_leading:0 sample_depends_on:1 sample_is_depended_on:0 sample_has_redundancy:0

    The information that might have been useful here would have been
    is_leading, but all the samples are set to 0 so this was unusable.

    Instead, we need to rely on sgpd/sbgp tables. In my case the video track
    contained 3 sgpd tables with the following grouping types : tscl, sync
    and tsas. In the sync table we have the following 2 entries (only) :

    sgpd.sync[1] : sync nal_unit_type:0x14
    sgpd.sync[2] : sync nal_unit_type:0x15

    (The count starts at 1 because 0 carries the undefined semantic, we'll
    see that later in the reference table).

    The NAL unit types presented here correspond to :

    libavcodec/hevc.h : HEVC_NAL_IDR_N_LP = 20,
    libavcodec/hevc.h : HEVC_NAL_CRA_NUT = 21,

    In parallel, the sbgp sync table contains the following :

    ┌────┬───────┬─────┐
    │ id │ count │ gdi │
    ├────┼───────┼─────┤
    │ 0 │ 1 │ 1 │
    │ 1 │ 56 │ 0 │
    │ 2 │ 1 │ 2 │
    │ 3 │ 59 │ 0 │
    │ 4 │ 1 │ 2 │
    │ 5 │ 59 │ 0 │
    │ 6 │ 1 │ 2 │
    │ 7 │ 59 │ 0 │
    │ 8 │ 1 │ 2 │
    │ 9 │ 59 │ 0 │
    │ 10 │ 1 │ 2 │
    │ 11 │ 11 │ 0 │
    └────┴───────┴─────┘

    The gdi column (group description index) directly refers to the index in
    the sgpd.sync table. This means the first frame is an IDR, then we have
    batches of undefined frames interlaced with CRA frames. No IDR ever
    appears again (tried on a 30+ seconds sample).

    With that information, we can build an heuristic using the presentation
    order.

    A few things needed to be introduced in this commit :

    1. min_sample_duration is extracted from the stts : we need the minimal
    step between sample in order to PTS-step backward to a valid point
    2. In order to avoid a loop over the ctts table systematically during a
    seek, we build an expanded list of sample offsets which will be used
    to translate from DTS to PTS
    3. An open_key_samples index to keep track of all the non-IDR key
    frames ; for now it only supports HEVC CRA frames. We should probably
    add BLA frames as well, but I don't have any sample so I prefered to
    leave that for later

    It is entirely possible I missed something obvious in my approach, but I
    couldn't come up with a better solution. Also, as mentioned in the diff,
    we could optimize is_open_key_sample(), but the linear scaling overhead
    should be fine for now since it only happens in seek events.

    Fixing this issue prevents sending broken packets to the decoder. With
    FFmpeg hevc decoder the frames are skipped, with VideoToolbox the frames
    are glitching.

    • [DH] libavformat/isom.h
    • [DH] libavformat/mov.c