-
Notifications
You must be signed in to change notification settings - Fork 10
Muxing Refactor and FFmpeg Verification #82
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
Conversation
| "@loader_path/../Resources/" | ||
| "@loader_path/../Resources/third_party/iamftools/lib/" | ||
| "@loader_path/../Resources/third_party/obr/lib/" | ||
| "@loader_path/../Resources/third_party/gpac/lib/" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I found this change that will be required for releasing with a new dylib. But I know I must be missing some other updates for the change from archive to shared lib. I'll look around some more.
|
BrandenAvalonCx
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A few minor cleanup things, overall this looks fine.
One thing I was thinking about is if it's worth having a flag that forces the FFMPEG tests even when FFMPEG is not present. We would use this in the CI/CD only, just to prevent the tests from silently failing if our FFMPEG fetch suddenly stopped working. Thoughts?
| std::string errStr = "IAMF Muxing: Failed to load audio file: " + | ||
| inputAudioFile.toStdString(); | ||
| LOG_ERROR(0, errStr); | ||
| LOG_ERROR(0, "IAMF Audio Muxing: Failed to load audio file."); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's output information here about the file it's failing to load
| GF_ISOFile* src_video = | ||
| gf_isom_open(inputVideoFile.toRawUTF8(), GF_ISOM_OPEN_READ, NULL); | ||
| if (!src_video) { | ||
| LOG_ERROR(0, "Video Muxing: Failed to open input video file."); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's output information here about the file it's failing to open
| GF_ISOFile* dst_file = | ||
| gf_isom_open(outputMuxedFile.toRawUTF8(), GF_ISOM_OPEN_EDIT, NULL); | ||
| if (!dst_file) { | ||
| LOG_ERROR(0, "Video Muxing: Failed to open output file for editing."); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As above
Description
The old GPAC API usage was sometimes silently corrupting output muxed video files. This seems to have been somewhat dependent on the shape of the input IAMF files.
Although the GPAC CLI uses identical filters as the API here, it split muxing into 2 stages: writing IAMF to the MP4 container via a filter session, then copying video frames to the MP4 container via lower level ISO media APIs. This PR replicates that flow in the API usage. This resolves NAL errors in output MP4s.
Changes
ffprobeto better verify output muxed files..mp4and.movcontainers with H264, H265, and AV1 encoded video streams.Validation and Acceptance Criteria