Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 更改MP3文件ID3标签_Php_Mp3 - Fatal编程技术网

Php 更改MP3文件ID3标签

Php 更改MP3文件ID3标签,php,mp3,Php,Mp3,我最近发现了一个网站,允许你上传一个文件并更改其ID3标签(Image,Title,所有其他内容),目前我将文件从另一个网站解析后存储在一个目录中,然后再将其推到外部 我想知道是否有人知道一个库,在那里我可以阅读如何在PHP中更改默认ID3标记?这是PHP中已有的功能吗 if( writeTags($row['title'],$new) ) { $fileName = rand(000000000,999999999).'_'.rand(0000000000,9999999999).'

我最近发现了一个网站,允许你上传一个文件并更改其ID3标签(ImageTitle,所有其他内容),目前我将文件从另一个网站解析后存储在一个目录中,然后再将其推到外部

我想知道是否有人知道一个库,在那里我可以阅读如何在PHP中更改默认ID3标记?这是PHP中已有的功能吗

if( writeTags($row['title'],$new) ) { 
    $fileName = rand(000000000,999999999).'_'.rand(0000000000,9999999999).'_'.rand(000000000,999999999).'.mp3';
    $imageName = rand(000000000,999999999).'_'.rand(0000000000,9999999999).'_'.rand(000000000,999999999).'.jpg';
    rename($new, $DPATH.'uploads/tracks/'.$fileName);
    save_image($row['image'],$DPATH.'uploads/media/'.$imageName);
    $track['uid'] = 151;
    $track['title'] = $row['title'];
    $track['description'] = '';
    # fileName
    $track['name'] = $fileName;
    # make tag
    $track['tag'] = $tag.',';
    # download image
    $track['art'] = $imageName;
    # today date
    $track['release'] = date("Y-m-d");
    $track['size'] = filesize($DPATH.'uploads/tracks/'.$fileName);

    $row['slippery_id'] = add_to_slippery($track);
}

    function writeTags($title,$file) { 
    $TextEncoding = 'UTF-8';
    require_once($DPATH.'cron/getid3/getid3.php');
    $getID3 = new getID3;
    $getID3->setOption(array('encoding'=>$TextEncoding));
    require_once($DPATH.'cron/getid3/write.php');
    $tagwriter = new getid3_writetags;
    $tagwriter->filename = $file;
    $tagwriter->tagformats = array('id3v1','id3v2.3');
    $tagwriter->overwrite_tags = true;
    $tagwriter->tag_encoding = $TextEncoding;
    $tagwriter->remove_other_tags = true;
    $TagData = array(
       'album'         => array($MP3TAG),
       'comment'       => array($MP3TAG),
    );
    $fd = fopen($DPATH.'cron/mp3image.png', 'rb');
    $APICdata = fread($fd, filesize($DPATH.'cron/mp3image.png')); 
    fclose($fd); 
    $TagData['attached_picture'][0]['data']          = $APICdata;
    $TagData['attached_picture'][0]['picturetypeid'] = 2; 
    $TagData['attached_picture'][0]['description']   = $MP3TAG; 
    $TagData['attached_picture'][0]['mime']          = 'image/jpeg'; 
    $tagwriter->tag_data = $TagData;

    if ($tagwriter->WriteTags()) {
        return true;
    } else {
        return false;
    }
}
我最近做了类似的事情,你可以编辑上面的代码来满足你的需求,如果你想让我帮你更多的忙,你应该在你的问题中提供你自己的代码

请注意,问这样的问题往往是你的问题如何被关闭,祝你在未来好运,我希望这能帮助你

编辑:用于获取ID3标记

我最近做了类似的事情,你可以编辑上面的代码来满足你的需求,如果你想让我帮你更多的忙,你应该在你的问题中提供你自己的代码

请注意,问这样的问题往往是你的问题如何被关闭,祝你在未来好运,我希望这能帮助你


编辑:使用它获取ID3标记。

我最近为eyeD3制作了一个PHP包装器,这是一个用于读取和更新ID3元数据的优秀python模块。请查看。
如果您熟悉Composer,则使用方法非常简单。但是,您需要使用它。然后:

  • 使用composer安装php包装器:

    composer require stormiix/php-eyed3 dev-master
    
  • 将库添加到代码中:

    require __DIR__ . '/vendor/autoload.php';
    
  • 使用以下代码读取和更新标记。

    use Stormiix\EyeD3\EyeD3;
    
    $eyed3 = new EyeD3("mp3 file path");
    $tags = $eyed3->readMeta();
    // $tags is an array that contains the following keys:
    // artist, title, album, comment(s), lyrics ..etc
    
    $meta = [
        "artist" => "MyArtist",
        "title" => "MyTitle",
        "album" => "MyAlbum",
        "comment" => "MyComment",
        "lyrics" => "MyLyrics",
        "album_art" => "cover.png"
    ];
    // Update the mp3 file with the new meta tags
    $eyed3->updateMeta($meta);
    

  • 我最近为eyeD3制作了一个PHP包装器,这是一个用于读取和更新ID3元数据的优秀python模块。请查看。
    如果您熟悉Composer,则使用方法非常简单。但是,您需要使用它。然后:

  • 使用composer安装php包装器:

    composer require stormiix/php-eyed3 dev-master
    
  • 将库添加到代码中:

    require __DIR__ . '/vendor/autoload.php';
    
  • 使用以下代码读取和更新标记。

    use Stormiix\EyeD3\EyeD3;
    
    $eyed3 = new EyeD3("mp3 file path");
    $tags = $eyed3->readMeta();
    // $tags is an array that contains the following keys:
    // artist, title, album, comment(s), lyrics ..etc
    
    $meta = [
        "artist" => "MyArtist",
        "title" => "MyTitle",
        "album" => "MyAlbum",
        "comment" => "MyComment",
        "lyrics" => "MyLyrics",
        "album_art" => "cover.png"
    ];
    // Update the mp3 file with the new meta tags
    $eyed3->updateMeta($meta);
    

  • -谷歌花了5秒钟才找到这个。下次再研究一下你的问题。@icecub什么…-谷歌花了5秒钟才找到这个。下次再研究一下你的问题。@icecub what…对meI没有帮助。我将删除我的评论,保持原样。但在我看来,PHP的本机函数需要10行代码才能实现这些功能。@icecub据我所知,您不能使用标准id3_set_tag()设置图像,但我可能错了,这就是我最初决定使用外部服务的原因。我必须同意你的看法。使用原生PHP似乎是可能的,但这是一个巨大的麻烦。图书馆确实要容易一点+我收到了1封信,因为我显然错过了为@Placeholder投票的图片。->“坏”你可以用getid3做很多事情,比如编辑所有字段、删除、更新等等。php中的一些代码可以制作一个自动化标记编辑器。这对我没有帮助。我将删除我的注释,保持原样。但在我看来,PHP的本机函数需要10行代码才能实现这些功能。@icecub据我所知,您不能使用标准id3_set_tag()设置图像,但我可能错了,这就是我最初决定使用外部服务的原因。我必须同意你的看法。使用原生PHP似乎是可能的,但这是一个巨大的麻烦。图书馆确实要容易一点+我收到了1封信,因为我显然错过了为@Placeholder投票的图片。->“坏”你可以用getid3做很多事情,比如编辑所有字段、删除、更新等等。php中的一些代码可以制作一个自动化标记编辑器。。