我一直在使用mutagen来阅读和编写MP3标签,但我希望能够将专辑封面直接嵌入到文件中.
大家好,我坚持在mp3文件上添加专辑封面.
我已经研究和谷歌搜索这个问题,但还没有解决方案,关于ffmpeg
添加图像(专辑封面)到mp3使用此脚本的文档:
ffmpeg -i input.mp3 -i cover.png -c copy -map 0 -map 1 -metadata:s:v title="Album cover" -metadata:s:v comment="Cover (Front)" out.mp3
Run Code Online (Sandbox Code Playgroud)
来自:http://www.ffmpeg.org/ffmpeg-all.html#mp3
但它在我的控制台输出上不起作用是:
Unrecognized option 'c'
Failed to set value 'copy' for option 'c'
Run Code Online (Sandbox Code Playgroud)
我正在寻找另一种解决方案,我来自:http://trac.ffmpeg.org/ticket/2221:
ffmpeg -i input.mp3 -i cover.png -map 0:0 -map 1:0 -c copy -id3v2_version 3 -metadata:s:v title="Album cover" -metadata:s:v comment="Cover (Front)" out.mp3
Run Code Online (Sandbox Code Playgroud)
也返回相同的输出,我已经研究为什么返回:
Unrecognized option 'c'
Failed to set value 'copy' for option 'c'
Run Code Online (Sandbox Code Playgroud)
但是没有身体有同样的问题.有人可以帮帮我吗?
nb:我使用ubuntu 12.04和ffmpeg版本0.8.6-4:0.8.6-0.谢谢
我正试图在我的音乐播放器应用程序中获取每首歌的专辑封面.但除了黑屏,没有专辑封面,我什么都没得到.似乎代码中没有错误,除了我从未听说过的日志猫错误.
这是包含按钮单击的侦听器的Java文件.一旦我点击按钮在我的应用程序中,我在logcat中得到一个错误:Bacon1.java
import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.os.Environment;
import android.support.design.widget.Snackbar;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
public class Bacon1 extends Activity {
private static final int MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE = 1;
private static int RESULT_LOAD_IMAGE = 1;
public ArrayList<HashMap<String, String>> songsList = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_bacon1);
Button button4 = (Button) findViewById(R.id.button4);
button4.setOnClickListener(
new Button.OnClickListener()
{
public void …
Run Code Online (Sandbox Code Playgroud) 我希望能够检测音频文件是否嵌入了专辑封面,如果没有,则将专辑封面添加到该文件中.我正在使用诱变剂
1)检测专辑封面.是否有比这个伪代码更简单的方法:
from mutagen import File
audio = File('music.ext')
test each of audio.pictures, audio['covr'] and audio['APIC:']
if doesn't raise an exception and isn't None, we found album art
Run Code Online (Sandbox Code Playgroud)
2)我发现这是为了将专辑封面嵌入到mp3文件中: 如何使用Python将专辑封面嵌入到MP3中?
如何将专辑封面嵌入其他格式?
编辑:嵌入mp4
audio = MP4(filename)
data = open(albumart, 'rb').read()
covr = []
if albumart.endswith('png'):
covr.append(MP4Cover(data, MP4Cover.FORMAT_PNG))
else:
covr.append(MP4Cover(data, MP4Cover.FORMAT_JPEG))
audio.tags['covr'] = covr
audio.save()
Run Code Online (Sandbox Code Playgroud) 我正在尝试构建一个MP3播放器,我希望ImageView能够显示各个歌曲的专辑封面.我尝试了以下,但它不起作用.
albumcover = (ImageView) findViewById(R.id.cover);
String coverPath = songsList.get(songIndex).get(MediaStore.Audio.Albums.ALBUM_ART);
Drawable img = Drawable.createFromPath(coverPath);
albumcover.setImageDrawable(img);
Run Code Online (Sandbox Code Playgroud)
当我尝试播放歌曲时,我得到的只是ImageView中的空白屏幕.
我们目前正在使用: 获取专辑封面的路径MediaStore.Audio.AlbumColumns.ALBUM_ART
,并且正在成功获取路径,像素 3a(Android 10)除外。经过一番研究,在ALBUM_ART被废弃API 29及以上,如下所示:这里
在此链接中,它说:“应用程序可能没有直接访问此路径的文件系统权限。应用程序不应尝试直接打开此路径,而应使用 ContentResolver#loadThumbnail 来获得访问权限。”
我的问题是:
1) 我已经在应用程序清单上说明了外部存储访问权限 (READ_EXTERNAL_STORAGE) 并且在应用程序内导航时请求许可。我必须提供哪些权限才能访问专辑封面才能获得路径?
2)我似乎无法在线找到 loadThumbnail 上的任何内容(甚至在 ContentResolver 类上通过代码也找不到,而我正在使用目标并编译 SDK 29),如果 1) 无法完成,那么我如何使用 loadThumbnail为什么它没有显示在代码上?
提前致谢。
我正在开发一个简单的Android音频播放器.我想在设备中列出相册.
我试过这段代码
String where = new String();
where = MediaStore.Audio.Media.IS_MUSIC + "=1";
private Cursor managedCursor;
managedCursor = managedQuery(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
new String[] {
MediaStore.Audio.Media.TITLE,
MediaStore.Audio.Media._ID,
MediaStore.Audio.Media.ALBUM,
MediaStore.Audio.Media.ALBUM_ID,
MediaStore.Audio.Media.ARTIST,
MediaStore.Audio.Media.ARTIST_ID
},
where,
null,
MediaStore.Audio.Media.DEFAULT_SORT_ORDER
);
ListAdapter adapter = new AlbumListAdapter(
this,
R.layout.albumlist_item,
managedCursor,
new String[] {
MediaStore.Audio.Media.ALBUM,
MediaStore.Audio.Media.ARTIST
},
new int[] {
R.id.text_album,
R.id.text_artist
}
);
setListAdapter(adapter);
Run Code Online (Sandbox Code Playgroud)
但是这段代码列出了设备中的所有歌曲.
Android Media Store DB的结构是什么.
任何人请帮忙.
我正在制作自己的mp3标签,到目前为止一切都很好.虽然我坚持阅读专辑艺术标签.
我想知道如何在C#.NET图片框中显示封面,但是关于该特定标签的所有内容都让我感到困惑.
我知道我可以从这样的文件中获取标签
txtAlbum.Text = currentFile.Tag.Album;
Run Code Online (Sandbox Code Playgroud)
但我需要做的就是从文件中抓取图片并将其打包在图片框中.然后我想知道如何将图片(jpg,png)写入文件并覆盖现有文件.
非常感谢任何帮助,感谢您宝贵的时间.
从iOS 8开始,来自iPad和iPhone设备的专辑封面的所有数据阵列都返回一个空数组.从本地文件(NSBundle)中提取时,我可以获得专辑封面或封面艺术,但从iTunes或设备本身购买的任何歌曲都会返回空白.
我已经更新到最新的XCode,两台设备上的最新iOS以及iTunes.我已经在iPad 4,iPad Air,iPhone 5,iPhone 6上进行了测试.希望有人知道发生了什么,它现在似乎是iOS 8中的一个已知错误.此外,我可以播放资产并检索歌曲名称和艺术家等内容.
MPMediaQuery *songQuery = [MPMediaQuery songsQuery];
NSArray *itemsFromGenericQuery = [songQuery items];
NSMutableArray *songsList = [[NSMutableArray alloc] initWithArray:itemsFromGenericQuery];
MPMediaItem *mediaItem = (MPMediaItem *)[songsList objectAtIndex:0];
NSURL *url = [mediaItem valueForProperty:MPMediaItemPropertyAssetURL];
AVAsset *asset = [[AVURLAsset alloc] initWithURL:url options:nil];
NSArray *commonArray = [assets commonMetadata];
//Test A
NSArray *albumArray = [AVMetadataItem metadataItemsFromArray:commonArray filteredByIdentifier:AVMetadataIdentifieriTunesMetadataCoverArt];
NSLog(@"commonArray = %lu",(unsigned long)[commonArray count]); //Returns 3
NSLog(@"albumArray has %lu",(unsigned long)[albumArray count]); //Returns 0 or null
//Test B
for (AVMetadataItem *metadataItem in asset.commonMetadata) {
if …
Run Code Online (Sandbox Code Playgroud) 我使用AVAudioPlayer制作了自定义播放器.现在,我想获取音频文件的详细信息,例如资源文件夹中添加的艺术家姓名,专辑名称等.
MPMusicPlayer提供了用于获取详细信息的API,但它使用的是iPod库,而不是从应用程序的沙箱获取资源.因此,MPMusicPlayer不会在那种情况下工作.
那么,我们如何才能在iPhone中获取音频文件的细节.