Advanced search

Medias (1)

Tag: - Tags -/ipad

Other articles (106)

  • Keeping control of your media in your hands

    13 April 2011, by

    The 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 (...)

  • Les images

    15 May 2013
  • Taille des images et des logos définissables

    9 February 2011, by

    Dans beaucoup d’endroits du site, logos et images sont redimensionnées pour correspondre aux emplacements définis par les thèmes. L’ensemble des ces tailles pouvant changer d’un thème à un autre peuvent être définies directement dans le thème et éviter ainsi à l’utilisateur de devoir les configurer manuellement après avoir changé l’apparence de son site.
    Ces tailles d’images sont également disponibles dans la configuration spécifique de MediaSPIP Core. La taille maximale du logo du site en pixels, on permet (...)

On other websites (7676)

  • ffmpeg exit code 429496724 when opening file with {} in name

    16 February, by Holly Wilson

    I'm trying to write a program that will read the names of files in a directory, and parse them for info which it will then write into that file's metadata (seems pointless, I know, but it's more of a trial run for a larger project. If I can figure this out, then I'll be ready to move on to what I actually want to do).
All of my filenames are formatted:

    


    Title, Article* - Subtitle* Cut* [Year]
*if present

    


    The four test videos I'm using are titled:

    


    Test Video 1 [2000]

    


    Test Video 2, A [2000]

    


    Test Video 3 Test Cut [2000]

    


    Test Video 4 - The Testening [2000]

    


    The code seems to be working fine on videos 1, 2, & 4; but video 3 is causing me a lot of headache.

    


    //node C:\Users\User\Documents\Coding\Tools\testMDG.js
const fs = require('fs');
const path = require('path');
const ffmpeg = require('fluent-ffmpeg');
const async = require('async');
const directory = path.normalize('F:\\Movies & TV\\Movies\\testDir');
let x = 0;
const fileArray = [];
const succArray = [];
const failArray = [];
// Set the path to the ffmpeg executable
ffmpeg.setFfmpegPath(path.normalize('C:\\ffmpeg\\bin\\ffmpeg.exe'));

// Add this near the start of your script
const tempDir = path.join(directory, 'temp');
if (!fs.existsSync(tempDir)) {
    fs.mkdirSync(tempDir, { recursive: true });
}

const progresscsv = path.normalize('C:\\Users\\User\\Documents\\Coding\\Tools\\progress.csv');
if (fs.existsSync(progresscsv)) {
    fs.unlinkSync(progresscsv);
};

const csvStream = fs.createWriteStream(progresscsv);
csvStream.write('File Name,Status\n');

const CONCURRENCY_LIMIT = 3; // Adjust based on your system capabilities

// Add at the start of your script
const processedFiles = new Set();

function sanitizeFilePath(filePath) {
    return filePath.replace(/([{}])/g, '\\$1');
}

// Create a queue
const queue = async.queue(async (task, callback) => {
    const { file, filePath, tempFilePath, movieMetadata } = task;
    try {
        await new Promise((resolve, reject) => {
            console.log(`ffmpeg reading: ${sanitizeFilePath(filePath)}`);
            ffmpeg(sanitizeFilePath(filePath))
                .outputOptions([
                    '-y',
                    '-c', 'copy',
                    '-map', '0',
                    '-metadata', `title=${movieMetadata.title}`,
                    '-metadata', `subtitle=${movieMetadata.subtitle || ''}`,
                    '-metadata', `comment=${movieMetadata.cut || ''}`,
                    '-metadata', `year=${movieMetadata.year}`
                ])
                .on('error', (err) => reject(err))
                .on('end', () => resolve())
                .saveToFile(tempFilePath);
        });
        
        // Handle success
        console.log(`Successfully processed: ${file}`);
        succArray.push(file);
        // Only call callback once
        if (callback && typeof callback === 'function') {
            callback();
        }
    } catch (err) {
        // Handle error
        console.error(`Error processing ${file}: ${err.message}`);
        failArray.push(file);
        // Only call callback once with error
        if (callback && typeof callback === 'function') {
            callback(err);
        }
    }
}, CONCURRENCY_LIMIT);

fs.readdir(directory, (err, files) => {
    if (err) {
        console.error(`Error reading directory: ${err.message}`);
        return;
    }
    console.log(directory);

    // Filter for files only
    files = files.filter(file => fs.statSync(path.join(directory, file)).isFile());
    console.log(files);

    for (const file of files) {
        x++;
        const filePath = path.join(directory, file);
        let desort = file.replace(/(.*),\s(the\s|an\s|a\s)/i, '$2'+'$1 ') || file;
        
        // Create task object for queue
        const task = {
            file,
            filePath: filePath,
            tempFilePath: path.join(directory, 'temp', `temp_${x}_${path.parse(file).name
                .replace(/[^a-zA-Z0-9]/g, '_')}${path.extname(file)}`),
            movieMetadata: {
                title: desort.replace(/(\s[\-\{\[].*)/gi, ``),
                subtitle: desort.includes('-') ? desort.replace(/(.*)\-\s(.*?)[\{\[].*/gi, '$2') : null,
                cut: desort.includes('{') ? desort.replace(/.*\{(.*)\}.*/gi, '$1') : null,
                year: desort.replace(/.*\[(.*)\].*/gi, '$1')
            }
        };
        
        // Add to processing queue
        queue.push(task, (err) => {
            if (!processedFiles.has(task.file)) {
                processedFiles.add(task.file);
                if (err) {
                    csvStream.write(`${task.file},Failed\n`);
                } else {
                    csvStream.write(`${task.file},Processed\n`);
                }
            }
        });
    }
});

// Add queue completion handler
queue.drain(() => {
    console.log('All files have been processed');
    console.log(`Success: ${succArray.length} files: ${succArray}`);
    console.log(`Failed: ${failArray.length} files: ${failArray}`);
});

//node C:\Users\User\Documents\Coding\Tools\testMDG.js


    


    And the console is logging:

    


    PS C:\Users\User> node C:\Users\User\Documents\Coding\Tools\testMDG.js
F:\Movies & TV\Movies\testDir
[
  'Test Video 1 [2020].mp4',
  'Test Video 2, A [2020].mp4',
  'Test Video 3 {Test Cut} [2020].mp4',
  'Test Video 4 - The Testening [2020].mp4'
]
ffmpeg reading: F:\Movies & TV\Movies\testDir\Test Video 1 [2020].mp4
ffmpeg reading: F:\Movies & TV\Movies\testDir\Test Video 2, A [2020].mp4
ffmpeg reading: F:\Movies & TV\Movies\testDir\Test Video 3 \{Test Cut\} [2020].mp4
Error processing Test Video 3 {Test Cut} [2020].mp4: ffmpeg exited with code 4294967294: Error opening input file F:\Movies & TV\Movies\testDir\Test Video 3 \{Test Cut\} [2020].mp4.
Error opening input files: No such file or directory

ffmpeg reading: F:\Movies & TV\Movies\testDir\Test Video 4 - The Testening [2020].mp4
Successfully processed: Test Video 1 [2020].mp4
Successfully processed: Test Video 2, A [2020].mp4
Successfully processed: Test Video 4 - The Testening [2020].mp4
All files have been processed
Success: 3 files: Test Video 1 [2020].mp4,Test Video 2, A [2020].mp4,Test Video 4 - The Testening [2020].mp4
Failed: 1 files: Test Video 3 {Test Cut} [2020].mp4


    


    I've tried so many different solutions in the sanitizeFilePath function. Escaping the {} characters (as included below), escaping all non-alphanumeric characters, putting the filepath in quotes, etc. VSCode's CoPilot is just pulling me round in circles, suggesting solutions I've already tried.

    


  • Android ffmpeg command shows java.io.IOException: Error running exec()

    26 May 2023, by Jamal

    I would like to use ffmpeg binary executable in my Android project.for this purpose I have used pre built ffmpeg Android binary from this(https://github.com/hiteshsondhi88/ffmpeg-android/releases/download/v0.3.3/prebuilt-binaries.zip) link.

    



    As per procedure I have to place the executable file into /data/data/com.example.rampedsample directory, here com.example.rampedsample is my project packageName.I couldn't find this location in my device as it is un rooted.So I pasted that executable into Android emulator's com.example.rampedsample directory using DDMS perspective.

    



    In my Activity used the below code

    



     try {
            Process p = Runtime.getRuntime().exec("/data/data/com.example.rampedsample/ffmpeg "+Environment.getExternalStorageDirectory()+"/Movies/ramp_video.mp4"
                    +" -map 0:v -codec copy "+Environment.getExternalStorageDirectory()+"/Movies/ramp_video2.mp4");


        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }


    



    AndroidManifest permission

    



    


    



    error

    



    04-13 16:59:55.314: W/System.err(11387): java.io.IOException: Error running exec(). Command: [/data/data/com.example.rampedsample/ffmpeg, /mnt/sdcard/Movies/ramp_video.mp4, -map, 0:v, -codec, copy, /mnt/sdcard/Movies/ramp_video2.mp4] Working Directory: null Environment: null
04-13 16:59:55.314: W/System.err(11387):    at java.lang.ProcessManager.exec(ProcessManager.java:211)
04-13 16:59:55.355: W/System.err(11387):    at java.lang.Runtime.exec(Runtime.java:168)
04-13 16:59:55.355: W/System.err(11387):    at java.lang.Runtime.exec(Runtime.java:241)
04-13 16:59:55.355: W/System.err(11387):    at java.lang.Runtime.exec(Runtime.java:184)
04-13 16:59:55.355: W/System.err(11387):    at com.example.rampedsample.MainActivity.onCreate(MainActivity.java:18)
04-13 16:59:55.355: W/System.err(11387):    at android.app.Activity.performCreate(Activity.java:5008)
04-13 16:59:55.355: W/System.err(11387):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)


    


  • Android ffmpeg command shows java.io.IOException: Error running exec()

    13 April 2015, by Jamal

    I would like to use ffmpeg binary executable in my Android project.for this purpose I have used pre built ffmpeg Android binary from this(https://github.com/hiteshsondhi88/ffmpeg-android/releases/download/v0.3.3/prebuilt-binaries.zip) link.

    As per procedure I have to place the executable file into /data/data/com.example.rampedsample directory, here com.example.rampedsample is my project packageName.I couldn’t find this location in my device as it is un rooted.So I pasted that executable into Android emulator’s com.example.rampedsample directory using DDMS perspective.

    In my Activity used the below code

    try {
               Process p = Runtime.getRuntime().exec("/data/data/com.example.rampedsample/ffmpeg "+Environment.getExternalStorageDirectory()+"/Movies/ramp_video.mp4"
                       +" -map 0:v -codec copy "+Environment.getExternalStorageDirectory()+"/Movies/ramp_video2.mp4");


           } catch (IOException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
           }

    AndroidManifest permission

    error

    04-13 16:59:55.314: W/System.err(11387): java.io.IOException: Error running exec(). Command: [/data/data/com.example.rampedsample/ffmpeg, /mnt/sdcard/Movies/ramp_video.mp4, -map, 0:v, -codec, copy, /mnt/sdcard/Movies/ramp_video2.mp4] Working Directory: null Environment: null
    04-13 16:59:55.314: W/System.err(11387):    at java.lang.ProcessManager.exec(ProcessManager.java:211)
    04-13 16:59:55.355: W/System.err(11387):    at java.lang.Runtime.exec(Runtime.java:168)
    04-13 16:59:55.355: W/System.err(11387):    at java.lang.Runtime.exec(Runtime.java:241)
    04-13 16:59:55.355: W/System.err(11387):    at java.lang.Runtime.exec(Runtime.java:184)
    04-13 16:59:55.355: W/System.err(11387):    at com.example.rampedsample.MainActivity.onCreate(MainActivity.java:18)
    04-13 16:59:55.355: W/System.err(11387):    at android.app.Activity.performCreate(Activity.java:5008)
    04-13 16:59:55.355: W/System.err(11387):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)