Could we specify the codec used for decoding? #1600
Replies: 9 comments 1 reply
-
PS. I know that you yourself are not using |
Beta Was this translation helpful? Give feedback.
-
@hmaarrfk did you ever figure this out? I am trying to solve the same problem. |
Beta Was this translation helpful? Give feedback.
-
the question for me is how to specify a good API for this. I think a good start would be get to a point wherey ou can compile PyAV yourself, and suggest a patch. |
Beta Was this translation helpful? Give feedback.
-
Oh ok. That's not my problem then. I am just trying to get PyAV to use NVIDIA CUDA hardware decoding but can't find any recent examples of how to do it. |
Beta Was this translation helpful? Give feedback.
-
yes, this is what i was trying to do. you need to likely ask ffmpeg to do. I don't think it is being done, you can likely force the The question from a library perspective, is how do you do this nicely? MP4 is a container, you don't know what the codec is until you open it. you don't know if your hardware decoder can handle it until you read the metadata (think super tiny image). |
Beta Was this translation helpful? Give feedback.
-
mind you, your ffmpeg must have been compiled with nvenc support, not sure how you are installing PyAV, but not all ffmpeg's are built equal ;) |
Beta Was this translation helpful? Give feedback.
-
Oh - I'm definitely working with a special ffmpeg build that supports cuda. If I pass the same options to PyAV it ignores them. This CLI works: ffmpeg -hwaccel cuvid -c:v h264_cuvid -an -rtsp_transport tcp -i rtsp://[host]:554/stream1 -f null - This Python doesn't: source = av.open('rtsp://[host]:554/stream1', options={'rtsp_transport': 'tcp', 'hwaccel': 'cuvid', 'video_codec': 'h264_cuvid'}, metadata_encoding='utf-8') Am I doing it wrong? |
Beta Was this translation helpful? Give feedback.
-
this is probably best for a discussion. start one. and ping me there. please discuss how you installed both |
Beta Was this translation helpful? Give feedback.
-
what would happen if i have both ffmpeg from /usr/bin/ffmpeg and ffmpeg from conda? |
Beta Was this translation helpful? Give feedback.
-
PyAV/av/container/input.pyx
Line 73 in ee5c40e
It would be great if we could have a way to override this default.
For example, on my machine, I have:
and it would be awesome to be able to change the one that is used at runtime for performance optimization based on the user's hardware.
For example there seems to be the
find_decoder_by_name
functionhttps://ffmpeg.org/doxygen/7.0/group__lavc__core.html#gad4e08a758f3560006145db074d16cb47
I'm not sure if you have a good idea for how to do this, but it would be great if it could be done! Thanks!
Beta Was this translation helpful? Give feedback.
All reactions