我使用 CoreImage 将实时效果应用于使用 AVPlayer 播放的视频。问题是当播放器暂停时,如果您使用滑块调整过滤器参数,则不会应用过滤器。
let videoComposition = AVMutableVideoComposition(asset: asset, applyingCIFiltersWithHandler: {[weak self] request in
// Clamp to avoid blurring transparent pixels at the image edges
let source = request.sourceImage.clampedToExtent()
let output:CIImage
if let filteredOutput = self?.runFilters(source, filters: array)?.cropped(to: request.sourceImage.extent) {
output = filteredOutput
} else {
output = source
}
// Provide the filter output to the composition
request.finish(with: output, context: nil)
})
Run Code Online (Sandbox Code Playgroud)
作为解决方法,我使用了这个在 iOS 12.4 之前有效的答案,但在 iOS 13 beta 6 中不再有效。寻找适用于 iOS 13 的解决方案。
我已经创建了一个音乐应用程序,现在我想添加一个功能来从锁定屏幕和控制中心控制音乐,但我收到错误,MPRemoteCommandCenter 不在范围内。
这是我的代码的样子。
我正在 XCode 12 中进行开发,但针对的是 iOS 12.4。
import UIKit
import AVKit
class SongViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let swipeRight = UISwipeGestureRecognizer(target: self, action: #selector(respondToSwipeGesture))
swipeRight.direction = .right
self.view.addGestureRecognizer(swipeRight)
let swipeLeft = UISwipeGestureRecognizer(target: self, action: #selector(respondToSwipeGesture))
swipeLeft.direction = .left
self.view.addGestureRecognizer(swipeLeft)
setupRemoteTransportControls()
setupNowPlaying()
}
func setupRemoteTransportControls() {
let commandCenter = MPRemoteCommandCenter.shared()
commandCenter.playCommand.addTarget { [unowned self] event in
print("Play command - is playing: \(self.player.isPlaying)")
if !self.player.isPlaying {
self.play()
return .success
}
return .commandFailed
}
// Add handler for …Run Code Online (Sandbox Code Playgroud) 因此,我创建了一个名为“VideoElement”的视图,当父视图加载时,它将在后台播放视频。效果很好。但是,我不知道如何实现暂停/恢复系统。我想更改一个变量(var“paused”),该变量在 true 时暂停视频,在 false 时恢复播放。这有点管用。具体来说,当“暂停”为真时,视频暂停。但是,当它变为 false 时,视频不会恢复播放。
也许它可能与“updateUIViewController”有关?另外,我不知道为什么“暂停”必须是绑定变量而不是状态变量(@State 不起作用)。任何帮助将不胜感激。谢谢!
import SwiftUI
import AVKit
struct VideoElement: View {
var fileName: String
@Binding var paused: Bool //this controls playback
var body: some View {
let player = AVPlayer(url: URL(fileURLWithPath: Bundle.main.path(forAuxiliaryExecutable: fileName)!))
AVPlayerControllerRepresented(player: player)
.onAppear {
player.play()
}
.onChange(of: paused, perform: { paused in
if paused {
player.pause()
}
else {
player.play() //should play the video, does not
print("resume") //this runs, so above should've run also
}
})
}
}
}
struct AVPlayerControllerRepresented …Run Code Online (Sandbox Code Playgroud) ios avplayer avplayerviewcontroller swiftui uiviewrepresentable
我正在使用AVPlayer对象进行视频播放,并具有调整播放器速率的控件.
除了每次按下停止/暂停按钮时AVplayer对象的速率值似乎重置为1.0,这一切都正常.有没有办法防止这种情况发生?
非常感谢.
您好,我正在使用 AVFoundation Framework 播放来自互联网的剪辑。我用AVPlayerItem playerItemWithURL:URL
现在我想检查从该视频文件接收到的字节的大小。我在此页面上找不到任何相关内容: https //developer.apple.com/library/mac/#documentation/AVFoundation/Reference/AVPlayerItem_Class/Reference/Reference.html
那么有没有办法找到接收到的字节大小?
我正在尝试使用以下代码播放audiio,但它没有播放.任何形式的帮助将非常感激.
NSError *sessionError = nil;
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback withOptions:AVAudioSessionCategoryOptionMixWithOthers error:&sessionError];
[[AVAudioSession sharedInstance] setActive: YES error: nil];
AVPlayerItem *item = [AVPlayerItem playerItemWithURL:[NSURL URLWithString:audioUrl]];
[self setPlayer:[[AVPlayer alloc] initWithPlayerItem:item]];
[[self player] setActionAtItemEnd:AVPlayerActionAtItemEndNone];
[[self player] play];
Run Code Online (Sandbox Code Playgroud) 我使用AVPlayer创建了自己的视频播放器,除了隐藏式字幕外,其他所有功能都可以正常工作。我有一个正在测试的视频,而且我知道隐藏式字幕没有被嵌入。我可以在其他视频查看器中将其禁用。
closedCaptionDisplayEnabled
Run Code Online (Sandbox Code Playgroud)
我将AVPlayer上的该属性设置为NO,并记录了该属性以确保将其设置为no,但标题仍会出现。有谁知道为什么会这样吗?
延迟约为10秒。我的代码段。这是HomeController的* .m文件:
@interface HomeController ()
@property(nonatomic, strong) AVPlayerViewController *playerViewController;
@implementation HomeController
- (void)viewDidLoad
{
[super viewDidLoad];
...
self.playerViewController = [[AVPlayerViewController alloc] init];
}
- (IBAction)watchDemoToggle:(id)sender {
NSURL *url = [NSURL URLWithString:@"http://blahblahblah.com/demo.mp4"];
AVURLAsset *asset = [AVURLAsset assetWithURL: url];
AVPlayerItem *playerItem = [AVPlayerItem playerItemWithAsset:asset];
if(playerItem)
{
AVPlayer *player = [[AVPlayer alloc] initWithPlayerItem:playerItem];
self.playerViewController.player = player;
[self.playerViewController.player addObserver:self forKeyPath:@"status" options:0 context:nil];
[self.playerViewController setShowsPlaybackControls:NO];
[self presentViewController:self.playerViewController animated:YES completion:^{
[self.playerViewController.player play];
self.playerViewController.showsPlaybackControls = YES;
}];
}
}
#pragma mark - KVO
- (void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object …Run Code Online (Sandbox Code Playgroud) 我已使用以下代码从下载视频URL。下载视频效果很好。
func downloadVideo(){
Alamofire.request("https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4").downloadProgress(closure:{ (progress) in
print(progress.fractionCompleted)
self.progressView.progress = Float(progress.fractionCompleted)
}).responseData{ (response) in
print(response.result)
print(response.result.value!)
print(response.result.description)
if let data = response.result.value {
let obj = String(data: data, encoding: .utf8)
let player = AVPlayer(url: URL(string: obj!)!)
self.playerController.player = player
self.addChildViewController(self.playerController)
self.view.addSubview(self.playerController.view)
self.playerController.view.frame = self.view.frame
player.play()
}
}
Run Code Online (Sandbox Code Playgroud)
但我想在播放此视频 AVPlayer
我发现“可能是视频”下载为NSData。是正确的。?下载完成后,任何人都可以帮助我如何播放此视频吗?
如果有人可以建议一些其他代码供您使用进度条下载视频,然后在Swift 3.0中播放它,那将是很好的。
TIA。
我正在尝试使用AVPlayer播放H.265视频文件(两者都在iOS 10,11中).以下是代码:
let fileUrl = Bundle.main.url(forResource: "sample-h265-360", withExtension: "mp4")
player = AVPlayer(url: fileUrl!)
player?.play()
Run Code Online (Sandbox Code Playgroud)
音频播放正常,但视频没有显示(我正在使用AVPlayerViewController).我已经读过iOS 11支持H.265但结果对我来说是相同的(音频播放但视频没有显示).
我尝试传输文件并使用其他应用程序播放.它与ShareIt一起运行良好.有人可以建议图书馆播放这些内容吗?或内置的音乐播放器分享使用的是什么?我的代码中有错误吗?有没有人成功使用AVPlayer播放H.265文件?