
Recherche avancée
Autres articles (66)
-
Problèmes fréquents
10 mars 2010, parPHP et safe_mode activé
Une des principales sources de problèmes relève de la configuration de PHP et notamment de l’activation du safe_mode
La solution consiterait à soit désactiver le safe_mode soit placer le script dans un répertoire accessible par apache pour le site -
L’espace de configuration de MediaSPIP
29 novembre 2010, parL’espace de configuration de MediaSPIP est réservé aux administrateurs. Un lien de menu "administrer" est généralement affiché en haut de la page [1].
Il permet de configurer finement votre site.
La navigation de cet espace de configuration est divisé en trois parties : la configuration générale du site qui permet notamment de modifier : les informations principales concernant le site (...) -
Les statuts des instances de mutualisation
13 mars 2010, parPour des raisons de compatibilité générale du plugin de gestion de mutualisations avec les fonctions originales de SPIP, les statuts des instances sont les mêmes que pour tout autre objets (articles...), seuls leurs noms dans l’interface change quelque peu.
Les différents statuts possibles sont : prepa (demandé) qui correspond à une instance demandée par un utilisateur. Si le site a déjà été créé par le passé, il est passé en mode désactivé. publie (validé) qui correspond à une instance validée par un (...)
Sur d’autres sites (9388)
-
Including FFmpeg.framework Into My IOS App
28 mars, par AlpiI'm trying to manually integrate ffmpegkit.framework into my Expo Bare Workflow iOS app (built with React Native + native modules via Xcode) because the ffmpegkit will be deprecated and the binaries will be deleted.


So far


- 

- I've downloaded the latest LTS release of FFmpegkit from here.
- I've created 3 files : FFmpegModule.m , FFmpegModule.swift and SoundBud-Bridging-Header.
- Added the frameworks to my projectDir/ios manually, which shows in my XCode under projectDir/Frameworks
- Added all the frameworks into "Frameworks, Libraries and Embedded Content" and make them "Embed and Sign"
- As Framework Search Path in Project Settings, I've set it to "$(PROJECT_DIR)" and recursive
- In "Build Phases" I've added all the frameworks under "Embed Frameworks",set the destination to "Frameworks" and checked "Code Sign on Copy" to all of them and unchecked "Copy Only When Installing"
- Also under "Link Binary With Libraries" I've added all the frameworks and marked them "Required"
















Here are the errors I'm getting :


- 

- The framework is not recognized by Swift (No such module 'ffmpegkit')
- A build cycle error : Cycle inside SoundBud ; building could produce unreliable results.
Target 'SoundBud' has copy command from '.../Frameworks/ffmpegkit.framework' ...






Below you can see my swift file and the ffmpegkit module file :
Swift :


import Foundation
import ffmpegkit
import React

@objc(FFmpegModule)
class FFmpegModule: NSObject, RCTBridgeModule {

static func moduleName() -> String {
return "FFmpegModule"
}

@objc
func runCommand(_ command: String, resolver resolve: @escaping RCTPromiseResolveBlock, 
rejecter reject: @escaping RCTPromiseRejectBlock) {
FFmpegKit.executeAsync(command) { session in
 let returnCode = session?.getReturnCode()
 resolve(returnCode?.getValue())
}
}

@objc
static func requiresMainQueueSetup() -> Bool {
return false
}
}



and the module :


framework module ffmpegkit {

header "AbstractSession.h"
header "ArchDetect.h"
header "AtomicLong.h"
header "Chapter.h"
header "FFmpegKit.h"
header "FFmpegKitConfig.h"
header "FFmpegSession.h"
header "FFmpegSessionCompleteCallback.h"
header "FFprobeKit.h"
header "FFprobeSession.h"
header "FFprobeSessionCompleteCallback.h"
header "Level.h"
header "Log.h"
header "LogCallback.h"
header "LogRedirectionStrategy.h"
header "MediaInformation.h"
header "MediaInformationJsonParser.h"
header "MediaInformationSession.h"
header "MediaInformationSessionCompleteCallback.h"
header "Packages.h"
header "ReturnCode.h"
header "Session.h"
header "SessionState.h"
header "Statistics.h"
header "StatisticsCallback.h"
header "StreamInformation.h"
header "ffmpegkit_exception.h"

export *
}



I can provide you with more info if you need it. I've been trying non stop for 7 days and it's driving me crazy. I would appreciate any help greatly


-
Diamond Rio Artifacts
30 août 2012, par Multimedia Mike — Multimedia HistoryRemember the Diamond Rio PMP300 ? It’s credited with being the very first portable MP3 player, released all the way back in 1998 (I say ‘credited’ because I visited an audio museum once which exhibited a Toshiba MP3 player from 1997). I recently rescued a pristine set of Rio artifacts from a recycle pile.
I wondered if I should scan the manual for posterity. However, a Google search indicates that a proper PDF (loaded with pleas to not illegally copy music) isn’t very difficult to come by. Here are the other items that came with the unit :
Click for larger image
Ah, more memories (of dialup internet) : A tie-in with another Diamond product, this time a modem which claims to enable the user to download songs at up to 112 kilobits per second. I wonder if that was really possible. I remember that 56k modems were a stretch and 33.6k was the best that most users could hope for.
There is also a separate piece of paper that advises the buyer that the parallel port adapter might look a bit different than what is seen in the printed copy. Imagine the age of downloading to your MP3 player via parallel port while pulling down new songs via dialup internet.
The artifacts also included not one, but two CD-ROMs :
Click for larger image
One is a driver and software disc, so no big surprise there. The other has a selection of MP3 files for your shiny new MP3 player. I’m wondering if these should be proactively preserved. I was going to process the files’ metadata and publish it here, for the benefit of search engines. However, while metadata is present, the files don’t conform to any metadata format that FFmpeg/Libav recognize. The files mention Brava Software Inc. in their metadata sections. Still, individual filenames at the end of this post.
Leftovers :
A few other miscellaneous multimedia acquisitions :
I still want to study all of these old multimedia creation programs in depth some day. Theatrix Hollywood is a creative writing game, Wikipedia alleges (I’m a bit rigid with my exact definition of what constitutes a game). Here is an example movie output from this software. Meanwhile, the Mad Dog Multimedia CD-ROM apparently came packaged with a 56X CD-ROM drive (roughly the pinnacle of CD-ROM speeds). I found it has some version of Sonic Foundry’s ACID software, thus making good on the “applications” claim on the CD-ROM copy.
Diamond Rio MP3 Sampler
These are the names of the MP3 files found on the Diamond Rio MP3 sampler for the benefit of search engines.13_days.mp3 albert_einstein_dreams.mp3 a_man_of_many_colours.mp3 anything_for_love.mp3 a_secret_place.mp3 bake_sale.mp3 bigger_than_the_both_of_us.mp3 boogie_beat.mp3 bring_it_on.mp3 buskersoundcheck_hippo.mp3 charm.mp3 chemical_disturbance.mp3 coastin.mp3 credit_is_due.mp3 dance_again.mp3 destiny.mp3 dig_a_little_deeper.mp3 diplomat6_bigmouthshut.mp3 dirty_littlemonster.mp3 dirty.mp3 drivin.mp3 Eric_Clapton_Last_Train.mp3 etude_in_c_sharp_minor_op_42_n.mp3 everybody_here.mp3 freedom_4_all.mp3 grandpas_advice.mp3 groove.mp3 heartland.mp3 he_loved_her_so.mp3 highway_to_hell.mp3 hit_the_ground_runnin.mp3 i_feel_fine_today.mp3 im_not_lost_im_exploring.mp3 into_the_void.mp3 its_alright.mp3 i_will_be_there.mp3 i_will_pass_this_way_again.mp3 juiceboxwilly_hepcat.mp3 just_an_illusion.mp3 keepin_time_by_the_river.mp3 king_of_the_brooklyn_delta.mp3 lovermilou_ringingbell.mp3 middle_aged_rock_and_rollers.mp3 midnight_high.mp3 mr_schwinn.mp3 my_brilliant_masterpiece.mp3 my_gallery.mp3 on_the_river_road.mp3 pouring_rain.mp3 prayer.mp3 rats_in_my_bedroom.mp3 razor_serpent_and_the_dub_mix.mp3 ruthbuzzy_pleasestophangin.mp3 secret_love.mp3 ships.mp3 silence_the_thunder.mp3 sleeping_beauty.mp3 slow_burn.mp3 standing_in_my_own_way.mp3 take_no_prisoners.mp3 takin_up_space.mp3 Taylor_Dayne_Unstoppable.mp3 the_laundromat_song.mp3 the_old_dun_cow.mp3 the_people_i_meet.mp3 trip_trigger_avenue.mp3 tru-luv.mp3 unfortunate_man.mp3 vertigo.mp3 when_she_runs.mp3 where_do_we_go_from_here.mp3 words_of_earnest.mp3
-
Dynamic ffmpeg crop, scale & encoding code seems to break when the crop size changes
28 avril 2024, par BlindyThe following code works perfectly as long as I only move the crop rectangle, however as soon as I change its size I no longer get frames out of my filter (
av_buffersink_get_frame
returns-11
). It's crazy, even after the size changes, if it eventually changes to the original size that frame will go through, then it will go back to no longer providing frames.

Would anyone happen to know what I'm doing wrong ?


My filter setup (note the
crop
&scale
combination, it should (I think ?) scale whatever I crop to the output video size) :

// buffer source -> buffer sink setup
auto args = std::format("video_size={}x{}:pix_fmt={}:time_base={}/{}:pixel_aspect={}/{}",
 inputCodecContext->width, inputCodecContext->height, (int)inputCodecContext->pix_fmt,
 inputCodecContext->pkt_timebase.num, inputCodecContext->pkt_timebase.den,
 inputCodecContext->sample_aspect_ratio.num, inputCodecContext->sample_aspect_ratio.den);

AVFilterContext* buffersrc_ctx = nullptr, * buffersink_ctx = nullptr;
check_av_result(avfilter_graph_create_filter(&buffersrc_ctx, bufferSource, "in",
 args.c_str(), nullptr, &*filterGraph));
check_av_result(avfilter_graph_create_filter(&buffersink_ctx, bufferSink, "out",
 nullptr, nullptr, &*filterGraph));
check_av_result(av_opt_set_bin(buffersink_ctx, "pix_fmts",
 (uint8_t*)&outputCodecContext->pix_fmt, sizeof(outputCodecContext->pix_fmt), AV_OPT_SEARCH_CHILDREN));

// filter command setup
auto filterSpec = std::format("crop,scale={}:{},setsar=1:1", outputCodecContext->width, outputCodecContext->height);

check_av_result(avfilter_graph_parse_ptr(&*filterGraph, filterSpec.c_str(), &filterInputs, &filterOutputs, nullptr));
check_av_result(avfilter_graph_config(&*filterGraph, nullptr));



Frame cropping :


check_av_result(avfilter_graph_send_command(&*filterGraph, "crop", "x", std::to_string(cropRectangle.CenterX() - cropRectangle.Width() / 2).c_str(), nullptr, 0, 0));
check_av_result(avfilter_graph_send_command(&*filterGraph, "crop", "y", std::to_string(cropRectangle.CenterY() - cropRectangle.Height() / 2).c_str(), nullptr, 0, 0));
check_av_result(avfilter_graph_send_command(&*filterGraph, "crop", "w", std::to_string(cropRectangle.Width()).c_str(), nullptr, 0, 0));
check_av_result(avfilter_graph_send_command(&*filterGraph, "crop", "h", std::to_string(cropRectangle.Height()).c_str(), nullptr, 0, 0));

// push the decoded frame into the filter graph
check_av_result(av_buffersrc_add_frame_flags(buffersrc_ctx, &*inputFrame, 0));

// pull filtered frames from the filter graph
while (1)
{
 ret = av_buffersink_get_frame(buffersink_ctx, &*filteredFrame);
 if (ret < 0)
 {
 // if no more frames, rewrite the code to 0 to show it as normal completion
 if (ret == AVERROR(EAGAIN) || ret == AVERROR_EOF)
 ret = 0;
 break;
 }

 // write the filtered frame to the output file 
 // [...]
}



I also set the output video size before creating the file, and it is obeyed as expected :


outputCodecContext->width = (int)output.PixelSize().Width;
outputCodecContext->height = (int)output.PixelSize().Height;