
Recherche avancée
Autres articles (71)
-
MediaSPIP version 0.1 Beta
16 avril 2011, parMediaSPIP 0.1 beta est la première version de MediaSPIP décrétée comme "utilisable".
Le fichier zip ici présent contient uniquement les sources de MediaSPIP en version standalone.
Pour avoir une installation fonctionnelle, il est nécessaire d’installer manuellement l’ensemble des dépendances logicielles sur le serveur.
Si vous souhaitez utiliser cette archive pour une installation en mode ferme, il vous faudra également procéder à d’autres modifications (...) -
Personnaliser en ajoutant son logo, sa bannière ou son image de fond
5 septembre 2013, parCertains 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 ;
-
Participer à sa traduction
10 avril 2011Vous pouvez nous aider à améliorer les locutions utilisées dans le logiciel ou à traduire celui-ci dans n’importe qu’elle nouvelle langue permettant sa diffusion à de nouvelles communautés linguistiques.
Pour ce faire, on utilise l’interface de traduction de SPIP où l’ensemble des modules de langue de MediaSPIP sont à disposition. ll vous suffit de vous inscrire sur la liste de discussion des traducteurs pour demander plus d’informations.
Actuellement MediaSPIP n’est disponible qu’en français et (...)
Sur d’autres sites (10004)
-
Rails 5 with Carrierwave and S3 - creating multiple video formats for DASH streaming works but mpd file breaks
22 novembre 2019, par Milindwhat I am doing -
i have aRails 5
app for video streaming(DASH MPEG) that usesFFMPEG
to get encoded stream videos by converting any single video into multiple videos of multiple bit rates/size and primarily also MPD FILE that can be played easily on html video player, which i have already tested by manually running the ffmpeg scripts on the console that generates all the files.However, I want to automate this process and hencecarrierwave
comes into the pictures.
Here, i usecarrierwave
to generate different versions(size/bitrate) of videos(mp4/webm) to upload to s3 but during running the version, where all the versions are successfully created in tmp folder, only the last version(mpd) that needs to create .mpd file, carrierwave creates a mp4 video file and just replaces the extension instead of actually creating the mpd file.So in the
aws s3(screenshot added below)
, i can see my all versions andmpd
file , but thatmpd
file which must be xml file is actually amp4
video file or uploaded version file itself.
I have also tried to create new file during the process, but it never works.
Has some one encountered this problem ?any help will be greatly appreciated ?
Ny code snippets below - model,uploader,output of script on the console during upload, s3 screenshot
##### models/video.rb ##########
mount_uploader :video, VideoUploader
####### uploaders/video_uploader.rb #########
class VideoUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
include CarrierWave::Video
include CarrierWave::Video::Thumbnailer
include ::CarrierWave::Backgrounder::Delay
####### for streaming ..first get the audio and then convert the input video into multiple bitrates/scale #######
###first get audio and then get all different versions of same video
version :video_audio do
process :get_audio
def get_audio
`ffmpeg -y -i "#{file.path}" -c:a aac -ac 2 -ab 128k -vn video_audio.mp4`
end
def full_filename(for_file)
"video_audio.mp4"
end
def filename
"video_audio.mp4"
end
end
####### similar to the above i have various version like ...#########
version :video_1080 do...end
version :video_720 do... end
version :video_480 do ...end
...and so on..and all these versions are successfully created and uploaded to s3, however..in next version ...show it also creates a video file whereas i need a simple mpd file ONLY.
###this is where even after everything works, in S3, i can see a video file of version mpd and not actual mpd file
version :mpd do
process :get_manifest
###here in the command below, the video.mpd file is successfully obtained but its uploaded as video.mpd file of added/uploaded video file and not a new mpd file
###tried with ffmpeg -f webm_dash_manifest -i too, but s3 still shows a mp4 file
`MP4Box -dash 1000 -rap -frag-rap -profile onDemand -out video.mpd video_1080.mp4 video_720.mp4 video_480.mp4 video_360.mp4 video_240.mp4 video_audio.mp4 `
end
end
######### sidekiq console output - successful mpd is generated ################
DASH-ing files - single segment
Subsegment duration 1.000 - Fragment duration: 1.000 secs
Splitting segments and fragments at GOP boundaries
DASHing file video_1080.mp4
DASHing file video_720.mp4
DASHing file video_480.mp4
DASHing file video_360.mp4
DASHing file video_240.mp4
DASHing file video_audio.mp4
\[DASH\] Generating MPD at time 2019-11-22T00:01:59.872Z
mpd_1mb.mp4
mpd_video.mpdthis is what the uploaded files looks on s3, notice the video.mpd, its a mp4 video file just like others which should have been a simple mpd file of not more than 2kb.
Is there something that I am missing ?
Can Carrierwave do this or is it not made for this ?
Do I have to write a callback and then programmatically upload files to s3, if carrierwave is not helping in this regard ?Kindly provide any suggestion or useful advice so that I can move ahead.
-
MPEG DASH SRD : How to properly re-assemble multiple tiles into a single tile [closed]
21 juin 2024, par ATrashInTheWorldI am trying to build a web player that is able to stream MPEG DASH, but with SRD information in the manifest. I have a problem at the "gluing" of the tiles part.


How the data is set :


I have a video of a resolution of XxY, which I've divided in tiles of NxM, meaning that I now have the NxM videos of the same duration as the original one, but which is reduced to a smaller resolution, a portion from the original (seeing only the upper left corner for example).


I have fragmented those tiles for the MPEG DASH streaming format, meaning an init.mp4 and the m4s fragments for each tile. To note that I have the tiles in multiple bitrate, in order to imitate some adaptive streaming.


The "gluing" part :


The gluing part consists of gluing the tile togheter into 1 big tile, aka the original video. The SRD information allows me to know where each tile should be position to reconstruct the original video shape. Once I have the spatial information from the manifest, I use this command to glue the tiles togheter :


ffmpeg.exe -i v1 -i v2 -i v3 -i .v4 -i v5 -i v6 -i v7 -i v8 -i v9 -filter_complex "[0:v][1:v][2:v][3:v][4:v][5:v][6:v][7:v][8:v]xstack=inputs=9:layout=0_0|w0_0|w0+w1_0|0_h0|w3_h0|w3+w4_h0|0_h0+h3|w6_h0+h3|w6+w7_h0+h3" out.mp4



The command above allows me to "glue" together tiles from a grid of 3x3 tiles, into 1 big tile.


The web streaming method :


To stream, I use JavaScript MediaSource, and I am appending the fragments to the buffer continuously, like this reference


The issue :


The issue is that the FFMPEG gluing command only works on proper mp4 videos, not with fragments (m4s). I cannot glue the wanted m4s tiles back into a bigger one. However, the JavaScript player only takes fragments, meaning that I cannot just send continuous mp4 video.


I have tried many things with fragments and full videos, but the only solution I found for this chicken-egg problem is to :


- 

- Create video clips with smaller duration for each tile, at each bitrate.
- Glue the desired video clips tiles together with the FFMpeg command.
- Convert that glued video in one big fragment, and send it.








However, I feel that it is not a clean method and I fear that I am missing something.
Is there a better solution that I am not aware of ?
Any idea suggestions are welcome.


Thank you for your time.


-
How to concatenate multiple init segments and chunks from the DASH video stream ?
17 novembre 2022, par UmakantI'have written a dash player in python that receives chunks from the DASH server using adaptive bitrate algorithm. Once entire video streaming is over, I need to concatenate all following received segments into one single mp4 file.


root@cap31:~/don# ls
chunk0-00001.m4s chunk2-00015.m4s chunk2-00035.m4s chunk2-00055.m4s chunk2-00075.m4s chunk3-00010.m4s chunk3-00030.m4s chunk3-00050.m4s chunk3-00070.m4s
chunk0-index.m4s chunk2-00017.m4s chunk2-00037.m4s chunk2-00057.m4s chunk2-00077.m4s chunk3-00012.m4s chunk3-00032.m4s chunk3-00052.m4s chunk3-00072.m4s
chunk1-00002.m4s chunk2-00019.m4s chunk2-00039.m4s chunk2-00059.m4s chunk2-00079.m4s chunk3-00014.m4s chunk3-00034.m4s chunk3-00054.m4s chunk3-00074.m4s
chunk1-index.m4s chunk2-00021.m4s chunk2-00041.m4s chunk2-00061.m4s chunk2-00081.m4s chunk3-00016.m4s chunk3-00036.m4s chunk3-00056.m4s chunk3-00076.m4s
chunk2-00003.m4s chunk2-00023.m4s chunk2-00043.m4s chunk2-00063.m4s chunk2-00083.m4s chunk3-00018.m4s chunk3-00038.m4s chunk3-00058.m4s chunk3-00078.m4s
chunk2-00005.m4s chunk2-00025.m4s chunk2-00045.m4s chunk2-00065.m4s chunk2-00085.m4s chunk3-00020.m4s chunk3-00040.m4s chunk3-00060.m4s chunk3-00080.m4s
chunk2-00007.m4s chunk2-00027.m4s chunk2-00047.m4s chunk2-00067.m4s chunk2-index.m4s chunk3-00022.m4s chunk3-00042.m4s chunk3-00062.m4s chunk3-00082.m4s
chunk2-00009.m4s chunk2-00029.m4s chunk2-00049.m4s chunk2-00069.m4s chunk3-00004.m4s chunk3-00024.m4s chunk3-00044.m4s chunk3-00064.m4s chunk3-00084.m4s
chunk2-00011.m4s chunk2-00031.m4s chunk2-00051.m4s chunk2-00071.m4s chunk3-00006.m4s chunk3-00026.m4s chunk3-00046.m4s chunk3-00066.m4s chunk3-index.m4s
chunk2-00013.m4s chunk2-00033.m4s chunk2-00053.m4s chunk2-00073.m4s chunk3-00008.m4s chunk3-00028.m4s chunk3-00048.m4s chunk3-00068.m4s



I tried all the solutions mentioned on following links :
https://trac.ffmpeg.org/wiki/Concatenate
ffmpeg converting m4s to mp4


Most common solution was to append the
cat
files in mp4 :

for x in *index* *-*[0-9]*.m4s; do cat $x >> output.mp4; done



But this video does not play after the second init segment starts rendering resulting into video getting stuck. I believe maybe because in my case, I have multiple init segments pointing to different chunks.


Hence, I'm looking for some way to get the one single mp4 video file by concatanating all these init segments and chunks correctly.