
Recherche avancée
Médias (1)
-
Richard Stallman et le logiciel libre
19 octobre 2011, par
Mis à jour : Mai 2013
Langue : français
Type : Texte
Autres articles (107)
-
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 (...) -
Gestion de la ferme
2 mars 2010, parLa ferme est gérée dans son ensemble par des "super admins".
Certains réglages peuvent être fais afin de réguler les besoins des différents canaux.
Dans un premier temps il utilise le plugin "Gestion de mutualisation" -
MediaSPIP Player : problèmes potentiels
22 février 2011, parLe lecteur ne fonctionne pas sur Internet Explorer
Sur Internet Explorer (8 et 7 au moins), le plugin utilise le lecteur Flash flowplayer pour lire vidéos et son. Si le lecteur ne semble pas fonctionner, cela peut venir de la configuration du mod_deflate d’Apache.
Si dans la configuration de ce module Apache vous avez une ligne qui ressemble à la suivante, essayez de la supprimer ou de la commenter pour voir si le lecteur fonctionne correctement : /** * GeSHi (C) 2004 - 2007 Nigel McNie, (...)
Sur d’autres sites (9723)
-
How to automate ffmpeg to split and merge parts of video, and keep the audio in sync ?
9 décembre 2024, par TreeI have a Python script that automates trimming a large video (2 hours) into smaller segments and then concatenating them without re-encoding, to keep the process fast. The script runs these ffmpeg commands :


import subprocess

# Extract chunks
segments = [(0, 300), (300, 600), (600, 900)] # example segments in seconds
for i, (start, length) in enumerate(segments):
 subprocess.run([
 "ffmpeg", "-i", "input.mp4", "-ss", str(start), "-t", str(length),
 "-c", "copy", "-reset_timestamps", "1", "-y", f"chunk_{i}.mp4"
 ], check=True)

# Create concat list
with open("list.txt", "w") as f:
 for i in range(len(segments)):
 f.write(f"file 'chunk_{i}.mp4'\n")

# Concatenate
subprocess.run([
 "ffmpeg", "-f", "concat", "-safe", "0",
 "-i", "list.txt", "-c", "copy", "-y", "merged_output.mp4"
], check=True)



All chunks come from the same source video, with identical codecs, resolution, and bitrate. Despite this, the final merged_output.mp4 sometimes has audio out of sync—especially after the first chunk.


I’ve tried using -ss before -i to cut on keyframes, but the issue persists.


Question : How can I ensure correct A/V sync in the final concatenated video when programmatically segmenting and merging via ffmpeg without fully re-encoding ? Is there a way to adjust the ffmpeg commands or process to avoid audio desynchronization ?


-
How to sync network audio with a different network video and play it with chewie
26 mars 2023, par Rudra SharmaI am trying to stream a reddit videos on my app. For that reason I am using Reddit API but it is only giving the video url like 'redd.it/mpym0z9q8opa1/DASH_1080.mp4 ?source=fallback' with no audio but after some research I found out that we can get audio url by editing video url 'redd.it/mpym0z9q8opa1/DASH_audio.mp4 ?source=fallback'.


Now I have both audio and video url with me how can I sync them on network and stream them on my app using chewie package (video player).


This my code so far


import 'dart:async';
import 'dart:convert';
import 'package:http/http.dart' as http;
import 'package:flutter/material.dart';
import 'package:video_player/video_player.dart';
import 'package:chewie/chewie.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
 @override
 Widget build(BuildContext context) {
 return MaterialApp(
 title: 'Reddit Videos',
 theme: ThemeData(
 primarySwatch: Colors.blue,
 visualDensity: VisualDensity.adaptivePlatformDensity,
 ),
 home: VideoPlayerScreen(),
 );
 }
}

class VideoPlayerScreen extends StatefulWidget {
 @override
 _VideoPlayerScreenState createState() => _VideoPlayerScreenState();
}

class _VideoPlayerScreenState extends State<videoplayerscreen> {
 final List<string> _videoUrls = [];

 @override
 void initState() {
 super.initState();
 _loadVideos();
 }

 Future<void> _loadVideos() async {
 try {
 final videoUrls =
 await RedditApi.getVideoUrlsFromSubreddit('aww');

 setState(() {
 _videoUrls.addAll(videoUrls);
 });
 } catch (e) {
 print(e);
 }
 }

 @override
 Widget build(BuildContext context) {
 return Scaffold(
 appBar: AppBar(
 title: Text('Reddit Videos'),
 ),
 body: SafeArea(
 child: _videoUrls.isNotEmpty
 ? _buildVideosList()
 : Center(child: CircularProgressIndicator()),
 ),
 );
 }

 Widget _buildVideosList() {
 return ListView.builder(
 itemCount: _videoUrls.length,
 itemBuilder: (context, index) {
 return Padding(
 padding: const EdgeInsets.all(8.0),
 child: Chewie(
 controller: ChewieController(
 videoPlayerController: VideoPlayerController.network(
 _videoUrls[index],
 ),
 aspectRatio: 9 / 16,
 autoPlay: true,
 looping: true,
 autoInitialize: true,
 ),
 ),
 );
 },
 );
 }
}

class RedditApi {
 static const String BASE_URL = 'https://www.reddit.com';
 static const String CLIENT_ID = 'id';
 static const String CLIENT_SECRET = 'secret';

 static Future> getVideoUrlsFromSubreddit(
 String subredditName) async {
 final response = await http.get(
 Uri.parse('$BASE_URL/r/$subredditName/top.json?limit=10'),
 headers: {'Authorization': 'Client-ID $CLIENT_ID'});

 if (response.statusCode == 200) {
 final jsonData = jsonDecode(response.body);
 final postsData = jsonData['data']['children'];

 final videoUrls = <string>[];

 for (var postData in postsData) {
 if (postData['data']['is_video']) {
 videoUrls.add(postData['data']['media']['reddit_video']
 ['fallback_url']);
 }
 }

 return videoUrls;
 } else {
 throw Exception("Failed to load videos from subreddit");
 }
 }
}
</string></void></string></videoplayerscreen>


I think the code is self explainatory about what I am trying to achieve (Trying to make a client for reddit).


-
Rebuilding Website for sharing videos
22 novembre 2015, par Léo Le GallSome friends and I run a sport forum with a decent user base. A lot of users wanted the ability to share video clips of their tricks. We didn’t really think anyone would use a video website that we made, so I built a really simple one just to see if the users would really use it. I hosted the video site on a $10 VPS, and it got blown away. The site was literally garbage, it was not visually appealing and the performance was just sad. Just as expected really, since this was just a test site. Since our test project was a success, we want to create a new and more polished site for the videos.
The website is really simple, and probably not optimized in any way at the moment. I will try to explain in details what the website does. The user uploads some video files in format X, the website combines them and converts (using ffmpeg) the final video to mp4(so it can be served with a html5 video player). The users gets a link (example.com/randomvideo) where he can see the video through a html5 player serving the mp4 file(just default html5, nothing fancy). The videos only contains highlights, and the final video is always under 1 minute, most are around 30 seconds.
Currently everything happens on the same server, both the video processing and the video serving. I can try to show how it works :
- User uploads some videos
- Servers stores the videos in a new random folder
- Combine videos and convert to mp4 (ffmpeg)
- Move final video(random name) to directory containing processed videos
- Store the name of the video file in the database (for website to serve it)
- Delete directory used to process the videos
I want to rebuild the website’s architecture to make it able to scale and handle heavy load. I have never done this before and I am currently making a plan how to do this. My plan is at the moment :
- Seperate servers for processing videos and viewing videos (all VPS in the start)
- Utilize content delivery network for serving static files
- Utilize load balancers both for servers proccesing and serving
I don’t really know what I should do with database(s). Can I do with one database or should use more ? They do not need to store sensitive information, since the auth in done through an API. They only need store information about the videos. I have experience with postgresql, mysql and redis, but I am not limited to those. What would you recommend in terms of scaleability ?
I will appriciate all the feedback I can get regarding my plan and what to do about databases. I know this might be a bit vague, so please ask me if I have forgotten anything imporant. Thanks for reading.