S3ldonPress

La rai in streaming con VLC

Da un po’ di tempo sul sito della RAI è possibile seguire in streaming tutti i canali. Per gli utenti di Linux la cosa non è molto comoda poichè richiede l’installazione di Moonlight (l’alternativa open di Silverlight) e, almeno a me, non sempre viene caricato correttamente. Vi segnalo dunque una piccola applicazioncina, che non è [...]

Convertire da amr in mp3

Registrando con il mio nokia 5800XM mi sono accorto che il file generato è .amr . Francamente non avevo mai sentito questo formato e così mi sono chiesto “esisterà questa volta il classico comando per convertirlo?” La risposta è ovviamente si e la soluzione è il sempre presente ffmpeg. La conversione, come spesso accade in [...]

Bluetooth su Debian Sid + KDE 4

Con l’aggiornamento di KDE da 3 a 4 su Debian Sid (unstable) il bluetooth sul mio PC non funzionava più correttamente. Il pc non veniva rilevato, non riuscivo a inviare file nè a riceverne. Ciò perchè non è presente nei repository il pacchetto per KDE 4 di Kbluetooth, che è l’applicazione KDE che serve a [...]

Ubuntu Netbook Remix su Acer Aspire

Come regalo per la laurea ho ricevuto dai miei cari amici un Netbook Acer Aspire One D150. Il primo passo che ho compiuto una volta acceso è stato ovviamente quello di installare Linux, visto che sopra c’era l’orrido Windows XP. In un primo momento mi sono orientato sulla distribuzione Linux4One, basata su Ubuntu 8.04 e [...]

Nokia N78 come modem su Linux

Stamattina in prospettiva vacanza della prox settimana, ho attivato la promozione Internet Card di Vodafone che permette di potersi collegare ad internet tramite PC utilizzando il cell come modem. Ho subito effettuato una prova per verificare il corretto funzionamento ed è tutto ok. Vediamo di seguito come far rilevare il modem del cellulare via bluetooth [...]

Unire due pdf

Per unire due pdf in Linux come spesso accade viene in soccorso un piccolo grande tool a riga di comando: pdftk. Una volta scaricato il pacchetto presente nei repository di molte distro, per unire due pdf il comando da dare è:
pdftk doc1.pdf doc2.pdf cat output nuovo.pdf
In questo modo il file nuovo.pdf sarà composto dal doc1 [...]

JMF in un applet

Qualche settimana fa lavorando alla mia tesi sono incappato in un problema che mi ha tenuto fermo per qualche giorno. Cercando in giro per la rete mi sono accorto che non è un problema di pochi ma di soluzioni praticamente non si vede traccia. Io dopo vari tentativi sono riuscito a risolvere. Vediamo di che si tratta.

JMF (Java Media Framework) è appunto un framework che permette di integrare vari media (per es. video e audio, ma anche streaming rtp) in applicazioni Java. Il primo problema che si incontra nell’utilizzo di JMF sta nel fatto che il supporto è stato abbandonato dalla Sun anni orsono e dunque JMF si presenta come un utile supporto per applicazioni multimediali ma allo stesso tempo è estremamente vecchio poichè i codec multimediali supportati risalgono all’età della pietra. Come spesso accade in questi casi è la comunità open source a farsi carico del problema. Infatti in giro si trovano varie soluzioni ed estensioni che permettono di utilizzare JMF con librerie native, per es. di utilizzare JMF con ffmpeg, ossia di essere in grado di leggere i più comuni formati e codec multimediali. Per il mio progetto la scelta è caduta su FOBS ma si potrebbe utilizzare tranquillamente anche FMJ. Una volta aggiunti i codec giusti a JMF mediante il JMFRegistry viene modificato il file jmf.properties che conterrà le informazioni per caricare i giusti codec. Bene, una volta fatto ciò non hanno più problemi ad utilizzare JMF con qualsivoglia media.

La mia necessità era di integrare il player che sto realizzando in un applet, all’interno di una pagina web. Ora, utilizzando Eclipse e avviando l’applet da lì non avevo nessun tipo di problema, tutto funzionava correttamente. Nel momento in cui però andavo ad integrare il codice dell’applet in una pagina html non funzionava una mazza. Perchè? Perchè l’applet non riusciva a caricare il giusto file jmf.properties e ne creava uno di default con i codec base di JMF. Come fare a far caricare la giusta configurazione? Dopo giorni, grazie anche e soprattutto all’aiuto e alla disponibilità di Werner, sono arrivato al dunque. Vediamo come. Come prima cosa occorre posizionare il file jmf.properties nello stesso path del file .class dell’applet. Dopodichè si può utilizzare la seguente classe,di cui riporto per intero il codice, per inizializzare correttamente JMF:

/* * Copyright 2009 Markus Koller *  * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at  *  *     http://www.apache.org/licenses/LICENSE-2.0 *  * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */

import java.io.IOException;import java.io.InputStream;import java.io.ObjectInputStream;import java.io.OptionalDataException;import java.net.URL;import java.util.HashMap;import java.util.Map;

import com.sun.media.util.Registry;

/** * Helps initializing JMF from a JMF.properties file not on the root of the classpath. * This also works for webstart! * @author Markus Koller */public class JMFInitializer {    public static void initJMF(URL url) throws IOException {        InputStream in = null;        try {            in = url.openStream();            if (in == null) {                throw new IllegalArgumentException("No such jmf properties file: " + url);            }             readJMFRegistry(in);        } finally {           if (in != null) {               try {                   in.close();               } catch (IOException e) {}           }        }    }

    private static void readJMFRegistry(InputStream ris) throws IOException {        ObjectInputStream ois = null;        try {            ois = new ObjectInputStream(ris);                int tableSize = ois.readInt();            int version = ois.readInt();            if (version > 200) {                System.err.println("Version number mismatch. There could be errors in reading the registry");            }            HashMap<String, Object> hash = new HashMap<String, Object>();            for (int i = 0; i < tableSize; i++) {                String key = ois.readUTF();                try {                     Object value = ois.readObject();                     hash.put(key, value);                } catch (ClassNotFoundException e) {                     throw new RuntimeException("Class not found for jmf registry entry", e);                } catch (OptionalDataException e) {                     throw new RuntimeException("Invalid jmf properties content", e);                }            }            for (Map.Entry<String, Object> entry : hash.entrySet()) {                 Registry.set(entry.getKey(), entry.getValue());             }        } finally {            if (ois != null) {                try {                    ois.close();                } catch (IOException e) {}            }        }     }}

 

Tale classe va richiamata nell’init() dell’applet prima di creare il player JMF in questo modo:

JMFInitializer.initJMF(this.getClass().getResource("jmf.properties"));

 

Bene ora l’applet inizializzerà correttamente JMF e caricherà i codec giusti dal file .properties. A questo punto potreste incappare in un altro problema, problema relativo alle restrizioni di sicurezza dell’applet. Infatti c’è da ricordare che un applet gode di restrizioni di sicurezza per evitare che applicazioni malevoli possano commettere atti impuri. Per evitare tali restrizioni è buona norma quella di firmare digitalmente l’applet. Per sapere come fare vi rimando a questa guida.

Se avete problemi non esitate a contattarmi e per quel che posso proverò a darvi una mano.

Convertire immagini in pdf

Nonostante usi Linux da ormai diversi anni ci sono sempre nuove piccole scoperte che mi sorprendono e mi entusiasmano come se fosse un mondo completamente nuovo. E quasi sempre queste meraviglie derivano da tool a riga di comando che permettono di fare in un amen operazioni che solitamente richiedono tempo, soprattutto per cercare l’applicazione che le svolge.

Ieri sera ho scoperto il comando convert del pacchetto imagemagick che permette di creare un pdf da un’immagine o da una serie di immagini. Supponiamo di avere 3 immagini da voler convertire in pdf, posizionando un’immagine per ogni pagina. Come fare? Niente di più semplice:

convert img1.jpg img2.jpg img3.jpg doc.pdf

Fine.

Come tagliare un video

In passato vi ho parlato di come tramite mencoder, con un semplice comando è possibile aggiungere i sottotitoli ad un file avi, o di come è possibile, sempre da riga di comando, tagliare solo una parte di un file audio. Oggi vediamo come, utilizzando mencoder, sia possibile tagliare un file video. Tutto ciò che vi serve è appunto mencoder che potete installare con il canonico

apt-get install mencoder

A questo punto il comando da dare è:

mencoder -endpos hh:mm:ss -ovc copy -oac copy file.avi -o nuovofile.avi

in questo modo il taglio creato andrà dall’inizio del video fino al tempo indicato e sarà creato il nuovo file che lo conterrà.

Per tagliare invece un video non dall’inizio il comando da dare è:

mencoder -ss hh:mm:ss -endpos hh:mm:ss -ovc copy -oac copy file.avi -o filenuovo.avi

in questo modo il taglio creato sarà formato dal video contenuto tra i due tempi indicati.

Il comando shutdown

A quanti di voi è capitato di voler per es. addormentarsi ascoltando un po’ di musica dal pc o comunque avere la necessità di lasciarlo acceso per un tempo limitato in attesa della fine di qualche operazione? E quanti si sono posti il problema di come fare per spegnerlo automaticamente dopo un certo lasso di tempo? In Linux, come spesso succede in questi casi, l’operazione di spegnimento automatico è oserei dire banale. In nostro soccorso viene il comando shutdown. Come prima cosa c’è da dire che bisogna avere i privilegi di root per lanciarlo, per cui gli esempi seguenti si riferiscono ad una sessione di amministratore. Vediamo come utilizzarlo.

shutdown -r now EFFETTUA IL RIAVVIO DEL SISTEMA

shutdown -h now EFFETTUA LO SPEGNIMENTO IMMEDIATO DEL SISTEMA

shutdown -h +30 EFFETTUA LO SPEGNIMENTO DEL SISTEMA DOPO 30 MINUTI. OVVIAMENTE A 30 POTETE SOSTITUIRE I MINUTI CHE VOLETE

shutdown -h hh:mm EFFETTUA LO SPEGNIMENTO DEL SISTEMA ALL’ORA INDICATA

shutdown -c ANNULLA UNO SHUTDOWN GIÀ LANCIATO

keep looking »
  • Meta

  • Archivi

  • Articoli recenti

  • Commenti recenti

  • Tag

  • Visitors Online

  • Blog sotto licenza Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License
    Creative Commons License