
Recherche avancée
Autres articles (58)
-
Emballe médias : à quoi cela sert ?
4 février 2011, parCe plugin vise à gérer des sites de mise en ligne de documents de tous types.
Il crée des "médias", à savoir : un "média" est un article au sens SPIP créé automatiquement lors du téléversement d’un document qu’il soit audio, vidéo, image ou textuel ; un seul document ne peut être lié à un article dit "média" ; -
Contribute to a better visual interface
13 avril 2011MediaSPIP is based on a system of themes and templates. Templates define the placement of information on the page, and can be adapted to a wide range of uses. Themes define the overall graphic appearance of the site.
Anyone can submit a new graphic theme or template and make it available to the MediaSPIP community. -
Creating farms of unique websites
13 avril 2011, parMediaSPIP platforms can be installed as a farm, with a single "core" hosted on a dedicated server and used by multiple websites.
This allows (among other things) : implementation costs to be shared between several different projects / individuals rapid deployment of multiple unique sites creation of groups of like-minded sites, making it possible to browse media in a more controlled and selective environment than the major "open" (...)
Sur d’autres sites (6886)
-
FFMPEG conversion failed at random times on live stream to youtube
3 avril 2022, par good karmaI am running a bash script using ubuntu server on arm64 that live streams video and audio to youtube, heres the script below


FFMPEG is the lateset version available in the ubuntu repo


#! /bin/bash

VBR="8000k"
FPS="24"
QUAL="superfast"

YOUTUBE_URL="rtmp://a.rtmp.youtube.com/live2"
KEY="****"

VIDEO_SOURCE="/mnt/disk1/test/****"

AUDIO_SOURCE="****"

ffmpeg \
 -re -f lavfi -i "movie=filename=$VIDEO_SOURCE:loop=0, setpts=N/(FRAME_RATE*TB)" \
 -thread_queue_size 512 -i "$AUDIO_SOURCE" \
 -map 0:v:0 -map 1:a:0 \
 -map_metadata:g 1:g \
 -vcodec libx264 -pix_fmt yuv420p -preset $QUAL -r $FPS -g $(($FPS * 2)) -b:v $VBR \
 -acodec libmp3lame -ar 44100 -threads 4 -qscale:v 3 -b:a 320000 -bufsize 512k \
 -report -loglevel fatal -nostats \
 -f flv "$YOUTUBE_URL/$KEY"



The stream works fine, however after a seemingly random period of time, I get a conversion failed error


first after 64 hours of streaming
second after 12 hours of streaming
third after 8 hours of streaming


The server itsef is fine cpu and memory usage are extremly low and there are no spikes


from what i can guess the error has something to do with libx264 judging by the error logs, although I do not really know. After some guidance on what to do try next. Here is the tail end of the ffmpeg log report


[libx264 @ 0xaaab23ad3e30] frame=1351975 QP=16.89 NAL=2 Slice:P Poc:14 I:6461 P:1224 SKIP:475 size=26602 bytes
av_interleaved_write_frame(): Broken pipe
No more output streams to write to, finishing.
[libx264 @ 0xaaab23ad3e30] frame=1351976 QP=17.90 NAL=2 Slice:B Poc:10 I:2395 P:3322 SKIP:2443 size=20127 bytes
[libx264 @ 0xaaab23ad3e30] frame=1351977 QP=17.89 NAL=0 Slice:B Poc:12 I:1848 P:3235 SKIP:3077 size=17313 bytes
[libx264 @ 0xaaab23ad3e30] frame=1351978 QP=15.65 NAL=2 Slice:P Poc:22 I:6458 P:1171 SKIP:531 size=26073 bytes
[libx264 @ 0xaaab23ad3e30] frame=1351979 QP=17.19 NAL=2 Slice:B Poc:18 I:2766 P:3514 SKIP:1880 size=19633 bytes
[libx264 @ 0xaaab23ad3e30] frame=1351980 QP=18.35 NAL=0 Slice:B Poc:16 I:1233 P:2876 SKIP:4051 size=11769 bytes
[libx264 @ 0xaaab23ad3e30] frame=1351981 QP=17.28 NAL=0 Slice:B Poc:20 I:822 P:3197 SKIP:4141 size=10699 bytes
[libx264 @ 0xaaab23ad3e30] frame=1351982 QP=17.08 NAL=2 Slice:P Poc:30 I:6351 P:1443 SKIP:366 size=29120 bytes
[libx264 @ 0xaaab23ad3e30] frame=1351983 QP=17.29 NAL=2 Slice:B Poc:26 I:2060 P:4211 SKIP:1889 size=18465 bytes
[libx264 @ 0xaaab23ad3e30] frame=1351984 QP=18.00 NAL=0 Slice:B Poc:24 I:472 P:3225 SKIP:4463 size=8893 bytes
[libx264 @ 0xaaab23ad3e30] frame=1351985 QP=17.98 NAL=0 Slice:B Poc:28 I:1339 P:3681 SKIP:3140 size=13378 bytes
[libx264 @ 0xaaab23ad3e30] frame=1351986 QP=15.57 NAL=2 Slice:P Poc:32 I:6270 P:1584 SKIP:306 size=33703 bytes
av_interleaved_write_frame(): Broken pipe
[libmp3lame @ 0xaaab23ac06f0] Trying to remove 47 more samples than there are in the queue
[flv @ 0xaaab23ad2ff0] Failed to update header with correct duration.
[flv @ 0xaaab23ad2ff0] Failed to update header with correct filesize.
Error writing trailer of rtmp://a.rtmp.youtube.com/live2/****: Broken pipe
frame=1351987 fps= 24 q=22.0 Lsize=37296521kB time=15:38:52.22 bitrate=5423.8kbits/s dup=0 drop=56332 speed= 1x 
video:35035969kB audio:2200479kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.161329%
Input file #0 (movie=filename=/mnt/disk1/test/****.mp4:loop=0, setpts=N/(FRAME_RATE*TB)):
 Input stream #0:0 (video): 1408319 packets read (4380435417600 bytes); 1408319 frames decoded; 
 Total: 1408319 packets (4380435417600 bytes) demuxed
Input file #1 (https://****.mp3):
 Input stream #1:0 (audio): 2156470 packets read (901316441 bytes); 2156470 frames decoded (2484253440 samples); 
 Total: 2156470 packets (901316441 bytes) demuxed
Output file #0 (rtmp://a.rtmp.youtube.com/live2/****):
 Output stream #0:0 (video): 1351987 frames encoded; 1351976 packets muxed (35876832486 bytes); 
 Output stream #0:1 (audio): 2156470 frames encoded (2484253440 samples); 2156469 packets muxed (2253290057 bytes); 
 Total: 3508445 packets (38130122543 bytes) muxed
3564789 frames successfully decoded, 0 decoding errors
[AVIOContext @ 0xaaab23ac4ef0] Statistics: 0 seeks, 3823215 writeouts
[rtmp @ 0xaaab23dab6a0] UnPublishing stream...
[rtmp @ 0xaaab23dab6a0] Deleting stream...
[libx264 @ 0xaaab23ad3e30] frame I:53166 Avg QP:16.31 size: 39514
[libx264 @ 0xaaab23ad3e30] frame P:500115 Avg QP:17.79 size: 32831
[libx264 @ 0xaaab23ad3e30] frame B:798706 Avg QP:19.67 size: 21732
[libx264 @ 0xaaab23ad3e30] consecutive B-frames: 13.9% 15.2% 20.2% 50.7%
[libx264 @ 0xaaab23ad3e30] mb I I16..4: 45.9% 44.7% 9.4%
[libx264 @ 0xaaab23ad3e30] mb P I16..4: 40.6% 37.1% 2.2% P16..4: 16.5% 0.0% 0.0% 0.0% 0.0% skip: 3.7%
[libx264 @ 0xaaab23ad3e30] mb B I16..4: 16.3% 16.2% 0.2% B16..8: 25.0% 0.0% 0.0% direct:19.7% skip:22.5% L0:48.7% L1:48.4% BI: 2.9%
[libx264 @ 0xaaab23ad3e30] 8x8 transform intra:47.5% inter:31.9%
[libx264 @ 0xaaab23ad3e30] coded y,uvDC,uvAC intra: 15.8% 78.7% 25.0% inter: 2.0% 60.3% 1.8%
[libx264 @ 0xaaab23ad3e30] i16 v,h,dc,p: 50% 20% 9% 21%
[libx264 @ 0xaaab23ad3e30] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 19% 16% 31% 4% 7% 5% 5% 6% 6%
[libx264 @ 0xaaab23ad3e30] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 36% 20% 33% 2% 2% 2% 1% 2% 2%
[libx264 @ 0xaaab23ad3e30] i8c dc,h,v,p: 29% 18% 18% 35%
[libx264 @ 0xaaab23ad3e30] Weighted P-Frames: Y:3.0% UV:2.2%
[libx264 @ 0xaaab23ad3e30] kb/s:5095.01
[AVIOContext @ 0xaaab22460eb0] Statistics: 42281852862 bytes read, 2731 seeks
[AVIOContext @ 0xaaab23ac4de0] Statistics: 901390389 bytes read, 0 seeks
Conversion failed!



-
FFPlay : How to manually select video quality during playing the mpd stream ?
19 août 2023, par Brian_wuI used ffplay to play mpd stream and successed,


Here the MPD file :


<?xml version="1.0" encoding="utf-8"?>
<mpd xmlns="urn:mpeg:dash:schema:mpd:2011" profiles="urn:mpeg:dash:profile:isoff-live:2011" type="static" mediapresentationduration="PT1M8.7S" maxsegmentduration="PT5.0S" minbuffertime="PT12.5S">
 <programinformation>
 </programinformation>
 <servicedescription>
 </servicedescription>
 <period start="PT0.0S">
 <adaptationset contenttype="video" startwithsap="1" segmentalignment="true" bitstreamswitching="true" framerate="24000/1001" maxwidth="1280" maxheight="720" par="16:9">
 <representation mimetype="video/mp4" codecs="avc1.4d401f" bandwidth="10237" width="480" height="270" sar="1:1">
 <segmenttemplate timescale="24000" initialization="init-stream$RepresentationID$.m4s" media="chunk-stream$RepresentationID$-$Number%05d$.m4s" startnumber="1">
 <segmenttimeline>
 <s t="0" d="150150" r="9"></s>
 <s d="149149"></s>
 </segmenttimeline>
 </segmenttemplate>
 </representation>
 <representation mimetype="video/mp4" codecs="avc1.4d401f" bandwidth="60882" width="1280" height="720" sar="1:1">
 <segmenttemplate timescale="24000" initialization="init-stream$RepresentationID$.m4s" media="chunk-stream$RepresentationID$-$Number%05d$.m4s" startnumber="1">
 <segmenttimeline>
 <s t="0" d="150150" r="9"></s>
 <s d="149149"></s>
 </segmenttimeline>
 </segmenttemplate>
 </representation>
 </adaptationset>
 <adaptationset contenttype="audio" startwithsap="1" segmentalignment="true" bitstreamswitching="true" lang="und">
 <representation mimetype="audio/mp4" codecs="mp4a.40.2" bandwidth="128000" audiosamplingrate="32000">
 <audiochannelconfiguration schemeiduri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"></audiochannelconfiguration>
 <segmenttemplate timescale="32000" initialization="init-stream$RepresentationID$.m4s" media="chunk-stream$RepresentationID$-$Number%05d$.m4s" startnumber="1">
 <segmenttimeline>
 <s t="0" d="159744"></s>
 <s d="160768" r="11"></s>
 <s d="111915"></s>
 </segmenttimeline>
 </segmenttemplate>
 </representation>
 <representation mimetype="audio/mp4" codecs="mp4a.40.2" bandwidth="128000" audiosamplingrate="44100">
 <audiochannelconfiguration schemeiduri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"></audiochannelconfiguration>
 <segmenttemplate timescale="44100" initialization="init-stream$RepresentationID$.m4s" media="chunk-stream$RepresentationID$-$Number%05d$.m4s" startnumber="1">
 <segmenttimeline>
 <s t="0" d="220160"></s>
 <s d="221184" r="11"></s>
 <s d="158713"></s>
 </segmenttimeline>
 </segmenttemplate>
 </representation>
 </adaptationset>
</period>
</mpd>



this dash stream contains 2 vindeos(480P and 720P), and 2 audios.The videos always starts low quality(480P), I want to change the video resolution to the high quality(720P) during playing process, what should i do ?


-
ffmpeg decode gif got an error : “[gif @ 0000017ea4d9d1c0] cannot decode frame without keyframe”
23 mai 2022, par JeycriI want to decode gif when pts is greater than a certain period of time.


This is my code :


for(;;){
 ret = av_read_frame(in_ctx, pkt);

 if (ret != 0) {
 printf("av_read_frame errorcode %d \n", ret);
 break;
 }
 
 if (pkt->pts < av_rescale_q(3.0*AV_TIME_BASE, AV_TIME_BASE_Q, st->time_base)) {
 av_packet_unref(pkt); 
 continue;
 }

 if(pkt->stream_index == video_index){
 if (pkt) {
 ret = avcodec_send_packet(codec_ctx, pkt);
 if (ret < 0 && ret != AVERROR_EOF) break;
 while (avcodec_receive_frame(codec_ctx, frame) >= 0) {
 //do something
 }
 }
 }
}



Is there any way to realize this function ?


FFmpeg version is 4.3.3.