со вчерашнего дня я пытался реализовать ffmpeg через Xabe-Wrapper в моем C # -Проекте.
Я использовал FFMpeg => FFProbe, чтобы получить данные формата и потока в виде json-строки из некоторых фильмов. Это JSON, который я получил для потоков.
"{
"streams": [
{"codec_name": "mpeg4", "codec_type": "video"},
{"codec_name": "mp3" , "codec_type": "audio"}
]
}"
Следуйте, что Newtonsoft Wiki , я десериализовал его как DataSet. Я начал играть и нашел способ сделать это в «oneliner».
Streams = (JsonConvert.DeserializeObject<DataSet>(StreamProbeJSON,
JSerializerSettings)).Tables["streams"].AsEnumerable().Select(value => new
FormatAVInfo.SInfo(value.Field<string>("codec_type"), value.Field<string>
("codec_name")));
Для формата я получаю этот Json
{
"format": {
"format_name": "avi",
"probe_score": 100
}
}
Следуйте за тем, что Newtonsoft Wiki , я десериализовал этот словарь как словарь, но я не умел снова делать это в oneliner. Это не большая проблема, но я хотел бы узнать, как мне этого добиться?
Я пробовал это
Format = (JsonConvert.DeserializeObject<Dictionary<string,
Dictionary<string, string>>>(FormatProbeJSON, JSerializerSettings))
["format"].Select(value => new FormatAVInfo.FInfo(value["format_name"],
value["probe_score"]));
Но, конечно, я получаю KeyValuePair и не могу использовать индексатор для этого. Я также пытался с JObject, с тем же результатом. Конечно, я мог бы просто сделать еще одно поле
Dictionary<string,string> Temp =
(JsonConvert.DeserializeObject<Dictionary<string,
Dictionary<string, string>>>(FormatProbeJSON, JSerializerSettings))
["format"]
И потом приводить в пример, но мне любопытно, есть ли способ сделать это.
Спасибо