
Recherche avancée
Autres articles (53)
-
Keeping control of your media in your hands
13 avril 2011, parThe vocabulary used on this site and around MediaSPIP in general, aims to avoid reference to Web 2.0 and the companies that profit from media-sharing.
While using MediaSPIP, you are invited to avoid using words like "Brand", "Cloud" and "Market".
MediaSPIP is designed to facilitate the sharing of creative media online, while allowing authors to retain complete control of their work.
MediaSPIP aims to be accessible to as many people as possible and development is based on expanding the (...) -
Use, discuss, criticize
13 avril 2011, parTalk to people directly involved in MediaSPIP’s development, or to people around you who could use MediaSPIP to share, enhance or develop their creative projects.
The bigger the community, the more MediaSPIP’s potential will be explored and the faster the software will evolve.
A discussion list is available for all exchanges between users. -
Publier sur MédiaSpip
13 juin 2013Puis-je poster des contenus à partir d’une tablette Ipad ?
Oui, si votre Médiaspip installé est à la version 0.2 ou supérieure. Contacter au besoin l’administrateur de votre MédiaSpip pour le savoir
Sur d’autres sites (8264)
-
Anomalie #4438 : Manque Msg :message:lien_reponse_message :
22 mars 2020Ça m’interroge...
Les chaines de langues sont dans ’forum’, là : https://git.spip.net/spip/forum/src/branch/master/lang/forum_fr.php#L129
Donc appeler `_T(’message:lien_reponse_message’)` ne donnera rien, quelque soit la version de SPIP.
Cette chaine (forum:lien_reponse_message) est appelé si le message a un `id_parent`.La question semble plutôt :
- soit `#OBJET` qui vaut ’message’ est erroné (ça devait être autre chose (genre l’objet du parent), mais un bug remplit a rempli ’message’ ?
- soit on avait jamais eu ce cas simplement ? -
Troll spirit
15 juin 2013, par Mans — Law and libertyLast week’s announcements from the White House of steps being taken to begin fighting back against patent trolls, along with legislation passed in Vermont for the same purpose, are worthy of praise. Whether they prove effective or not, they are a sign of the problem finally having been recognised by the highest authorities. That said, only one aspect of the issue is addressed, that of non-practising entities or trolls. Little effort is being made to stymie troll-like behaviour from otherwise legitimate actors. While a stake is driven through the heart of the troll, its spirit remains free to roam the corporate world, and like a demon of darkness it possesses companies, compelling them to engage in the very practices we seek to eradicate.
The demon
The most damaging, when wielded by a troll, are those patents with vague or overly broad claims. These can easily be asserted against large numbers of alleged infringers, many of which likely choose to settle out of court rather than risk an expensive litigation process with uncertain outcome. Such negotiations are frequently subject to non-disclosure agreements prohibiting publication of details in any deals, or even the existence thereof. As a result, an accused has no way of assessing a fair price for a licence (assuming the patent is in fact valid), and the patent holder can thus extract from each would-be infringer precisely as much as they are willing or able to pay to avoid a lawsuit.
At the root of this problem is the ease with which applications for the patents in question are granted. Given the volume of patent applications, it is hardly reasonable to demand a hugely more extensive examination process than currently takes place (although some improvements here are no doubt possible) ; after all, a speedy decision is in the best interest of all parties. The solution must evidently be found elsewhere.
The exorcism
An obvious cure to the problem is the abolishment of the patent system. As this is clearly not feasible today, more practical, albeit less effective, remedies must be sought. A few ideas follow.
- Make patent validity all or nothing
- Change the rules such that any claim being found invalid cancels the patent its entirety. With the full patent at stake in this manner, companies would be discouraged from gambling on frivolous claims and encouraged to conduct a more thorough background investigation before filing.
- Maintain a registry of licences
- Require that all patent licence agreements be filed in an open, easily searchable registry. This would hopefully increase fairness in licensing deals.
- Mandate reimbursement of licence fees for invalidated patents
- If a patent is challenged and found invalid, require that the owner reimburse any licence fees previously collected for the patent in question. Apart from being morally right, this could act as a deterrent to over-charging. The amount requested for a licence would likely be balanced against the risk of being made to pay it all back later, resulting in lower licence fees for low-confidence patents.
These suggestions, alone or together, will not completely eradicate the problems of patent abuse. They are but small steps towards a more thorough overhaul of a system increasingly ill-suited to the nature and pace of modern technological development.
-
Read ID3 tags generated using Apple's id3taggenerator
9 octobre 2024, par Damiaan DufauxHi I am creating an HLS stream with ID3 tags using Apple's HTTP Live Streaming (HLS) Tools, FFmpeg and NodeJS. When I try to read out the stream using an
AVPlayer
andAVPlayerItemMetadataOutput
on macOS I'm not able to read out the ID3 tags. When I use the same code to read out a sample stream containing ID3 tags I do see them popping up. What am I doing wrong ?

Reproduction :


Streaming


I generate an infinite HLS stream from a 5 minute long mpeg ts file using this command :


ffmpeg -stream_loop -1 -re -i 5m.ts -c:v copy -c:a copy -f mpegts -strict -2 - | mediastreamsegmenter -b http://DamiaanTheoPro14.local:8081/ -f /tmp/hlsId3/video -D -m -M 50000 -log /tmp/hlsId3/log.txt



I serve that HLS stream using nodejs builtin
http-server


ID3 tag generation


Then I emit some ID3 tags using the following commands :


id3taggenerator -title foo -artist bar -a localhost:50000
id3taggenerator -text "foo bar" -d "sample text" -r -a localhost:50000



Reading


Now to read out the tags I use this little SwiftUI app :


import SwiftUI
import AVKit

let bipbopUrl = URL(string: "https://devstreaming-cdn.apple.com/videos/streaming/examples/bipbop_16x9/bipbop_16x9_variant.m3u8")!
let localUrl = URL(string: "http://damiaantheopro14.local:8081/prog_index.m3u8")!
let local = AVPlayerItem(url: localUrl)
let bipbop = AVPlayerItem(url: bipbopUrl)

struct ContentView: View {
 let player = AVPlayer()
 let observer = Id3Observer()
 var lastTag: AVMetadataGroup?
 
 var body: some View {
 VStack {
 HStack {
 Button("BipBop") {
 player.replaceCurrentItem(with: bipbop)
 bipbop.add(observer.metadataOutput)
 }
 Button("Local") {
 player.replaceCurrentItem(with: local)
 local.add(observer.metadataOutput)
 }
 Button("🅧") {
 player.replaceCurrentItem(with: nil)
 }
 }
 VideoPlayer(player: player)
 }
 .padding()
 }
}

class Id3Observer: NSObject, AVPlayerItemMetadataOutputPushDelegate {
 let metadataOutput = AVPlayerItemMetadataOutput()
 
 override init() {
 super.init()
 metadataOutput.setDelegate(self, queue: .global())
 }
 
 func metadataOutput(_ output: AVPlayerItemMetadataOutput, didOutputTimedMetadataGroups groups: [AVTimedMetadataGroup], from: AVPlayerItemTrack?) {
 print("metadataOutput", groups.count)
 print("\t", groups.map { group in
 group.items.map { item in
 "\(item.dataType) \(item.keySpace!) \(item.key!) \(item.time.seconds) \(item.duration.seconds.rounded())"
 }.joined(separator: "/n/t")
 }.joined(separator: "\n\t"))
 }
}