
Recherche avancée
Autres articles (47)
-
Les autorisations surchargées par les plugins
27 avril 2010, parMediaspip core
autoriser_auteur_modifier() afin que les visiteurs soient capables de modifier leurs informations sur la page d’auteurs -
Supporting all media types
13 avril 2011, parUnlike most software and media-sharing platforms, MediaSPIP aims to manage as many different media types as possible. The following are just a few examples from an ever-expanding list of supported formats : images : png, gif, jpg, bmp and more audio : MP3, Ogg, Wav and more video : AVI, MP4, OGV, mpg, mov, wmv and more text, code and other data : OpenOffice, Microsoft Office (Word, PowerPoint, Excel), web (html, CSS), LaTeX, Google Earth and (...)
-
HTML5 audio and video support
13 avril 2011, parMediaSPIP uses HTML5 video and audio tags to play multimedia files, taking advantage of the latest W3C innovations supported by modern browsers.
The MediaSPIP player used has been created specifically for MediaSPIP and can be easily adapted to fit in with a specific theme.
For older browsers the Flowplayer flash fallback is used.
MediaSPIP allows for media playback on major mobile platforms with the above (...)
Sur d’autres sites (10523)
-
Attempting to use recursion, why does my code only download 4 videos and exit ?
16 avril 2024, par Andrew AtwoodI am attempting to download videos from an API that I have access to. This should loop through all of the videos that were returned from the API call, save them to disc, use ffmpeg to verify the meta data from the API (this step is necessary because the API is sometimes returning incorrect information), then save attribution information and continue on if no error. However, my output from the below code is simple this :


[]
Download Done: 0
Saved 'Owner: Anthony �; Owner URL: https://www.pexels.com/@inspiredimages' to animals.txt 
13
0
Download Done: 1
Saved 'Owner: PMA; Owner URL: https://www.pexels.com/@pma-1470250' to animals.txt
35
1
Download Done: 2
Saved 'Owner: Pressmaster; Owner URL: https://www.pexels.com/@pressmaster' to animals.txt 
65
2
Download Done: 3
Saved 'Owner: Ruvim Miksanskiy; Owner URL: https://www.pexels.com/@digitech' to animals.txt 
75
3



No errors, no exit code. Just stops running. I've walked through the process in my head a few times, and I can't figure out why it only gets called 4 times. Would anyone have any insight as to where I could try troubleshooting ?


Code Here :


require("dotenv").config();
const axios = require("axios");
const concat = require("ffmpeg-concat");
const fluent = require("fluent-ffmpeg");
const fs = require("fs");

const PEXELS_API_KEY = process.env.PEXELS_API_KEY;

const SUBTOPIC = "animals";

const URLBase = `https://api.pexels.com/videos/search?query=${SUBTOPIC}&per_page=80&size=medium&orientation=landscape`;
let rVideos;
let videosToConcat = [];
let duration = 0;
let current = 0;

const fetchVideos = async () => {
 const response = await axios.get(URLBase, {
 headers: {
 Authorization: PEXELS_API_KEY,
 },
 });

 return response.data.videos;
};

const writeVideoToDisc = async (videoObj) => {
 let found = false;
 videoObj.forEach(async (file, index) => {
 if (
 found === false &&
 file.quality === "hd" &&
 file.width === 1920 &&
 file.height === 1080 &&
 file.file_type === "video/mp4"
 ) {
 found = true;
 let writer = fs.createWriteStream("raw/" + current + ".mp4");
 let streamResponse = await axios({
 url: rVideos[current].video_files[index].link,
 method: "get",
 responseType: "stream",
 });
 streamResponse.data.pipe(writer);
 writer.on("finish", () => {
 console.log(`Download Done: ${current}`);
 fluent.ffprobe(`./raw/${current}.mp4`, (err, metadata) => {
 if (err) {
 console.error(err);
 } else {
 if (
 metadata.streams[0].width !== 1920 ||
 metadata.streams[0].height !== 1080
 ) {
 fs.unlink(`./raw/${current}.mp4`, (err) => {
 if (err) throw err;
 console.log("File deleted!");
 });
 } else {
 duration += rVideos[current].duration;
 videosToConcat.push(`./raw/${current}.mp4`);
 fs.appendFile(
 `./attribution/${SUBTOPIC}.txt`,
 `Owner: ${rVideos[current].user.name}; Owner URL: ${rVideos[current].user.url} \n`,
 function (err) {
 if (err) throw err;
 console.log(
 `Saved 'Owner: ${rVideos[current].user.name}; Owner URL: ${rVideos[current].user.url}' to ${SUBTOPIC}.txt`
 );
 if (duration < 600) {
 console.log(duration);
 console.log(current);
 current++;
 writeVideoToDisc(rVideos[current].video_files);
 }
 }
 );
 }
 }
 });
 });
 writer.on("error", () => console.error("Error while dowloading video"));
 }
 });
};

const main = async () => {
 rVideos = await fetchVideos();
 console.log(rVideos.length);
 await writeVideoToDisc(rVideos[current].video_files);
 console.log(videosToConcat);
 // concat videos together
};

main();



-
download rtmp live stream video secondly
15 juillet 2024, par Chenguang HeI'm working on a java project to create a rtmp server and download the real-time flv video every second(need to download multiple recording frame secondly instead of download entire recording after live stream finished)
This is my logic, firstly listen to the rtmp channel to write video and audio into file


if(msg instanceof VideoMessage vm){
byteArrayOutputStream = new ByteArrayOutputStream();
 byteArrayOutputStream.writeBytes(vm.getVideoData());
 File file = new File("tmp/video_" + i);
 FileOutputStream fos = new FileOutputStream(file);
 fos.write(byteArrayOutputStream.toByteArray());
 fos.close();

}



Then decode to H264 to get playable flv file


FFmpegFrameGrabber grabber = new FFmpegFrameGrabber(input);
grabber.setFormat("h264");
 grabber.start();
FFmpegFrameRecorder recorder = new FFmpegFrameRecorder(outputFilePath, grabber.getImageWidth(), grabber.getImageHeight());
recorder.start();
while ((frame = grabber.grab()) != null) {
 recorder.record(frame);
 }
grabber.stop();
 grabber.release();
 recorder.stop();
 recorder.release();
}



But this login was failed. I met this issue when I implemented the ffmpeg


data partitioning is not implemented. Update your FFmpeg version to the newest one from Git. If the problem still occurs, it means that your file has a feature which has not been implemented.



Is there any other idea to solve this or other way to achieve the logic ? Thanks


-
How to Download YouTube Videos in 1080p with English Subtitles Using yt-dlp with Python 3
30 juillet 2024, par edge selcukI am trying to download YouTube videos using
yt-dlp
in Python 3.9. I want to download videos in 1080p quality and if 1080p is not available, it should download the best available quality. The audio and video files should be merged into a single MP4 file, and I haveffmpeg
installed to handle the merging process.

Here is my script :


import os
import sys
from yt_dlp import YoutubeDL

def download_video(url):
 output_dir = r"/path" # Update this path

 # Ensure the output directory exists
 if not os.path.exists(output_dir):
 os.makedirs(output_dir)
 
 ydl_opts = {
 'format': '(bestvideo[height<=1080][ext=mp4]/bestvideo)+bestaudio/best',
 'merge_output_format': 'mp4',
 'write_auto_sub': True,
 'writesubtitles': True,
 'subtitleslangs': ['en'],
 'subtitlesformat': 'vtt',
 'embedsubtitles': True,
 'outtmpl': os.path.join(output_dir, '%(title)s.%(ext)s'),
 'postprocessors': [{
 'key': 'FFmpegVideoConvertor',
 'preferedformat': 'mp4',
 }],
 }

 with YoutubeDL(ydl_opts) as ydl:
 ydl.download([url])

if __name__ == "__main__":
 if len(sys.argv) != 2:
 print("Usage: python download_video.py ")
 sys.exit(1)

 youtube_url = sys.argv[1]
 download_video(youtube_url)



This script successfully downloads the video in 1080p quality or the best available quality and merges the audio and video files as intended. However, it does not download the subtitles as intended.


I have
ffmpeg
installed for merging the video and audio files. How can I modify this script to ensure that English subtitles are downloaded and embedded in the video file ?