Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

can not open the recorded video file in recordingComplete function #55

Open
yutatoga opened this issue Apr 28, 2017 · 6 comments
Open

Comments

@yutatoga
Copy link

void ofApp::recordingComplete(ofxVideoRecorderOutputFileCompleteEventArgs& args){
    cout << "The recoded video file is now complete." << endl;
    shared_ptr<ofVideoPlayer> player = std::make_shared<ofVideoPlayer>();
    player->load(args.fileName); // error
    players.push_back(player);
}

console says

error loading asset tracks: Cannot Open

Do you know why I can't load the file there?

@timscaffidi
Copy link
Owner

Have you verified that the file exists and is playable? I'm sorry there is not much information for me to go on.

@yutatoga
Copy link
Author

Yes, the file exists and it is playable.
I uploaded my codes here to show this issue. Can you build it and check if the same error happen on your environment?

This is the step to see the issue

  1. run the app
  2. type 'r' key and then 'c' key
  3. You can see player->load(args.fileName); makes the error that is "error loading asset tracks: Cannot Open" several times (in my environment, around 10 times in while loop).

My environment is
MacOS verson 10.12.3
Xcode Version 8.3.2
openFrameworks of_v0.9.8_osx_release

@timscaffidi
Copy link
Owner

Just tested your example, and it works.

Ubuntu 16.04
gcc 5.4.0
oF 0.9.8

@yutatoga
Copy link
Author

Do you mean it works without any error message which you can see on the console? In my case the app works without crash but many error message: "error loading asset tracks: Cannot Open".

If it works without error on your environment, this issue may happen only on Mac, I guess the video file is still not ready to read in recordingComplete function.

@timscaffidi
Copy link
Owner

I get a gstreamer error, but the video plays back just fine anyway.

The recoded video file is now complete.
[verbose] ofGstVideoPlayer: loadMovie(): loading "file:///home/tim/Documents/OF/addons/ofxVideoRecorder/ofxVideoRecorderIssue55/bin/data/testMovie2017-05-11-22-04-14-262.mov"
[verbose] ofGstUtils: startPipeline(): attaching callbacks
[verbose] ofGstUtils: gstHandleMessage(): unhandled message from sink
[verbose] Pipeline is PREROLLING
[verbose] ofGstUtils: gstHandleMessage(): unhandled message from sink
[verbose] ofGstUtils: gstHandleMessage(): unhandled message from sink
[verbose] ofGstUtils: gstHandleMessage(): unhandled message from sink
[[ error ] ofGstUtils: gstHandleMessage(): embedded video playback halted for plugin, module qtdemux0  reported: This file contains no playable streams.
 error ] ofGstUtils: startPipeline(): unable to pause pipeline after 5s
[verbose] ofGstVideoPlayer: loadMovie(): loading "file:///home/tim/Documents/OF/addons/ofxVideoRecorder/ofxVideoRecorderIssue55/bin/data/testMovie2017-05-11-22-04-14-262.mov"
[verbose] ofGstUtils: startPipeline(): attaching callbacks
[verbose] Pipeline is PREROLLING
[verbose] ofGstUtils: gstHandleMessage(): unhandled message from sink
[verbose] ofGstUtils: gstHandleMessage(): unhandled message from sink
[verbose] ofGstUtils: gstHandleMessage(): unhandled message from sink
[verbose] ofGstUtils: gstHandleMessage(): unhandled message from sink
[verbose] ofGstUtils: gstHandleMessage(): unhandled message from src_0
[verbose] ofGstUtils: gstHandleMessage(): unhandled message from src_1
[verbose] ofGstUtils: gstHandleMessage(): unhandled message from src
[verbose] ofGstUtils: gstHandleMessage(): unhandled message from src
[verbose] ofGstUtils: gstHandleMessage(): unhandled message from src
[verbose] ofGstUtils: gstHandleMessage(): unhandled message from src
[verbose] ofGstUtils: gstHandleMessage(): unhandled message from player
[verbose] ofGstUtils: gstHandleMessage(): unhandled message from app_sink
[verbose] ofGstUtils: gstHandleMessage(): unhandled message from app_sink
[verbose] ofGstUtils: gstHandleMessage(): unhandled message from app_sink
[verbose] ofGstUtils: gstHandleMessage(): unhandled message from pulsesink1
[verbose] ofGstUtils: gstHandleMessage(): unhandled message from pulsesink1
[verbose] ofGstUtils: gstHandleMessage(): unhandled message from pulsesink1
[verbose] Pipeline is PREROLLED
[verbose] ofGstUtils: gstHandleMessage(): async done
[verbose] ofGstUtils: gstHandleMessage(): unhandled message from player
[verbose] ofGstUtils: gstHandleMessage(): unhandled message from pulsesink1
[verbose] ofGstUtils: gstHandleMessage(): unhandled message from app_sink
[verbose] ofGstUtils: gstHandleMessage(): unhandled message from pulsesink1
[verbose] ofGstUtils: setSpeed(): speed changed to 1
[verbose] ofGstUtils: gstHandleMessage(): unhandled message from app_sink
[verbose] ofGstUtils: gstHandleMessage(): async done
[verbose] ofGstUtils: gstHandleMessage(): unhandled message from app_sink
[verbose] ofGstUtils: gstHandleMessage(): unhandled message from app_sink
[verbose] ofGstUtils: gstHandleMessage(): unhandled message from app_sink
[verbose] ofGstUtils: gstHandleMessage(): unhandled message from app_sink
[verbose] ofGstUtils: gstHandleMessage(): unhandled message from app_sink
[verbose] ofGstUtils: gstHandleMessage(): unhandled message from app_sink
[verbose] ofGstUtils: gstHandleMessage(): end of the stream
[verbose] ofGstUtils: gstHandleMessage(): unhandled message from app_sink
[verbose] ofGstUtils: gstHandleMessage(): unhandled message from pulsesink1
[verbose] ofGstUtils: gstHandleMessage(): async done
[verbose] ofGstUtils: gstHandleMessage(): end of the stream
[verbose] ofGstUtils: gstHandleMessage(): unhandled message from app_sink
[verbose] ofGstUtils: gstHandleMessage(): unhandled message from pulsesink1
[verbose] ofGstUtils: gstHandleMessage(): async done
[verbose] ofGstUtils: gstHandleMessage(): end of the stream
[verbose] ofGstUtils: gstHandleMessage(): unhandled message from app_sink
[verbose] ofGstUtils: gstHandleMessage(): unhandled message from pulsesink1
[verbose] ofGstUtils: gstHandleMessage(): async done
[verbose] ofGstUtils: gstHandleMessage(): end of the stream
[verbose] ofGstUtils: gstHandleMessage(): unhandled message from app_sink
[verbose] ofGstUtils: gstHandleMessage(): unhandled message from pulsesink1
[verbose] ofGstUtils: gstHandleMessage(): async done
[verbose] ofGstUtils: gstHandleMessage(): end of the stream
[verbose] ofGstUtils: gstHandleMessage(): unhandled message from app_sink
[verbose] ofGstUtils: gstHandleMessage(): unhandled message from pulsesink1
[verbose] ofGstUtils: gstHandleMessage(): async done
[verbose] ofGstUtils: gstHandleMessage(): unhandled message from src
[verbose] ofGstUtils: gstHandleMessage(): unhandled message from src
[verbose] ofGstUtils: gstHandleMessage(): unhandled message from src_0
[verbose] ofGstUtils: gstHandleMessage(): unhandled message from src_1
[verbose] ofGstUtils: gstHandleMessage(): unhandled message from sink
[verbose] ofGstUtils: gstHandleMessage(): unhandled message from sink
[verbose] ofGstUtils: gstHandleMessage(): unhandled message from src

@yutatoga
Copy link
Author

The error "error loading asset tracks: Cannot Open" was printed in 188 line of ofAVFoundationVideoPlayer.m
NSLog(@"error loading asset tracks: %@", [error localizedDescription]);

So I added the codes below to check more detail of the error

NSLog(@"error1: %@", error);
NSString *errorString = [[[error userInfo] objectForKey:NSUnderlyingErrorKey] localizedDescription];
NSLog(@"error2: %@", errorString);

then these are printed out on the console

error1: Error Domain=AVFoundationErrorDomain Code=-11829 "Cannot Open" UserInfo={NSLocalizedFailureReason=This media may be damaged., NSLocalizedDescription=Cannot Open, NSURL=../../../data/movies/testMovie_2017-05-15-16-24-23-541.mov -- file:///Users/yuta-toga/Programs/of/of_v0.9.8_osx_release/apps/myApps/makimono/bin/makimonoDebug.app/Contents/Resources/, NSUnderlyingError=0x600000050aa0 {Error Domain=NSOSStatusErrorDomain Code=-12848 "(null)"}}
error2: The operation couldn’t be completed. (OSStatus error -12848.)

I'm still trying to find out the problem but just shared the error messages for now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants