Ich habe erfolgreich AVAssetWriter zum Aufnehmen und Speichern von Videos auf meiner Kamera eingerichtet. Das einzige Problem besteht darin, dass das erste Bild des aufgezeichneten Videos ein leerer weißer Rahmen ist. Kann ich das irgendwie umgehen? Was ist los?AVAssetWriter Videoaufnahme in Swift?
0
A
Antwort
1
Machst du irgendeine Manipulation an Videoframes? In meinem Fall habe ich die Größe der Videorahmen vor dem Schreiben geändert. In diesem Fall wurden zunächst Audioframes geschrieben und nach wenigen Frames wurden Videoframes geschrieben. Aus diesem Grund wurden die ersten Frames in der Vorschau weiß dargestellt. Aber es war kaum in der Videowiedergabe bemerkbar.
Lösung:
überspringen Schreiben von Audio-Frames, bis Sie einen Video-Frame avasssetwriter
mit schreibenEmpfohlene Code für captureoutput
func captureOutput(_ captureOutput: AVCaptureOutput!, didOutputSampleBuffer sampleBuffer: CMSampleBuffer, from connection: AVCaptureConnection!) {
if CMSampleBufferDataIsReady(sampleBuffer) == false
{
// Handle error
return;
}
startTime = CMSampleBufferGetPresentationTimeStamp(sampleBuffer)
if videoWriter.status == AVAssetWriterStatus.Unknown {
videoWriter.startWriting()
videoWriter.startSessionAtSourceTime(startTime)
return
}
if videoWriter.status == AVAssetWriterStatus.Failed {
// Handle error here
return;
}
// Here you collect each frame and process it
if(recordingInProgress){
if let _ = captureOutput as? AVCaptureVideoDataOutput {
if videoWriterInput.isReadyForMoreMediaData{
videoWriterInput.append(sampleBuffer)
video_frames_written = true
}
}
if let _ = captureOutput as? AVCaptureAudioDataOutput {
if audioWriterInput.isReadyForMoreMediaData && video_frames_written{
audioWriterInput.append(sampleBuffer)
}
}
}
}
Verwandte Themen
- 1. AVAssetWriter Warteschlangenführung Swift 3
- 2. Beschädigte Videoaufnahme von Audio und Video mit AVAssetWriter
- 3. Videoaufnahme auf iOS: Was ist der Unterschied zwischen der Videoaufnahme mit AVMovieFileOutput oder AVAssetWriter?
- 4. Flash funktioniert nicht während der Videoaufnahme in Swift 3.0
- 5. Videoaufnahme in iPhone
- 6. Videoaufnahme Ausgabe in IOS
- 7. Videoaufnahme in Nougat?
- 8. Kamera2 Videoaufnahme
- 9. Echtzeit-Videoaufnahme?
- 10. Wie verwende ich AVAssetWriter?
- 11. AVAssetWriter ignoriert den Transformationswert
- 12. AVAssetWriter kontinuierliche Segmente
- 13. Videokomprimierung mit AVAssetWriter
- 14. Aufnahme Video mit AVAssetWriter
- 15. iOS: AVAssetWriterInput nicht Audio in Videoaufnahme speichern
- 16. Erklärung für CVBufferPool mit AVAssetWriter?
- 17. MediaRecorder Videoaufnahme im Hochformat
- 18. Videoaufnahme hat kein Audio?
- 19. Videoaufnahme mit GPUImage Android
- 20. Videoaufnahme auf MacOS
- 21. ios - Pause Videoaufnahme
- 22. Html5 Videoaufnahme und -upload?
- 23. Schlechte camera2 Videoaufnahme-Leistung
- 24. Videoaufnahme mit Mobile Vision Gesichtserkennung
- 25. Problem mit Videoaufnahme nach Autofokus in Android
- 26. Bildschirm Videoaufnahme mit Ton in Android
- 27. Rohdaten von einer Videoaufnahme in JMF lesen
- 28. Videoaufnahme von nur einem Fenster
- 29. Python OpenCV Videoaufnahme schnell vorwärts
- 30. OpenCV Videoaufnahme und fps Problem
Ich dachte, das könnte funktionieren, aber es scheint, Obwohl ich Audioframes nur schreibe, wenn Videoframes geschrieben werden, gibt es immer noch einen weißen Frame, in dem weder Video noch Au Dio sind aufgezeichnet. Irgendwelche anderen Vorschläge? –
können Sie die aufgenommene Datei teilen und ein Protokoll für den ersten Sample-Puffer sein? – manishg
Hier ist ein Beispiel für das Video https://drive.google.com/file/d/0B2QAK-lm39WhdVlqa0hSY0tNaGM/view?usp=sharing. Die Art und Weise, wie der Rekorder eingerichtet wird, besteht darin, ein neues Segment alle eine Sekunde aufzunehmen, aber das Problem ist nicht damit, weil es immer noch einen leeren Rahmen ohne Video oder Audio für die erste Sekunde der Aufzeichnung gibt. –