
Recherche avancée
Autres articles (56)
-
Amélioration de la version de base
13 septembre 2013Jolie sélection multiple
Le plugin Chosen permet d’améliorer l’ergonomie des champs de sélection multiple. Voir les deux images suivantes pour comparer.
Il suffit pour cela d’activer le plugin Chosen (Configuration générale du site > Gestion des plugins), puis de configurer le plugin (Les squelettes > Chosen) en activant l’utilisation de Chosen dans le site public et en spécifiant les éléments de formulaires à améliorer, par exemple select[multiple] pour les listes à sélection multiple (...) -
Le plugin : Podcasts.
14 juillet 2010, parLe problème du podcasting est à nouveau un problème révélateur de la normalisation des transports de données sur Internet.
Deux formats intéressants existent : Celui développé par Apple, très axé sur l’utilisation d’iTunes dont la SPEC est ici ; Le format "Media RSS Module" qui est plus "libre" notamment soutenu par Yahoo et le logiciel Miro ;
Types de fichiers supportés dans les flux
Le format d’Apple n’autorise que les formats suivants dans ses flux : .mp3 audio/mpeg .m4a audio/x-m4a .mp4 (...) -
Déploiements possibles
31 janvier 2010, parDeux types de déploiements sont envisageable dépendant de deux aspects : La méthode d’installation envisagée (en standalone ou en ferme) ; Le nombre d’encodages journaliers et la fréquentation envisagés ;
L’encodage de vidéos est un processus lourd consommant énormément de ressources système (CPU et RAM), il est nécessaire de prendre tout cela en considération. Ce système n’est donc possible que sur un ou plusieurs serveurs dédiés.
Version mono serveur
La version mono serveur consiste à n’utiliser qu’une (...)
Sur d’autres sites (7084)
-
play video with secure link in laravel ffmpeg
1er mars 2023, par abc abcI convert my video file to m3u8 with ffmpeg and upload in download host.
I have no problem when I want to display Blade in Laravel without a secure link.


Now, I am asking my friends to help me display those videos using a safe link, something like this link :




I did it myself without a secure link and got the output.
These are the routes I defined :


Route::get('/video/secret/{key}', function ($key) {
 return Storage::disk('secrets')->download('29/' . $key);
})->name('video.key');
 
Route::get('/video/{playlist}', function ($playlist) {
 return FFMpeg::dynamicHLSPlaylist()
 ->fromDisk('static')
 ->open("stream/video/29/{$playlist}")
 ->setKeyUrlResolver(function ($key) {
 return route('video.key', ['key' => $key]);
 })
 ->setMediaUrlResolver(function ($mediaFilename) {
 return Storage::disk('static')->url("stream/video/29/{$mediaFilename}");
 })
 ->setPlaylistUrlResolver(function ($playlistFilename) {
 return route('video.playlist', ['playlist' => $playlistFilename]);
 });
})->name('video.playlist');



This is the source of the video :


<code class="echappe-js"><script src="https://cdn.rawgit.com/video-dev/hls.js/18bb552/dist/hls.min.js"></script>

<script>&#xA; document.addEventListener(&#x27;DOMContentLoaded&#x27;, () => {&#xA; const source = "{{ route(&#x27;video.playlist&#x27;, [&#x27;playlist&#x27; => &#x27;29.m3u8&#x27;]) }}";&#xA; const video = document.querySelector(&#x27;#video&#x27;);&#xA; &#xA; const defaultOptions = {};&#xA; &#xA; if (!Hls.isSupported()) {&#xA; video.src = source;&#xA; var player = new Plyr(video, defaultOptions);&#xA; } else {&#xA; // For more Hls.js options, see https://github.com/dailymotion/hls.js&#xA; const hls = new Hls();&#xA; hls.loadSource(source);&#xA; &#xA; // From the m3u8 playlist, hls parses the manifest and returns&#xA; // all available video qualities. This is important, in this approach,&#xA; // we will have one source on the Plyr player.&#xA; hls.on(Hls.Events.MANIFEST_PARSED, function (event, data) {&#xA; &#xA; // Transform available levels into an array of integers (height values).&#xA; const availableQualities = hls.levels.map((l) => l.height)&#xA; availableQualities.unshift(0) //prepend 0 to quality array&#xA; &#xA; // Add new qualities to option&#xA; defaultOptions.quality = {&#xA; default: 0, //Default - AUTO&#xA; options: availableQualities,&#xA; forced: true,&#xA; onChange: (e) => updateQuality(e),&#xA; }&#xA; // Add Auto Label&#xA; defaultOptions.i18n = {&#xA; qualityLabel: {&#xA; 0: &#x27;Auto&#x27;,&#xA; },&#xA; }&#xA; &#xA; hls.on(Hls.Events.LEVEL_SWITCHED, function (event, data) {&#xA; var span = document.querySelector(".plyr__menu__container [data-plyr=&#x27;quality&#x27;][value=&#x27;0&#x27;] span")&#xA; if (hls.autoLevelEnabled) {&#xA; span.innerHTML = `AUTO (${hls.levels[data.level].height}p)`&#xA; } else {&#xA; span.innerHTML = `AUTO`&#xA; }&#xA; })&#xA; &#xA; // Initialize new Plyr player with quality options&#xA; var player = new Plyr(video, defaultOptions);&#xA; });&#xA; &#xA; hls.attachMedia(video);&#xA; window.hls = hls;&#xA; }&#xA; &#xA; function updateQuality(newQuality) {&#xA; if (newQuality === 0) {&#xA; window.hls.currentLevel = -1; //Enable AUTO quality if option.value = 0&#xA; } else {&#xA; window.hls.levels.forEach((level, levelIndex) => {&#xA; if (level.height === newQuality) {&#xA; console.log("Found quality match with " &#x2B; newQuality);&#xA; window.hls.currentLevel = levelIndex;&#xA; }&#xA; });&#xA; }&#xA; }&#xA; });&#xA; </script>



But these work without secure links and signatures.
I want to create a secure link using token, signature and expires for each part of the video.
It means to close the direct access on the download host and to access the video files only through Laravel.
Thank you if anyone knows how to help.


Something similar to the following link to display the video :




-
Unable to link against FFmpeg libaries
2 mars 2023, par CodyI tried to build this, but always got link-time error.



#include <libavutil></libavutil>log.h> 
int main(int argc, char *argv[])
{
 ::av_log_set_flags(AV_LOG_SKIP_REPEATED);
 return 0;
}




My distro is Debian GNU/Linux 8 (jessie). The FFmpeg was built by myself, and the configure command was...



$ ./configure --prefix=/usr/local --disable-static --enable-shared \
> --extra-ldflags='-Wl,-rpath=/usr/local/lib'




The link-error is as follows.



$ g++ foo.cpp -D__STDC_CONSTANT_MACROS -Wall \
> -Wl,-rpath=/usr/local/lib \
> $(pkg-config --cflags --libs libavutil)
/tmp/ccKzgEFb.o: In function `main':
foo.cpp:(.text+0x17): undefined reference to `av_log_set_flags(int)'
collect2: error: ld returned 1 exit status




where the output of
pkg-config
is...


$ pkg-config --cflags --libs libavutil
-I/usr/local/include -L/usr/local/lib -lavutil




The
objdump
shows that the shared object libavutil.so does haveav_log_set_flogs
inside.


$ objdump --dynamic-syms /usr/local/lib/libavutil.so | grep 'av_log_set_flags'
000260f0 g DF .text 0000000a LIBAVUTIL_54 av_log_set_flags




Please note that the
g++
command used to build the above application had a linker option-Wl,-rpath=/usr/local/lib
, though it still doesn't work. Also, I've tried to monitor withinotifywait
if the other version provided by the distro were called. They were not, and the one being opened during execution ofg++
was /usr/local/lib/libavutil.so.


Summary :



- 

-
/usr/local/lib/libavutil.so does have the symbol.
-
-rpath
was used to force to link against the shared library. -
Why link-time error ? T_T









Any suggestion or information would be highly appreciated ! Thanks !



REEDIT :
ffplay
works fine andldd
shows it use /usr/local/lib/libavutil.so. So, the libraries seems not broken, and the problem becomes how to build my own codes to use the libraries.

-
-
Problems about c# uses the VideoWriter class in dynamic link libraries(c++ and opencv) [closed]
11 mai 2023, par Paul_Dxerror : (-5:Bad argument) CAP_IMAGES : can't find starting number (in the name of file) : in function 'cv::icvExtractPattern'.


I used c++ and opencv to implement the video recording function, and then generated the code to dynamically link libraries for c# to call.But when I run the code, I get an error.


I have a general understanding that opencv calls the ffmpeg package(because of the videowriter class), so I import opencv_videoio_ffmpeg470_64.dll into the project.But the problem was not solved.