{"id":247,"date":"2014-10-30T11:16:34","date_gmt":"2014-10-30T10:16:34","guid":{"rendered":"http:\/\/www.jjtronics.com\/wordpress\/?p=247"},"modified":"2016-11-09T11:33:46","modified_gmt":"2016-11-09T10:33:46","slug":"ffmpeg-diffuser-un-flux-ip-multicast-en-adaptative-smooth-streaming","status":"publish","type":"post","link":"https:\/\/www.jjtronics.com\/wordpress\/2014\/10\/30\/ffmpeg-diffuser-un-flux-ip-multicast-en-adaptative-smooth-streaming\/","title":{"rendered":"FFMPEG &#8211; Diffuser un flux ip multicast en adaptative smooth streaming"},"content":{"rendered":"<p>Un petit script bien utile pour d\u00e9livrer un flux video multicast en adaptative smooth streaming :<\/p>\n<p><!--more--><\/p>\n<pre class=\"lang:default decode:true \" title=\"ffmpegDiffusionSmoothStreaming\">#!\/bin\/sh\r\n\r\n##D\u00e9lais avant relance suite \u00e0 une d\u00e9connexion entre la machine diffusant le flux adaptative et le serveur recevant les flux\r\nSPAWN_DELAY=15\r\n\r\n##Flux en entr\u00e9e (ici du multicast) avec un cache de 100000\r\nINPUT='udp:\/\/239.0.10.10:7400?fifo_size=100000&amp;overrun_nonfatal=1'\r\n##Serveur de publication des flux Smooth Streaming\r\nPUBPOINT=http:\/\/smooth.publication.tv\/flux\/smooth.isml\r\nFFMPEG_OPTIONS=\"-movflags isml+frag_keyframe -f ismv -threads 0\"\r\n##Param\u00e8tres audio des flux Smooth\r\nAUDIO_OPTIONS=\"-c:a libfaac -ac 2 -b:a 256k\"\r\n##Parametres video des flux Smooth\r\nVIDEO_OPTIONS=\"-c:v libx264 -preset:v superfast -profile:v main -level:v 3.1 -coder:v 0 -g 100 -keyint_min 100 -sc_threshold 0 - r 25\"\r\n##Filtres video\r\nVIDEO_FILTERS=\"-deinterlace\"\r\n\r\n##Mappage des flux\r\nMAP=\"\r\n-map 0:v -b:v:0 800k -s:v:0 640x360\r\n-map 0:v -b:v:1 1100k -s:v:1 1024x576\r\n-map 0:v -b:v:2 1800k -s:v:2 1024x576\r\n-map 0:a:0\"\r\n\r\nwhile true\r\ndo\r\nEVENT_ID=\"$(date +%Y-%m-%d-%H_%M_%S)\"\r\nPUBPOINT_OPTIONS=\"\/Events($EVENT_ID)\/Streams(video)\"\r\n\r\nCMD=\"-y -re -i $INPUT $VIDEO_FILTERS $FFMPEG_OPTIONS $AUDIO_OPTIONS $VIDEO_OPTIONS $MAP ${PUBPOINT}${PUBPOINT_OPTIONS}\"\r\n\r\necho \"\"\r\necho \" **** Command line **** \"\r\necho ffmpeg $CMD\r\necho \"\"\r\n\r\nffmpeg $CMD\r\n\r\necho \"\"\r\necho \" **** Process will be respawned in $SPAWN_DELAY s **** \"\r\necho \" **** press Ctrl-C to abort **** \"\r\necho \"\"\r\n\r\nsleep $SPAWN_DELAY\r\ndone<\/pre>\n<p>&nbsp;<\/p>\n<p><code>\u00a0<\/code><\/p>\n<p>&nbsp;<\/p>\n<p>Et voil\u00e0, vous diffusez un flux en adaptative Smooth Streaming ;)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Un petit script bien utile pour d\u00e9livrer un flux video multicast en adaptative smooth streaming <\/p>\n","protected":false},"author":1,"featured_media":248,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":true,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[114,26,3],"tags":[68,88,83,100,52,50,80,81,76,69,111],"class_list":["post-247","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ffmpeg","category-smooth-streaming","category-video","tag-audio","tag-mac","tag-multicast","tag-o","tag-smooth","tag-smooth-streaming-2","tag-stream","tag-streaming","tag-udp","tag-video-2","tag-x"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/www.jjtronics.com\/wordpress\/wp-content\/uploads\/2014\/10\/Big-Buck-Bunny-Windows-Internet-Explorer_2.png","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p6YUVZ-3Z","jetpack-related-posts":[],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.jjtronics.com\/wordpress\/wp-json\/wp\/v2\/posts\/247","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.jjtronics.com\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.jjtronics.com\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.jjtronics.com\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jjtronics.com\/wordpress\/wp-json\/wp\/v2\/comments?post=247"}],"version-history":[{"count":6,"href":"https:\/\/www.jjtronics.com\/wordpress\/wp-json\/wp\/v2\/posts\/247\/revisions"}],"predecessor-version":[{"id":360,"href":"https:\/\/www.jjtronics.com\/wordpress\/wp-json\/wp\/v2\/posts\/247\/revisions\/360"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.jjtronics.com\/wordpress\/wp-json\/wp\/v2\/media\/248"}],"wp:attachment":[{"href":"https:\/\/www.jjtronics.com\/wordpress\/wp-json\/wp\/v2\/media?parent=247"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jjtronics.com\/wordpress\/wp-json\/wp\/v2\/categories?post=247"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jjtronics.com\/wordpress\/wp-json\/wp\/v2\/tags?post=247"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}