我有一个包含许多子图的图.
fig = plt.figure(num=None, figsize=(26, 12), dpi=80, facecolor='w', edgecolor='k')
fig.canvas.set_window_title('Window Title')
# Returns the Axes instance
ax = fig.add_subplot(311)
ax2 = fig.add_subplot(312)
ax3 = fig.add_subplot(313)
Run Code Online (Sandbox Code Playgroud)
如何向子图添加标题?
fig.suptitle为所有图形添加标题,虽然ax.set_title()存在,但后者不会为我的子图添加任何标题.
谢谢您的帮助.
编辑:纠正错误set_title().谢谢Rutger Kassies
我正在尝试使用ffmpeg将文本字幕添加到.mp4容器中:
ffmpeg -i input.mp4 -i input.srt -map 0.0 -map 0.1 -map 1.0 output.mp4
Run Code Online (Sandbox Code Playgroud)
当我试图运行这一行时,它给了我一个错误:
流映射的数量必须与输出流的数量匹配.
如果我尝试将mp4更改为mkv(虽然mp4支持文本字幕),如下所示:
ffmpeg -i input.mp4 -i input.srt -map 0.0 -map 0.1 -map 1.0 output.mkv
Run Code Online (Sandbox Code Playgroud)
它正确地映射了流,但是给出了一个错误:
未找到输出流#0.2的编码器(编解码器ID 94210)
当我发射
ffmpeg -codecs
Run Code Online (Sandbox Code Playgroud)
我可以看到支持srt编解码器作为解码器和编码器,但是我不确定用于mp4和mkv subs编码的是什么,以及我是需要打开它还是单独编译.
我正在使用ggplot2来改善降水条件.
这是我想要实现的可重现的例子:
library(ggplot2)
library(gridExtra)
secu <- seq(1, 16, by=2)
melt.d <- data.frame(y=secu, x=LETTERS[1:8])
m <- ggplot(melt.d, aes(x=x, y=y)) +
geom_bar(fill="darkblue") +
labs(x="Weather stations", y="Accumulated Rainfall [mm]") +
opts(axis.text.x=theme_text(angle=-45, hjust=0, vjust=1),
title=expression("Rainfall"), plot.margin = unit(c(1.5, 1, 1, 1), "cm"),
plot.title = theme_text(size = 25, face = "bold", colour = "black", vjust = 5))
z <- arrangeGrob(m, sub = textGrob("Location", x = 0, hjust = -3.5, vjust = -33, gp = gpar(fontsize = 18, col = "gray40"))) #Or guessing x and y …Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,我希望导航栏显示标题和副标题.
在这种程度上,我将以下代码添加到我的视图控制器:
// Replace titleView
CGRect headerTitleSubtitleFrame = CGRectMake(0, 0, 200, 44);
UIView* _headerTitleSubtitleView = [[[UILabel alloc] initWithFrame:headerTitleSubtitleFrame] autorelease];
_headerTitleSubtitleView.backgroundColor = [UIColor clearColor];
_headerTitleSubtitleView.autoresizesSubviews = YES;
CGRect titleFrame = CGRectMake(0, 2, 200, 24);
UILabel *titleView = [[[UILabel alloc] initWithFrame:titleFrame] autorelease];
titleView.backgroundColor = [UIColor clearColor];
titleView.font = [UIFont boldSystemFontOfSize:20];
titleView.textAlignment = UITextAlignmentCenter;
titleView.textColor = [UIColor whiteColor];
titleView.shadowColor = [UIColor darkGrayColor];
titleView.shadowOffset = CGSizeMake(0, -1);
titleView.text = @"";
titleView.adjustsFontSizeToFitWidth = YES;
[_headerTitleSubtitleView addSubview:titleView];
CGRect subtitleFrame = CGRectMake(0, 24, 200, 44-24);
UILabel *subtitleView …Run Code Online (Sandbox Code Playgroud) iphone title subtitle uinavigationcontroller uinavigationitem
我正在尝试使用track标签添加语音音频文件的文本转录.视频标记的默认行为是显示它们(有效).默认情况下,音频标签似乎缺少某种"画布"(即使没有视频也会显示视频标签的黑色区域)以自动显示字幕.我可以使用视频标签,但它会感觉像一个丑陋的解决方法.我不想破坏我的代码的语义.
是否有某种CSS强制显示这些区域将显示subtile?
<audio controls>
<source src="test.ogg" type="audio/ogg">
<source src="test.mp3" type="audio/mpeg">
<track kind="subtitles" label="English subtitles" src="/test.vtt" srclang="en" default></track>
Your browser does not support the audio tag.
</audio>
Run Code Online (Sandbox Code Playgroud)
谢谢你的阅读.
我正在尝试使用FFMpeg将包含视频,音频和字幕流的视频文件转换为另一种格式.但是,ffmpeg抱怨字幕格式 - 它无法解码流.由于我不需要这个字幕流,我想知道如何在转换过程中禁用字幕流解码?
我正在尝试创建一个小程序,它将采用mp4视频,并使用AVFoundation框架从视频中提取字幕信息.在这样做时,它将以startTimeOfSubtitle,endTimeofSubtitle和subtitleString的格式创建并返回NSDictionary的NSDrray元素.
这是我从AVFoundation的发行说明中收集的内容.任何代码示例都将非常感激.
提前致谢.
根据语言和其他标准选择音频和字幕媒体
AVFoundation现在提供了一些功能,用于发现视听媒体资源可能提供的选项,以适应不同的语言首选项,可访问性要求,自定义应用程序配置和其他需求,以及选择这些选项进行回放.例如,资源可以包含多个可听选项,每个选项具有以不同语言说出的对话,以被选择用于回放以排除其他语言.还可以为诸如字幕之类的易读媒体提供多种语言的类似选项.基于文件的内容和HTTP Live Streaming内容都可以提供媒体选项.要获取有关AVAsset实例提供的选项组的信息,请执行以下操作:•使用AVAsynchronousKeyValueLoading加载AVAsset键availableMediaCharacteristicsWithMediaSelectionOptions的值.加载完成后, - [AVAsset availableMediaCharacteristicsWithMediaSelectionOptions]将提供可能包含AVMediaCharacteristicAudible,AVMediaCharacteristicLegible或AVMediaCharacteristicVisual的NSArray,或这些的任意组合,以指示互斥选项组的可用性.
•可以通过 - [AVAsset mediaSelectionGroupForMediaCharacteristic:]获得具有感兴趣的媒体特征的每组互斥选项.要获取声音选项,请传递AVMediaCharacteristicAudible等.每个组由AVMediaSelectionGroup的实例表示.组中的每个选项都由AVMediaSelectionOption的实例表示.这两个类都在AVMediaSelectionGroup.h中定义.
检查组中的可用选项并筛选它们以供回放选择:•AVMediaSelectionGroup提供AVMediaSelectionOptionFiltering类别中的方法,根据选项是否可播放,匹配所需的区域设置或是否具有选项,对AVMediaSelectionOptions数组执行常见的筛选操作或者没有特殊的媒体特征,例如它们是否提供可访问性的特定功能.AVMediaFormat.h中定义了可用于过滤媒体选择选项的媒体特征,表明存在可访问性功能.
•AVMediaSelectionOption提供有关可用于在用户界面中显示的选项的信息,该选项允许用户在可用选项中或在客户端定义的过滤操作的实现中进行选择.作为使用自定义媒体资源的应用程序中的客户端定义的过滤选项的示例,仅当选项的关联元数据包含特定值时,才可以认为选项有资格进行选择.
•要选择组内的特定选项进行播放,请使用 - [AVPlayerItem selectMediaOption:inMediaSelectionGroup:].要发现当前选择播放的选项,请使用 - [AVPlayerItem selectedMediaOptionInMediaSelectionGroup:].
关于字幕的建议
在可用的清晰选项中向用户显示选项以及根据用户偏好在可用的易读选项中进行选择时,应特别小心.一些易读的内容包含"强制"字幕,这意味着根据内容作者的意图,当用户既没有表示对字幕的显示的偏好也没有明确选择字幕选项时,应该显示字幕.当对对话或文本的理解仍然被认为是必要的时,通常使用强制字幕以便以内容提供者假设的语言来传达口语对话或可见文本的含义,这些语言将不被普遍理解.请确保您的应用可以按照以下建议正确显示.
用于特征AVMediaCharacteristicLegible的AVMediaSelectionGroup可以提供两种类型的清晰选项:1)用于显示被认为是选择性的可读内容以及被认为是必要的内容,以及2)仅用于显示基本易读内容.包含基本内容的易读AVMediaSelectionOptions仅具有媒体特征AVMediaCharacteristicContainsOnlyForcedSubtitles(在AVMediaFormat.h中定义).当提供在选择界面中向最终用户显示的清晰选项时,或者当根据用户对语言的偏好考虑用于自动选择的字幕选项时,应排除具有特征AVMediaCharacteristicContainsOnlyForcedSubtitles的清晰选项.+ [AVMediaSelectionOption mediaSelectionOptionsFromArray:withoutMediaCharacteristics:],指定AVMediaCharacteristicContainsOnlyForcedSubtitles作为要排除的特征,可用于获得适合在选择界面中提供给最终用户或根据用户偏好考虑选择的清晰选项.
如果用户表示没有偏好或不选择清晰可读内容,则应用程序应选择具有特征AVMediaCharacteristicContainsOnlyForcedSubtitles(如果有)的回放清晰选项之一.对于包含仅使用强制字幕的清晰选项的大多数资源,可以根据当前的可听选择在其中进行适当的选择.使用 - [AVMediaSelectionOption associatedMediaSelectionOptionInMediaSelectionGroup:]获取与声音选项关联的清晰选项.如果没有其他可供选择的方法,则媒体选择组中第一个仅使用强制字幕的清晰选项是适当的默认选项.
我可以分配一次字幕,但之后如果我试图改变字幕.它不接受新的,它每次显示前一个.
下面的代码我用来改变字幕.
MediaPlayer mediaPlayer;
public void changeSubtitle()
{
//disable subtitle if it has
if(textTrackIndex!=0){
mediaPlayer.deselectTrack(textTrackIndex);
textTrackIndex=0;
mediaPlayer.setOnTimedTextListener(null);
}
//try to asssign new subtitle
mediaPlayer
.addTimedTextSource(
(Environment.getExternalStorageDirectory()
.getPath()
+ "/"+"filename",
MediaPlayer.MEDIA_MIMETYPE_TEXT_SUBRIP);
int textTrackIndex = findTrackIndexFor(TrackInfo.MEDIA_TRACK_TYPE_TIMEDTEXT,mediaPlayer.getTrackInfo());
if (textTrackIndex >= 0) {
mediaPlayer.selectTrack(textTrackIndex);
} else {
Log.w(TAG, "Cannot find text track!");
}
mediaPlayer.setOnTimedTextListener(this);
}
private int findTrackIndexFor(int mediaTrackType, TrackInfo[] trackInfo)
{
int index = -1;
for (int i = 0; i < trackInfo.length; i++) {
if (trackInfo[i].getTrackType() == mediaTrackType) {
return i;
} …Run Code Online (Sandbox Code Playgroud) 通过添加.ass字幕跟踪与ffmpeg的一个MKV视频,它不设置为默认的轨道,所以在播放你必须手动打开字幕.是否可以设置字幕轨道的默认标志?
使用的ffmpeg命令:
ffmpeg -i video.mp4 -i subtitles.ass -c:v libx264 -preset veryslow \
-pix_fmt yuv420p10le -c:a copy -c:s copy output.mkv
Run Code Online (Sandbox Code Playgroud)
请注意,我想保留.ass字幕格式,而不是将字幕转换为mov_text,如同在类似问题中建议: 如何使用ffmpeg设置默认流
之后可以使用mkvpropedit设置默认标志,如下所示:
mkvpropedit output.mkv --edit track:s1 --set flag-default=1
Run Code Online (Sandbox Code Playgroud)
但是有可能直接用ffmpeg做到这一点吗?
我可以使用以下代码使用Android应用程序显示字幕(webvtt)
MediaTrack subtitle = new MediaTrack.Builder(0, MediaTrack.TYPE_TEXT)
.setName("English")
.setSubtype(MediaTrack.SUBTYPE_SUBTITLES)
.setContentId(mediaObject.getSubtitleUrl())
.setLanguage(Locale.getDefault())
.build();
tracks.add(subtitle);
Run Code Online (Sandbox Code Playgroud)
我的问题是,当媒体最初加载到Chromecast时,这种方法很有效,所以如果我想在媒体播放后再添加字幕,我必须重新加载媒体.
这有解决方法吗?我已经看到一些应用程序正在执行所需的行为.
subtitle ×10
ffmpeg ×3
android ×2
video ×2
avfoundation ×1
chromecast ×1
css ×1
ggplot2 ×1
html5-audio ×1
ios ×1
iphone ×1
matplotlib ×1
mp4 ×1
plot ×1
python ×1
r ×1
srt ×1
stream ×1
title ×1