Discussion:
[FFmpeg-user] How to open avfoundation via C
Jeroen Ooms
2018-10-08 23:03:46 UTC
Permalink
I would like to capture the screen in MacOS. This works via the command line:

Command line: ffmpeg -f avfoundation -i "1" -pix_fmt yuv420p -r 25
-t 5 out.mov

However I can't figure out how to do this in C. I tried the following,
but it gives an error "Device selection unsupported.".

AVBufferRef *capture;
AVDictionary *opts = NULL;
av_dict_set(&opts, "video_device_index", "1", 0);
av_dict_set(&opts, "audio_device_index", "none", 0);
av_hwdevice_ctx_create(&capture, AV_HWDEVICE_TYPE_VIDEOTOOLBOX,
"avfoundation", opts, 0);
_______________________________________________
ffmpeg-user mailing list
ffmpeg-***@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
ffmpeg-user-***@ffmpeg.org with s
Carl Eugen Hoyos
2018-10-09 00:29:04 UTC
Permalink
Post by Jeroen Ooms
Command line: ffmpeg -f avfoundation -i "1" -pix_fmt yuv420p -r 25
-t 5 out.mov
However I can't figure out how to do this in C. I tried the following,
but it gives an error "Device selection unsupported.".
AVBufferRef *capture;
AVDictionary *opts = NULL;
av_dict_set(&opts, "video_device_index", "1", 0);
av_dict_set(&opts, "audio_device_index", "none", 0);
av_hwdevice_ctx_create(&capture, AV_HWDEVICE_TYPE_VIDEOTOOLBOX,
"avfoundation", opts, 0);
From the command line above, avfoundation
is a device / format, not a hwdevice.

Carl Eugen
_______________________________________________
ffmpeg-user mailing list
ffmpeg-***@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
ffmpeg-user-***@ffmpe
Jeroen Ooms
2018-10-09 09:55:35 UTC
Permalink
Post by Carl Eugen Hoyos
Post by Jeroen Ooms
Command line: ffmpeg -f avfoundation -i "1" -pix_fmt yuv420p -r 25
-t 5 out.mov
However I can't figure out how to do this in C. I tried the following,
but it gives an error "Device selection unsupported.".
AVBufferRef *capture;
AVDictionary *opts = NULL;
av_dict_set(&opts, "video_device_index", "1", 0);
av_dict_set(&opts, "audio_device_index", "none", 0);
av_hwdevice_ctx_create(&capture, AV_HWDEVICE_TYPE_VIDEOTOOLBOX,
"avfoundation", opts, 0);
From the command line above, avfoundation
is a device / format, not a hwdevice.
I don't understand, it is listed as a video device in
av_input_video_device_next(). Which API is used to read from such an
input then? I can only find command line examples for avfoundation, it
is unclear to me how to capture the camera/screen in C.
_______________________________________________
ffmpeg-user mailing list
ffmpeg-***@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
ffmpeg-user-r
Jeroen Ooms
2018-10-09 11:14:07 UTC
Permalink
Post by Jeroen Ooms
Post by Carl Eugen Hoyos
Post by Jeroen Ooms
Command line: ffmpeg -f avfoundation -i "1" -pix_fmt yuv420p -r 25
-t 5 out.mov
However I can't figure out how to do this in C. I tried the following,
but it gives an error "Device selection unsupported.".
AVBufferRef *capture;
AVDictionary *opts = NULL;
av_dict_set(&opts, "video_device_index", "1", 0);
av_dict_set(&opts, "audio_device_index", "none", 0);
av_hwdevice_ctx_create(&capture, AV_HWDEVICE_TYPE_VIDEOTOOLBOX,
"avfoundation", opts, 0);
From the command line above, avfoundation
is a device / format, not a hwdevice.
I don't understand, it is listed as a video device in
av_input_video_device_next(). Which API is used to read from such an
input then? I can only find command line examples for avfoundation, it
is unclear to me how to capture the camera/screen in C.
Talking to myself here, but I figured it out sort of. After calling
avdevice_register_all() the "avfoundation" device will magically
appear as a regular demuxer format:

avdevice_register_all();
AVInputFormat *input = av_find_input_format("avfoundation");
AVFormatContext *demuxer = NULL;
avformat_open_input(&demuxer, "1", input, NULL)
_______________________________________________
ffmpeg-user mailing list
ffmpeg-***@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
ffmpeg-user-***@ffmpeg.org with subject "unsubscr

Loading...