
Recherche avancée
Médias (1)
-
Rennes Emotion Map 2010-11
19 octobre 2011, par
Mis à jour : Juillet 2013
Langue : français
Type : Texte
Autres articles (104)
-
Publier sur MédiaSpip
13 juin 2013Puis-je poster des contenus à partir d’une tablette Ipad ?
Oui, si votre Médiaspip installé est à la version 0.2 ou supérieure. Contacter au besoin l’administrateur de votre MédiaSpip pour le savoir -
Encoding and processing into web-friendly formats
13 avril 2011, parMediaSPIP automatically converts uploaded files to internet-compatible formats.
Video files are encoded in MP4, Ogv and WebM (supported by HTML5) and MP4 (supported by Flash).
Audio files are encoded in MP3 and Ogg (supported by HTML5) and MP3 (supported by Flash).
Where possible, text is analyzed in order to retrieve the data needed for search engine detection, and then exported as a series of image files.
All uploaded files are stored online in their original format, so you can (...) -
Contribute to translation
13 avril 2011You 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 (...)
Sur d’autres sites (8032)
-
Nginx rtmp live stream with ffmpeg Transcoding , ffmpeg dont work
7 septembre 2016, par loip104Hy 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 ysouljaall 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=173more 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œschavformat/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:0The 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 laterIt 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.